刚接触LCD显示的问题..对LCD1602的忙检测不是很理解..看一些相关的例子这部分的程序基本都是这样写的
uchar LCD_Check_Busy(void)
{
LCD_DATA=0xFF; //LCD_DATA 为P0口.接LCD的D0~D7 ??这里为什么要给赋一个FF呢.?
LCD_RS=0; //LCD_RS 对应接LCD的RS
LCD_RW=1; //LCD_RW对接到LCD的R/W
LCD_E=0; //LCD_E对应接到LCD的使能端E
LCD_Delay(5);
LCD_E=1;
while(LCD_DATA & 0x80);//这里LCD_DATA不是等于刚刚赋值的0xFF么?
return(LCD_DATA); //我查了很多资料,人家说赋值后会从LCD里读出新的值,但是读值的时候要在E的下降沿才能读啊..
}
以上是我的两个疑问..谁可以给我解答一下么?若能再介绍一下相关的.更加感谢!~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
答:这句我也不知道为什么这样写。
while(LCD_DATA & 0x80);//这里LCD_DATA不是等于刚刚赋值的0xFF么
答:这句的意思是当LCD_DATA的最高位等于1时就不停的等待,只有等于0时才跳到下一步。而LCD_DATA的最高位就是忙状态字即STA7,STA7=1表示忙,0表示空闲
return(LCD_DATA); //我查了很多资料,人家说赋值后会从LCD里读出新的值,但是读值的时候要在E的下降沿才能读啊..
答:我查了一下资料,确实是E的下降沿才读的,这个我也不明白。
另附一程序
uchar BUSY_CHECK()
{
uchar lcd_status;
RS=0;
RW=1;
EN=1;
delayms(1);
lcd_status=P0;
EN=0;
return lcd_status;
}
小弟新手,欢迎指教
一周热门 更多>