你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教下,关于 lcd屏横屏显示坐标计算的问题?

[复制链接]
hpdell 提问时间:2017-4-12 11:09 /
请教下,关于 lcd屏横屏显示坐标计算的问题?

目前竖屏显示是没有,包括竖屏180度显示

#define LTDC_PIX_SIZE   2   // 使用 rgb565 数据格式

uint32_t     index ;
uint16_t    g_LcdWidth  , g_LcdHeight  ;

g_LcdWidth  = 800;         // 这个值固定不变
g_LcdHeight  = 1280;      // 这个值固定不变

  index = (LTDC_PIX_SIZE * (uint32_t)(Ypos * g_LcdWidth + Xpos));  // 竖屏 ok
  index = (LTDC_PIX_SIZE * (uint32_t)((g_LcdHeight - Ypos - 1) * g_LcdWidth + (g_LcdWidth - Xpos - 1)));   // 180°竖屏 ok


index = (LTDC_PIX_SIZE * (uint32_t)Xpos * g_LcdHeight + g_LcdWidth  - Ypos - 1);    // 目前这个显示比较乱

index = (LTDC_PIX_SIZE * (uint32_t) g_LcdWidth * (g_LcdHeight - Xpos) + Ypos);   // 这个横屏显示 貌似 y 显示的坐标不够,比如本来是y=4,显示却成了2或者3

收藏 1 评论5 发布时间:2017-4-12 11:09

举报

5个回答
Mandelbrot_Set 回答时间:2017-4-12 16:56:28
目测括弧少了一对        
hpdell 回答时间:2017-4-12 22:29:43
本帖最后由 hpdell 于 2017-4-12 22:32 编辑

终于搞定了啊

#define   LCD_PIXEL_WIDTH    800#define   LCD_PIXEL_HEIGHT   1280
/*
函数功能:计数显示字符的地址
函数名称:BSP_LCD_PutPixelAddr
返回值:  返回计算后的字符地址数据
*/
uint32_t  BSP_LCD_PutPixelAddr(uint16_t Xpos, uint16_t Ypos)
{
        uint32_t index = 0;  

        if (g_LcdDirection == 0)                      // 竖屏 横屏 ( HE070IA_04F 型号屏默认显示方向为竖屏)
        {
                index = (LTDC_PIX_SIZE * (uint32_t)(Ypos * LCD_PIXEL_WIDTH + Xpos));  // 竖屏 ok
        }
        else if (g_LcdDirection == 1)          // 横屏
        {
                index = (LTDC_PIX_SIZE * (uint32_t)(Xpos * LCD_PIXEL_WIDTH  + (LCD_PIXEL_WIDTH - Ypos - 1)));     // 横屏 ok
        }
        else if (g_LcdDirection == 2)          // 竖屏180°
        {
                index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Ypos - 1) * LCD_PIXEL_WIDTH + (LCD_PIXEL_WIDTH - Xpos - 1)));   // 180°竖屏 ok
        }
        else if (g_LcdDirection == 3)          // 横屏180°
        {
                index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Xpos - 1) * LCD_PIXEL_WIDTH  + Ypos));     // 180°横屏 ok
        }         
  return index;
}


不知道为什么,不管是横屏还是竖屏,都必须得 * LCD_PIXEL_WIDTH ,也就是800 ???????????

这款屏默认是 800*1280的分辨率,意思也就是默认为竖屏显示的,是不是跟这个情况有关啦 ?????????

zero99 回答时间:2017-5-2 09:10:54
hpdell 发表于 2017-4-12 22:29
终于搞定了啊

#define   LCD_PIXEL_WIDTH    800#define   LCD_PIXEL_HEIGHT   1280

楼主最后两个问题找到原因了吗
hpdell 回答时间:2017-5-2 09:39:04
zero99 发表于 2017-5-2 09:10
楼主最后两个问题找到原因了吗

找到原因了,

原因是 我的 屏 本来就是 800(rgb) * 1280的,所以不管是横屏还是竖屏,都必须 需要 * 800才可以的

如果是 1280(rgb) * 800 ,那么横竖屏显示时,地址计算就需要 *1280

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

zero99 回答时间:2017-5-3 14:10:20
hpdell 发表于 2017-5-2 09:39
找到原因了,

原因是 我的 屏 本来就是 800(rgb) * 1280的,所以不管是横屏还是竖屏,都必须 需要 * 800 ...

谢谢分享~

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版