lcd编程中显示的全是乱码啊 5555 求指教
时间:10-02
整理:3721RD
点击:
#include<reg51.h>
sbit lcden=P2^7;
#define lcd P0
sbit rw=P2^5;
sbit rs=P2^6;
#define uint unsigned int
#define uchar unsigned char
void delay(z);
uchar i;
void write_com(com);
void write_date(date);
void init();
uchar code yi[14]="12345678901234";
uchar code er[13]="1234567890123";
void main()
{
init();
write_com(0x80);
for(i=0;i<14;i++)
{
write_date(yi[14]);
delay(5);
}
write_com(0x80+0x40);
for(i=0;i<13;i++)
{
write_date(er[13]);
delay(5);
}
while(1);
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void write_com(uchar com)
{
rs=0;
rw=0;
lcd=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
rs=1;
rw=0;
lcd=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
sbit lcden=P2^7;
#define lcd P0
sbit rw=P2^5;
sbit rs=P2^6;
#define uint unsigned int
#define uchar unsigned char
void delay(z);
uchar i;
void write_com(com);
void write_date(date);
void init();
uchar code yi[14]="12345678901234";
uchar code er[13]="1234567890123";
void main()
{
init();
write_com(0x80);
for(i=0;i<14;i++)
{
write_date(yi[14]);
delay(5);
}
write_com(0x80+0x40);
for(i=0;i<13;i++)
{
write_date(er[13]);
delay(5);
}
while(1);
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void write_com(uchar com)
{
rs=0;
rw=0;
lcd=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
rs=1;
rw=0;
lcd=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
看例程吧,就像你做题不会对标准答案一样。而且目测,谁会记这些啊
看看是不是主函数里的两个for循环有问题,如下;
改为 for(i=0;i<14;i++)
{
write_date(yi[i]);
delay(5);
}试试,另一个for循环也是如此。
显示屏驱动写了吗?
我觉得你没写错,是不是 你的1602 插口的位置和你定义的 不一样
最好检查一下 数据线是不是P0,驱动是不是P^2~P^7