
请教下,关于 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 |
终于搞定了啊
#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的分辨率,意思也就是默认为竖屏显示的,是不是跟这个情况有关啦 ?????????
楼主最后两个问题找到原因了吗
找到原因了,
原因是 我的 屏 本来就是 800(rgb) * 1280的,所以不管是横屏还是竖屏,都必须 需要 * 800才可以的
如果是 1280(rgb) * 800 ,那么横竖屏显示时,地址计算就需要 *1280
评分
查看全部评分
谢谢分享~