我编的lcd1602显示不正常,在单片机硬板上显示正常,但是在proteus仿真里只显示20,不显示万年历里其他的

2024-12-20 19:00:37
推荐回答(2个)
回答1:

根据你所说的,你的程序在硬件上可以正常显示,那么仿真应该就不会有问题,所以应该可以排除程序的问题,可能是在protues上搭建的电路有问题吧,尤其是DS1302部分,建议你仔细查看一下。
--- 希望对你有所帮助。。。

回答2:

!祝你早日完成*/
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^6;//使能端
sbit lcdrs=P2^4;//数据命令端
sbit lcdrw=P2^5;//读写选择端
uchar SecondLine[]=" 自己写东西进来,如:NBA ";//他们两个用于液晶显示的数组
uchar FirstLine[]=" 同上 ";
void delay(uchar z)
{ uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xsj(uchar sj)
{
lcden=0;
lcdrs=1;
lcdrw=0;
P0=sj;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void dw(uchar dz)
{
lcden=0;
lcdrs=0;
lcdrw=0;
P0=dz;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
/*液晶显示的准备*/
dw(0x38);
dw(0x0c);
dw(0x06);
dw(0x14);
dw(0x01);
}
main()
{uchar num;
init();
dw(0x80);
for(num=0;num<16;num++)
{ xsj(FirstLine[num]);//写入第一行字
delay(5);
}
dw(0x80+0x40);
for(num=0;num<16;num++)
{ xsj(SecondLine[num]);
delay(5);
}

}