LCD求助
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE YOU!";
sbit RS_lcd1602=P2^6;
sbit E_lcd1602=P2^7;
sbit WR_lcd1602=P2^5;
void init();
void delay(uchar msx);
void write_1602com(uchar com);
void write_1602dat(uchar dat);
uchar num;
void delay(uchar msx)
{
uchar j,i;
for(j=msx;j<0;j--)
for(i=110;i<0;i--);
}
void write_1602com(uchar com)
{
RS_lcd1602=0;
WR_lcd1602=0;
P0=com;
delay(1);
E_lcd1602=1;
delay(1);
E_lcd1602=0;
}
void write_1602dat(uchar dat)
{
RS_lcd1602=1;
WR_lcd1602=0;
P0=dat;
delay(1);
E_lcd1602=1;
delay(1);
E_lcd1602=0;
}
void init()
{
write_1602com(0x38);
delay(1);
write_1602com(0x0c);
delay(1);
write_1602com(0x06);
delay(1);
write_1602com(0x01);
delay(1);
}
void main()
{
init();
write_1602com(0x80);
for(num=0;num>11;num++)
{
write_1602dat(table[num]);
delay(10);
}
while(1);
}
程序如上。用的是普中科技HC6800的板子,LCD显示不出来啊!
KEIL编译通过,也能下载到板子去,LCD就是没反应
背光显示部分有木有加个电位器啊
1 先用电压表检测下 LCD 电压管脚是否正常。
2 再看自己程序中液晶的初始化 是否按照正常的时序进行的,主要是对得上单片机指令周期。
3 LCD是否是损坏了?貌似1602是比较容易烧坏的。
程序写错了
“for(num=0;num>11;num++)”
改成"for(num=0;num<11;num++)"
楼上改动的程序才写错了
我觉得还是你的板子有文题 按照楼上的介意检查检查你自己的板子吧
先要保证硬件没问题
貌似有两个问题 一个就是
“for(num=0;num>11;num++)”
改成"for(num=0;num<11;num++)"
还有一个就是写指令 写数据是的时序有一点点问题,都要加上void write_1602com(uchar com)
{
RS_lcd1602=0;
WR_lcd1602=0;
P0=com;
delay(1);
E_lcd1602=1;
delay(1);
E_lcd1602=0;
}
void write_1602com(uchar com)
{
RS_lcd1602=0;
WR_lcd1602=0;
E—lcd1602=0; P0=com;
delay(1);
E_lcd1602=1;
delay(1);
E_lcd1602=0;
}
解决问题的步骤:
1 检查硬件,确保硬件没有问题。
2 如果觉得硬件没有问题,那么下载原厂的程序,如果能运行,至少说明硬件没事或者损坏不严重。
3 测试自己的程序。如果不能运行,则检查之。首先检查初始化部分,一句一句地查。
如果没有原厂程序,好吧,自己对照说明书慢慢的来。如果连说明书都没有,那……
我靠 你的延时函数会不会写啊 全是小于零 这个错完了 应该是都是大于零 你的循环都错了 自己好好补补基础吧!