这个程序的目的是显示出welcome Harbin China
我先是使用的查忙程序,但是LCD没有显示
后来用的这个程序没有使用差忙的程序,而是使用的延时函数,但是1602液晶屏还是没有显示,谁知道是怎么回事吗?
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define out P0
sbit RS=P2^0;//将P2口的0,1,2号口作为RS RW E的接口
sbit RW=P2^1;//
sbit E=P2^2;//
void LCD_initialize();//初始化函数
void check_busy();//查忙函数,但是这次没有用到
void write_command(uchar com);//写命令函数
void write_data(uchar dat);//写数据函数
void string(uchar ad,uchar*p,uchar n);//使Lcd显示字符的函数
void delay(uchar i);//延时函数
void main()
{
LCD_initialize();//LCD初始化
while(1)
{
string(0x85,"welcome",7);//写入welcome
string(0xc2,"Harbin China",12);//写入Harbin China
delay(100);
write_command(0x01);//清屏
delay(100);
}
}
void delay(uchar i)//延时函数
{
uchar t;
while(i--)
{
for(t=0;t<120;t++);
}
}
void write_command(uchar com)//写命令函数
{
delay(1);
E=0;
RS=0;
RW=0;
out=com;
delay(1);
E=1;
_nop_();
E=0;
delay(1);
}
void LCD_initialize()//初始化函数
{
write_command(0x38);
_nop_();
write_command(0x0c);
_nop_();
write_command(0x0b);
_nop_();
write_command(0x01);
delay(1);
}
void write_data(uchar dat)//写数据函数
{
delay(1);
E=0;
RS=1;
RW=0;
out=dat;
delay(1);
E=1;
_nop_();
E=0;
delay(1);
}
void string(uchar ad,uchar *p,uchar n)//显示字符函数
{
uchar i;
write_command(ad);
for(i=0;i<n;i++)
{
write_data(*p++);
delay(100);
}
}
|