OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3282|回复: 0

TFTLCD 设置LCD的自动扫描方向代码不解

[复制链接]

4

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-2-27
在线时间
25 小时
发表于 2020-12-16 15:22:38 | 显示全部楼层 |阅读模式
        if(lcddev.id==0x9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963)//9341/6804/5310/5510/1963,特殊处理
        {
                switch(dir)
                {
                        case L2R_U2D://从左到右,从上到下
                                regval|=(0<<7)|(0<<6)|(0<<5);
                                break;
                        case L2R_D2U://从左到右,从下到上
                                regval|=(1<<7)|(0<<6)|(0<<5);
                                break;
                        case R2L_U2D://从右到左,从上到下
                                regval|=(0<<7)|(1<<6)|(0<<5);
                                break;
                        case R2L_D2U://从右到左,从下到上
                                regval|=(1<<7)|(1<<6)|(0<<5);
                                break;         
                        case U2D_L2R://从上到下,从左到右
                                regval|=(0<<7)|(0<<6)|(1<<5);
                                break;
                        case U2D_R2L://从上到下,从右到左
                                regval|=(0<<7)|(1<<6)|(1<<5);
                                break;
                        case D2U_L2R://从下到上,从左到右
                                regval|=(1<<7)|(0<<6)|(1<<5);
                                break;
                        case D2U_R2L://从下到上,从右到左
                                regval|=(1<<7)|(1<<6)|(1<<5);
                                break;         
                }
                if(lcddev.id==0X5510)dirreg=0X3600;
                else dirreg=0X36;
                if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963不需要BGR           /*这段话执行完毕之后,regval=0x0F,但是设置MY MX MV,不应该是0xE0吗?*/
                if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了          
                LCD_WriteReg(dirreg,regval);
                if(lcddev.id!=0X1963)//1963不做坐标处理     /*因为lcddev.id=0x9341,所以要执行下面的内容,可是为什么要执行下面的内容呢?(交换X,Y)*/
                {
                        if(regval&0X20)
                        {
                                if(lcddev.width<lcddev.height)//交换X,Y
                                {
                                        temp=lcddev.width;
                                        lcddev.width=lcddev.height;
                                        lcddev.height=temp;
                                }
                        }else  
                        {
                                if(lcddev.width>lcddev.height)//交换X,Y
                                {
                                        temp=lcddev.width;
                                        lcddev.width=lcddev.height;
                                        lcddev.height=temp;
                                }
                        }  
                }
                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);
                }else
                {
                        LCD_WR_REG(lcddev.setxcmd);
                        LCD_WR_DATA(0);LCD_WR_DATA(0);
                        LCD_WR_DATA((lcddev.width-1)>>8);LCD_WR_DATA((lcddev.width-1)&0XFF);
                        LCD_WR_REG(lcddev.setycmd);
                        LCD_WR_DATA(0);LCD_WR_DATA(0);
                        LCD_WR_DATA((lcddev.height-1)>>8);LCD_WR_DATA((lcddev.height-1)&0XFF);    这一整段代码的意义是什么?
                }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 19:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表