STM32F4TFTLCD显示实验:疑问:横屏竖屏显示原理

2019-07-21 01:12发布

原子大哥和各位大神,我在分析原子大哥的TFTLCD显示实验的代码时,有些疑问,麻烦大家帮忙解答一下,谢谢~
我用的是4.3寸的TFTLCD,原子哥的代码我一点都没改,
我先做的实验,就是LCD_Display_Dir(0); //默认为竖屏的时候,
一步步运行代码,发现此时lcddev.width=480,lcddev.height=800,此时扫描方向为从左到右,从上到下
改为LCD_Display_Dir(1); //默认为横屏的时候,
一步步运行代码,发现此时lcddev.width=800,lcddev.height=480,此时扫描方向为从下到上,从左到右
如下图所示:


我现在的疑问是:
1。扫描方向怎么和lcddev.width(x坐标),lcddev.height(y坐标)配合呢?
  lcddev.width=480,lcddev.height=800的时候,为什么就知道x坐标轴是480这个方向,y坐标轴就是800这个方向???
lcddev.width=800,lcddev.height=480的时候,为什么就知道x坐标轴是800这个方向,y坐标轴就是480这个方向???
虽然程序中是有设置x坐标起点与终点、y坐标起点与终点,程序如下,但是LCD是怎么知道横屏与竖屏的x坐标轴与y坐标轴要换呢?
if(lcddev.id==0X5510)
{
LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(0); 
LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(0); 
LCD_WR_REG(lcddev.setxcmd+2);LCD_WR_DATA((lcddev.width-1)>>8); 
LCD_WR_REG(lcddev.setxcmd+3);LCD_WR_DATA((lcddev.width-1)&0XFF); 
LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(0); 
LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(0); 
LCD_WR_REG(lcddev.setycmd+2);LCD_WR_DATA((lcddev.height-1)>>8); 
LCD_WR_REG(lcddev.setycmd+3);LCD_WR_DATA((lcddev.height-1)&0XFF);
}
2、我改为LCD_Display_Dir(1); //默认为横屏的时候,我发现这个显示效果有点不太自然,实在想不明白是为什么??
附件是我拍的视频
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 06:50
1,这是我根据硬件特点(点填充方向,也就是所谓的扫描方式),来编写代码的,自然能套上.
2,现象正常.
shblh
2楼-- · 2019-07-21 12:28
回复【2楼】正点原子:
---------------------------------
1、原子大哥,那你看我的理解是不是对的
    在竖屏的情况下,扫描方式是从左往右,从上到下扫描方式,那么设置好起始坐标(通过 SC设置x坐标 ,SP 设置y坐标)和终点坐标(通过 EC设置x坐标 ,EP 设置y坐标)后, GRAM地址自动指向屏幕的左上角,每写入 一个颜 {MOD}值, GRAM地址将会自动增1(SC++),如果碰到 EC ,则回到 SC ,同时 SP++,一 直到坐标 EC ,EP 结束。 
    在横屏的情况下,扫描方式是从下到上,从左往右扫描方式,那么设置好起始坐标(通过 SC设置x坐标 ,SP 设置y坐标)和终点坐标(通过 EC设置x坐标 ,EP 设置y坐标)后, GRAM地址自动指向屏幕的左下角,每写入 一个颜 {MOD}值, GRAM地址将会自动增1(SC++),如果碰到 EC ,则回到 SC ,同时 SP++,一 直到坐标 EC ,EP 结束。
2、原子大哥,可我看LCD_Display_Dir(0); //默认为竖屏的时候,屏幕的颜 {MOD}在切换时,不会有一种屏幕对角线有一条直线的错觉啊?
可改为LCD_Display_Dir(1); //改为横屏的时候,屏幕的颜 {MOD}在切换时,会有一种屏幕对角线有一条直线的错觉
shblh
3楼-- · 2019-07-21 17:58
回复【2楼】正点原子:
---------------------------------
1、原子大哥,那你看我的理解是不是对的 
    在竖屏的情况下,扫描方式是从左往右,从上到下扫描方式,那么设置好起始坐标(通过 SC设置x坐标 ,SP 设置y坐标)和终点坐标(通过 EC设置x坐标 ,EP 设置y坐标)后, GRAM地址自动指向屏幕的左上角,每写入 一个颜 {MOD}值, GRAM地址将会自动增1(SC++),如果碰到 EC ,则回到 SC ,同时 SP++,一 直到坐标 EC ,EP 结束。  
    在横屏的情况下,扫描方式是从下到上,从左往右扫描方式,那么设置好起始坐标(通过 SC设置x坐标 ,SP 设置y坐标)和终点坐标(通过 EC设置x坐标 ,EP 设置y坐标)后, GRAM地址自动指向屏幕的左下角,每写入 一个颜 {MOD}值, GRAM地址将会自动增1(SC++),如果碰到 EC ,则回到 SC ,同时 SP++,一 直到坐标 EC ,EP 结束。 
2、原子大哥,可我看LCD_Display_Dir(0); //默认为竖屏的时候,屏幕的颜 {MOD}在切换时,不会有一种屏幕对角线有一条直线的错觉啊? 
可改为LCD_Display_Dir(1); //改为横屏的时候,屏幕的颜 {MOD}在切换时,会有一种屏幕对角线有一条直线的错觉
shblh
4楼-- · 2019-07-21 20:59
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 21:13
 精彩回答 2  元偷偷看……
shblh
6楼-- · 2019-07-22 02:48
回复【6楼】正点原子:
---------------------------------
原子大哥,我2楼,3楼的内容您帮我看看我的理解是不是对的啊?

一周热门 更多>