#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P2
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
void check_busy(void);
void write_command(uchar com);
void write_data(uchar dat);
void string(uchar ad,uchar*s);
void lcd_initial(void);
void delay(uint);
void main(void)
{
lcd_initial();
while(1)
{
string(0x85,"welcome");
string(0xC2,"zhangye GANSU");
delay(100);
write_command(0x01);
delay(100);
}
}
void delay(uint k) //ÑÓʱ1ms
{
uint m,n;
for(m=k;m>0;m--)
for(n=110;n>0;n--);
}
void check_busy(void)
{
uchar dt;
do
{
dt=0xff;
out=dt;
E=0;
RS=0;
RW=1;
E=1;
dt=out;
}while(dt&0x80);
E=0;
}
void write_command(uchar com) //дÃüÁÊý
{
check_busy();
E=0;
RS=0;
RW=0;
out=com;
E=1;
nop;
E=0;
delay(1);
}
void write_data(uchar dat) //дÊý¾Ýº¯Êý
{
check_busy();
E=0;
RS=1;
RW=0;
out=dat;
E=1;
nop;
E=0;
delay(1);
}
void LCD_initial(void) //Òº¾§ÏÔʾÆ÷³õʼ»¯º¯Êý
{
write_command(0x38);
write_command(0x0C);
write_command(0x07);
write_command(0x01);
delay(1);
}
void string(uchar ad,uchar *s) //Êä³öÏÔʾ×Ö·û´®µÄº¯Êý
{
write_command(ad);
while(*s>0)
{
write_data(*s++);
delay(100);
}
}
第一行首地址是 0x80 第二行首地址是0xc0 你只写了第一行