关于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不是各占据八位吗???这是怎么处理的???我没有看懂。麻烦解答一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。