u16 LCD_ReadPoint(u16 x,u16 y)
{
vu16 r=0,g=0,b=0;
if(x>=lcddev.width||y>=lcddev.height)return 0; //超过了范围,直接返回
LCD_SetCursor(x,y);
if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310)LCD_WR_REG(0X2E);
//9341/6804/3510 发送读 GRAM 指令
else if(lcddev.id==0X5510)LCD_WR_REG(0X2E00); //5510 发送读 GRAM 指令
else LCD_WR_REG(R34); //其他 IC 发送读 GRAM 指令
if(lcddev.id==0X9320)opt_delay(2); //FOR 9320,延时 2us
LCD_RD_DATA(); //dummy Read
opt_delay(2);
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 需要公式转换一下
else return LCD_BGR2RGB(r); //其他 IC
}
两次加红的地方能不能解释一下,在数据手册上怎么查都查不到,自己也想不通,还请大神指导。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
想想通的话,直接发email给ILI公司
一周热门 更多>