求助关于1602液晶显示异常的问题
时间:10-02
整理:3721RD
点击:
本人新手,求大神解救。附上所编程序,以及液晶显示状况,求帮助。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P1^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
lcdrw=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
void main()
{
init();
write_data('a');
while(1);
}
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P1^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
lcdrw=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
void main()
{
init();
write_data('a');
while(1);
}
在写数据前,要先确定是在哪个位置上写。
你应该封装一个显示函数。
void lcd_dispchar(uchar x, uchar y, uchar a)
{
if(y == 1) //在第一行显示
x = 0x80 + x;
else if(y == 2) //在第二行显示
x = 0xc0 + x;
else
return;
lcd_wcom(x);
lcd_wdat(a);
}
lcdrw=0; 这个最好放入在写数据和写命令语句里面。自己在看下时序图,调试下,应该可以的。
我也是新手,感觉可能是开发板上的跳线帽没接好。
出现这种情况一般是硬件电路没有连接好,比如是p0口没接上拉电阻
应该先写命令 再写数据
先定位再写数据
没什么问题,应该是别的地方有问题吧
好吧,多谢各位有爱的亲们帮助。我是按照郭天祥老师视频上的讲解插的液晶,后来发现我买的实验板和他的不太一样,应该把液晶插到实验板的外面才对。