最近学习在LCD显示上设定时间,需要在LCD1602上读指定位置的字符,在网上很少有用到读字符的,试写了一个,在LCD1602上成功读出。
//------------------------------------------------------------------------------
//读LCD数据,读前先定位到要读取的位置
//------------------------------------------------------------------------------
INT8U Read_LCD_Data(void)
{
INT8U Hi=0,Lo=0;
LCD_BUSY_WAIT(); //遇忙等待
TRIS_LCD_DAT=0xf0; //高4位设为输入,准备读数据。因为是4线所以只设置了高4位为输入
RW=1;RS=1;E=1;NOP();
Hi=PORT_LCD_DAT&0xf0;E=0;NOP(); //读高4位,4线,所以分2次读,先读高4位,后读低4位
E=1;NOP();Lo=PORT_LCD_DAT&0xf0;E=0; //读低4位
return Hi|Lo>>4; //返回值
}