你用的什么单片机?可能是IO口方向的问题。在输出命令或数据后要将IO口转为输入才能检测到忙信号。<br /><br />这是我写的PIC的部份代码:<br /><br />//LCD1602接线引脚定义<br />#define LCD_RS RA0 //LCD数据/命令寄存器选择。<br />#define LCD_RW RA1 //LCD读/写。<br />#define LCD_EN RA2 //LCD使能。<br />#define LCD_DATA PORTC //MCU数据口。<br />#define LCD_IODIR TRISC //MCU数据口方向控制寄存器。<br />#define LCD_BUSY RC7 //LCD忙信号。<br /><br />//检测忙标志。<br />void LCD_CheckBusy(void) //检测LCD忙标志,等待内部操作完成。<br />{<br /> LCD_RS=LOW;<br /> LCD_RW=HIGH;<br /> LCD_EN=HIGH;<br /> LCD_IODIR=IN;<br /> while(LCD_BUSY==HIGH);<br /> LCD_EN=LOW;<br />}<br />//发送一条命令。<br />void LCD_SendCommand(unsigned char command)<br />{<br /> LCD_CheckBusy();<br /> LCD_RS=LOW;<br /> LCD_RW=LOW;<br /> LCD_EN=HIGH;<br /> LCD_IODIR=OUT;<br /> LCD_DATA=command;<br /> LCD_EN=LOW;<br />}<br />//发送一字节数据。<br />void LCD_SendData(unsigned char dat)<br />{<br /> LCD_CheckBusy();<br /> LCD_RS=HIGH;<br /> LCD_RW=LOW;<br /> LCD_EN=HIGH;<br /> LCD_IODIR=OUT;<br /> LCD_DATA=dat;<br /> LCD_EN=LOW;<br />}
|