标题:
仿真时LCD1602的检测读忙信号
[打印本页]
作者:
Narcissus101
时间:
2025-9-13 18:37
标题:
仿真时LCD1602的检测读忙信号
仿真时LCD1602_E的电平一直跳,是因为一直在执行do while循环?所以一直都是忙的状态吗,这还怎么显示啊
mmexport1757759658700.png
(97 KB, 下载次数: 0)
下载附件
2025-9-13 18:35 上传
作者:
songxia8013
时间:
2025-9-14 08:34
Lcd1602不检测忙状态也是可以的。
#define LCD_DATA P0 //液晶看数据口定义
sbit LCD_RS=P3^2; //LCD1602数据/命令选择引脚,H:数据,L:命令
sbit LCD_RW=P3^3; //LCD1602读写引脚,H:数据寄存器,L:指令寄存器
sbit LCD_EN=P3^4; //LCD1602使能引脚,下降沿触发
void Delay(uint i) //延时函数
{
while(i--);
}
void Delay_MS(uint z) //z*1MS延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Lcd_W_Com(uchar com) //液晶写指令函数
{
LCD_RS=0;
LCD_RW=0;
LCD_DATA=com;
Delay(20);
LCD_EN=1;
Delay(20);
LCD_EN=0;
}
void Lcd_W_Dat(uchar dat) //液晶写数据函数
{
LCD_RS=1;
LCD_RW=0;
LCD_DATA=dat;
Delay(20);
LCD_EN=1;
Delay(20);
LCD_EN=0;
}
void Lcd_Show_Str(uchar hang,add,uchar *p)//液晶写字符串函数
{
if(hang==1) //液晶第一行
Lcd_W_Com(0x80+add);
else //液晶第二行
Lcd_W_Com(0x80+0x40+add);
while(1)
{
if(*p=='\0')
break;
Lcd_W_Dat(*p); //写入数据
p++;
}
}
void Lcd_Init() //液晶初始化
{
Lcd_W_Com(0x38); //数据总线为8位,显示2行,5x7点阵
Lcd_W_Com(0x0c); //开显示,有光标,光标闪烁
Lcd_W_Com(0x06); //光标自动右移
Delay(1000); //等待设置完成
}
作者:
man1234567
时间:
2025-9-14 10:53
实际使用仅显示时不需要这个读忙,注释掉就可以。
作者:
rundstedt
时间:
2025-9-14 15:59
很可能是仿真模型不完备,忽略这个信号试试。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1