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

请教下,关于 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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版