请问为什么我的这个关于 LCD1602的程序 不能显示呀
时间:10-02
整理:3721RD
点击:
请问为什么我的这个关于 LCD1602的程序 不能显示呀
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_LCD P0
sbit LCDE=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;
unsigned char Puzh[]=" pechin science";
void lcdwritecom(unsigned char);
void lcdwritedata(unsigned char);
void lcdinit();
void delay1ms(uint);
void lcdwritdata(uchar dat)
{
RS=1;
RW=0;
GPIO_LCD=dat;
delay1ms(10);
LCDE=1;
delay1ms(10);
LCDE=0;
}
void lcdwritecom(uchar com)
{
RS=0;
RW=0;
GPIO_LCD=com;
delay1ms(10);
LCDE=1;
delay1ms(10);
LCDE=0;
}
void lcdinit()
{
lcdwritecom(0x38);
lcdwritecom(0x0c);
lcdwritecom(0x06);
lcdwritecom(0x01);
lcdwritecom(0x80);
}
void delay1ms(uint c)
{
int a,b;
for (; c>0; c--)
{
for (b=2;b>0;b--)
{
for(a=10;a>0;a--)
{
};
};
};
}
void main(void)
{
unsigned char i;
lcdinit();
for(i=0;i<16;i++)
{
lcdwritedata('A');
}
while(1);
}
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_LCD P0
sbit LCDE=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;
unsigned char Puzh[]=" pechin science";
void lcdwritecom(unsigned char);
void lcdwritedata(unsigned char);
void lcdinit();
void delay1ms(uint);
void lcdwritdata(uchar dat)
{
RS=1;
RW=0;
GPIO_LCD=dat;
delay1ms(10);
LCDE=1;
delay1ms(10);
LCDE=0;
}
void lcdwritecom(uchar com)
{
RS=0;
RW=0;
GPIO_LCD=com;
delay1ms(10);
LCDE=1;
delay1ms(10);
LCDE=0;
}
void lcdinit()
{
lcdwritecom(0x38);
lcdwritecom(0x0c);
lcdwritecom(0x06);
lcdwritecom(0x01);
lcdwritecom(0x80);
}
void delay1ms(uint c)
{
int a,b;
for (; c>0; c--)
{
for (b=2;b>0;b--)
{
for(a=10;a>0;a--)
{
};
};
};
}
void main(void)
{
unsigned char i;
lcdinit();
for(i=0;i<16;i++)
{
lcdwritedata('A');
}
while(1);
}
初始化有问题。。,建议你找下1602的资料看看,38要写几次,而且你一个延时都没,晕
。。
两个命令之间要有延时的,初始化最好写两次0x38,不然可能只会显示一行
你的命令好像也没放在主函数啊
是不是初始化中没有写归位命令,初始化函数中写上 lcdwritecom(0x02); 试试。
我也是初学者,昨天才看的1602液晶屏
经过我的仔细对比,发现你第一个函数写错了 lcdwritedata 你把e写掉了 写成了 lcdwritdata
和那个没有关系
问题出在初始化的时候,命令之间没有延时程序。、
可是我把他的程序烧在我的单片机上面。只改了那个错误,就可以显示了呀。
这命令之间的延时程序,在命令函数里面不是写了吗。
延时要多用呀