关于TFTLCD液晶显示

2019-07-21 00:56发布

r=LCD_RD_DATA();     //实际坐标颜 {MOD}
  if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510) //9341/NT35310/NT35510要分2次读出
  {
opt_delay(2);  
b=LCD_RD_DATA(); 
g=r&0XFF; //对于9341/5310/5510,第一次读取的是RG的值,R在前,G在后,各占8位
g<<=8;

if(lcddev.id==0X9325||lcddev.id==0X4535||lcddev.id==0X4531||lcddev.id==0XB505||lcddev.id==0XC505)return r; //这几种IC直接返回颜 {MOD}值
else if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510)return (((r>>11)<<11)|((g>>10)<<5)|(b>>11));//ILI9341/NT35310/NT35510需要公式转


原子哥,这段代码最后一行我没有读懂啊。   return (((r>>11)<<11)|((g>>10)<<5)|(b>>11))   这一句怎么来的???
假设g=r&0xff   不就是g=r吗???    在转换的时候,假设r的十六位为15.1413.12.11.10.9.8.7.6.5.4.3.2.1.0先处理成了15.14.13.12.11.0.0.0.0.0.0.0.0.0.0.0
然后处理成了15.14.13.12.11.15.14.13.12.11.0.0.0.0.0.0     就是到这里我不明白了,RG不是各占据八位吗???这是怎么处理的???我没有看懂。麻烦解答一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
WZTENG
1楼-- · 2019-07-21 05:10
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-21 05:52
楼主需要仔细.
冷枫漠然
3楼-- · 2019-07-21 07:58
 精彩回答 2  元偷偷看……
冷枫漠然
4楼-- · 2019-07-21 08:56
回复【2楼】WZTENG:
---------------------------------
抱歉抱歉,我想错了,现在懂了。我把十六进制转二进制计算错了。非常抱歉。麻烦您了、
冷枫漠然
5楼-- · 2019-07-21 14:46
回复【3楼】正点原子:
---------------------------------
对对,现在明白了。

一周热门 更多>