//以总线方式实现8051与1602的通信
//这个程序主要实现功能是向1602发送一串字符串,并显示出来
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define LCDDDATA XBYTE[0xffff] //读数据地址
#define LCDXDATA XBYTE[0xfdff] //写数据地址
#define LCDDCOM XBYTE[0xfeff] //读命令
#define LCDXCOM XBYTE[0xfcff] //写命令
uchar idata s_GOOD[5]={'W','D','J','X',0x00};
uchar idata s_GOOD1[]={'2','0','1','6','-','0','7','-','2','2',0x00};
sbit bflag=ACC^7;
void wait(void)
{
do{ACC=LCDDCOM;}while(bflag==1);
}
void init_lcd(void)
{
LCDXCOM=0x38; //设置模式
wait();
LCDXCOM=0x0f; //显示开关及光标设置
wait();
LCDXCOM=0x06; //显示开关及光标设置
wait();
LCDXCOM=0x01; //清屏
wait();
}
void d_char(uchar a) //写入数据函数
{
LCDXDATA=a;
wait();
}
void display(uchar x ,uchar idata *s) //显示函数 第一个变量是地址比如 0x80或0x80+0x40 第二个是数据
{
uchar i=0;
LCDXCOM=x;
wait();
while(s[i]!=0x00)
{
d_char(s[i]);
i++;
}
}
void main(void)
{
init_lcd();
display(0x80+0x01,s_GOOD);
display(0x80+0x40,s_GOOD1);
while(1);
}