打印

求助:lcd1602一直处于忙状态

[复制链接]
4229|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duanhan|  楼主 | 2008-6-7 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写入读忙标志指令后,一直处于忙状态。请问可能由哪些原因造成的。
我用的单片机io口电压为3.3v,这也有关系不?

谢谢!

相关帖子

沙发
eiyouwei| | 2008-6-7 17:05 | 只看该作者

如果硬件没有问题,一定是程序的问题了。认真检查程序看

使用特权

评论回复
板凳
delong_z| | 2008-6-14 12:18 | 只看该作者

注意单片机 IO 口方向

你用的什么单片机?可能是IO口方向的问题。在输出命令或数据后要将IO口转为输入才能检测到忙信号。

这是我写的PIC的部份代码:

//LCD1602接线引脚定义
#define    LCD_RS        RA0        //LCD数据/命令寄存器选择。
#define    LCD_RW        RA1        //LCD读/写。
#define    LCD_EN        RA2        //LCD使能。
#define    LCD_DATA    PORTC    //MCU数据口。
#define    LCD_IODIR    TRISC    //MCU数据口方向控制寄存器。
#define    LCD_BUSY    RC7        //LCD忙信号。

//检测忙标志。
void LCD_CheckBusy(void)    //检测LCD忙标志,等待内部操作完成。
{
    LCD_RS=LOW;
    LCD_RW=HIGH;
    LCD_EN=HIGH;
    LCD_IODIR=IN;
    while(LCD_BUSY==HIGH);
    LCD_EN=LOW;
}
//发送一条命令。
void LCD_SendCommand(unsigned char command)
{
    LCD_CheckBusy();
    LCD_RS=LOW;
    LCD_RW=LOW;
    LCD_EN=HIGH;
    LCD_IODIR=OUT;
    LCD_DATA=command;
    LCD_EN=LOW;
}
//发送一字节数据。
void LCD_SendData(unsigned char dat)
{
    LCD_CheckBusy();
    LCD_RS=HIGH;
    LCD_RW=LOW;
    LCD_EN=HIGH;
    LCD_IODIR=OUT;
    LCD_DATA=dat;
    LCD_EN=LOW;
}

使用特权

评论回复
地板
dayu111| | 2010-12-3 11:46 | 只看该作者
关于LCD忙信号检测一直很迷茫。难道它自己会变,为什么只要不断的检测那个端口就行呢

使用特权

评论回复
5
beandy| | 2011-1-15 19:48 | 只看该作者
我也遇到同样的问题了

使用特权

评论回复
6
xia9628| | 2015-3-27 22:58 | 只看该作者
在检查忙状态前延时一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

1

粉丝