关于LCD12864问题
时间:10-02
整理:3721RD
点击:
各位单片机大大,我在做lcd实验的时候,硬件都链接好了,背光也亮了,但是就是不知道为什么不显示任何东西,求指导!程序放在下面:
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
uchar code dis[]={"我爱单片机"};
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^4;
sbit psb=P3^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=110;y>0;y++);
}
void write_com(uchar com)
{
rs=0;
rw=0;
e=0;
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
void write_dat(uchar dat)
{
rs=1;
rw=0;
e=0;
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
void init()
{
psb=1;
write_com(0x30);
delay(5);
write_com(0x0f);
delay(5);
write_com(0x01);
delay(5);
}
void main()
{
init();
write_com(0x80);
for(i=0;i<7;i++)
{
write_dat(dis[i]);
delay(10);
}
while(1);
}
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
uchar code dis[]={"我爱单片机"};
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^4;
sbit psb=P3^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=110;y>0;y++);
}
void write_com(uchar com)
{
rs=0;
rw=0;
e=0;
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
void write_dat(uchar dat)
{
rs=1;
rw=0;
e=0;
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
void init()
{
psb=1;
write_com(0x30);
delay(5);
write_com(0x0f);
delay(5);
write_com(0x01);
delay(5);
}
void main()
{
init();
write_com(0x80);
for(i=0;i<7;i++)
{
write_dat(dis[i]);
delay(10);
}
while(1);
}
还是请路过的人虚心的看看!希望能指导指导!
不知道,这是你上网查资料自己写的还是?
问题已经解决了,都是自己粗心大意出了点小问题:现在总结下,其实就是延时函数出问题了。
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++) \\这里写错了,应该是for(x=z;x>0;x--)
for(y=110;y>0;y++);\\这里写错了,应该是for(y=110;y>0;y--);
}
很感谢,问题已经解决了,程序是参照别人的写的,只不过是自己粗心,把延时函数写错了,导致程序无限延时下去了!
谢谢分享!
客气了,共同学习!