51单片机从TFT彩屏上读取某一点颜色的函数方法
答案:2 悬赏:60
解决时间 2021-01-07 21:58
- 提问者网友:山高云阔
- 2021-01-07 01:58
51单片机从TFT彩屏上读取某一点颜色的函数方法
最佳答案
- 二级知识专家网友:雾月
- 2021-01-07 03:27
这和TFT液晶屏型号有关,还和你采用何种接线方式有关
如以下是ILI9341控制的单片机读方法,它采用16位数据线,所以一次读出16位,一个点本来要读3次,但时序要求读4次
R = *(__IO uint16_t *)Bank1_LCD_D 实际上就是 给液晶屏一个读信号,然后单片机从总线上获得数据,这是STM32单片机以8088总线的时序操作方式,因此只是一条指令,由于51单片机是8位数据线,因此这一句要分好多语句才能完成
uint16_t LCD_RD_data(void) //连续读4次
{
uint16_t R=0, G=0, B=0 ;
R = *(__IO uint16_t *)Bank1_LCD_D;
R = *(__IO uint16_t *)Bank1_LCD_D;
B = *(__IO uint16_t *)Bank1_LCD_D;
G = *(__IO uint16_t *)Bank1_LCD_D;
return (((R>>11)<<11) | ((G>>10)<<5) | (B>>11));
}
uint16_t LCD_GetPoint(uint16_t x , uint16_t y)//完整的读程序
{
uint16_t temp;
LCD_SetCursor(x, y);
LCD_ILI9341_CMD(0x2e);
temp=LCD_RD_data();
return (temp);
}
如以下是ILI9341控制的单片机读方法,它采用16位数据线,所以一次读出16位,一个点本来要读3次,但时序要求读4次
R = *(__IO uint16_t *)Bank1_LCD_D 实际上就是 给液晶屏一个读信号,然后单片机从总线上获得数据,这是STM32单片机以8088总线的时序操作方式,因此只是一条指令,由于51单片机是8位数据线,因此这一句要分好多语句才能完成
uint16_t LCD_RD_data(void) //连续读4次
{
uint16_t R=0, G=0, B=0 ;
R = *(__IO uint16_t *)Bank1_LCD_D;
R = *(__IO uint16_t *)Bank1_LCD_D;
B = *(__IO uint16_t *)Bank1_LCD_D;
G = *(__IO uint16_t *)Bank1_LCD_D;
return (((R>>11)<<11) | ((G>>10)<<5) | (B>>11));
}
uint16_t LCD_GetPoint(uint16_t x , uint16_t y)//完整的读程序
{
uint16_t temp;
LCD_SetCursor(x, y);
LCD_ILI9341_CMD(0x2e);
temp=LCD_RD_data();
return (temp);
}
全部回答
- 1楼网友:渡鹤影
- 2021-01-07 04:51
显示屏既然可以写数据 也可以读数据
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯