做了个单片机最小系统温度传感器加各种扩展电路,解决了这个又遇到那个问题,这次是1602的液晶不能正常显示,程序我觉得没问题,别人的程序我也烧写了,不过,还是不能正常显示,这是为什么呢??液晶应该是好的,我去借别人的1602也不能显示,电路这么简单我觉得也应该没问题啊,液晶应该不用加上拉电阻吧,反正我没加。。我是学生刚接触单片机,菜鸟级别,本来不想劳烦各位大神的,可自己捣鼓半天还是这样,实属无奈啊,望各位大神不吝赐教。。。送上电路图,pcb文件和程序代码。。急!!!好人好报,好人好运。。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P1^1;
sbit rw=P1^2;
sbit e=P1^3;
uchar table1[]={"i.love.you"};
uchar table2[]={"you.are.great!"};
void delay_50us(uint t) //50us延时函数
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay_50ms(uint t) //延时50ms函数
{
uchar j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
void write_com(uchar com )
{
rs=0;
rw=0;
e=0;
P0=com;
delay_50us(10);
e=1;
delay_50us(10);
e=0;
}
void write_date(uchar dat)
{
rs=1;
rw=0;
e=0;
P0=dat;
delay_50us(10);
e=1;
delay_50us(10);
e=0;
}
void init(void)
{
delay_50us(300);
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
}
void main()
{
uchar j;
init();
write_com(0x80);
for(j=0;j<16;j--)
{
write_date(table1[j]);
delay_50us(20);
}
write_com(0x80+0x40);
for(j=0;j<16;j--)
{
write_date(table2[j]);
delay_50us(20);
}
while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看你的这2个图片
lcd是好的
这种情况我以前也遇到过
原因是lcd的那3个控制引脚接错了
一周热门 更多>