LCD1602读忙检测的问题~?

2020-01-27 11:28发布

刚接触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的下降沿才能读啊..
}
以上是我的两个疑问..谁可以给我解答一下么?若能再介绍一下相关的.更加感谢!~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
shudexin
2020-01-28 16:19
P0口作为I/O时, 系统自动关闭内部的上拉场效应管,内部多路开关使得内部锁存器的负Q端与下拉场效应管接通, 因此,当P0口作为输入口使用时,应先向口地址写入1,使得内部内部负Q端输出低电平,以截至下拉场效应管,保证外部高电平能够输入到P0引脚上,从而程序能读到外部器件输出的高电平. 这就是为什么要读1602的状态需先输出0FF的原因. 不仅P0口,所有其它3个口,在作为输入口使用时,都应先输出1(可以在程序初始化部分设置一次,只要那个口不是交替做为输入和输出口就可以).

一周热门 更多>