啥都不说,直接上码!!
/*1602LCD驱动文件*/
#include<reg51.h>
#define uchar unsigned char
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
//HD44780µÄ
/*
011Êä³öBF
111Êä³ö¶ÁÊý¾Ý £¿£¿£¿£¿£¿£¿£¿£¿
001->0 дָÁî
101->0 дÊý¾Ý
*/
void delay(int x){ //ÑÓʱ
int i;
while(x--) for(i=0;i<120;i++);
}
char Busy(){ //忙碌
char a=0;
RS=0,RW=1,EN=1;
if(P0&0x80==0x80) a=1;
EN=0;
return a;
}
void W_CMD(uchar cmd){
while(Busy());
RS=0,RW=0,EN=0;
P0=cmd;
EN=1,delay(1),EN=0;
}
void W_DATA(uchar dat){
while(Busy()); //等待忙碌
RS=1,RW=0,EN=0;
P0=dat;
EN=1,delay(1),EN=0; //下降沿写入
}
void Show_str(uchar x,uchar y,uchar *s){
int i=0;
if(y==0) W_CMD(0x80 | x); //第一行第一个位置,显示起始地址
if(y==1) W_CMD(0xc0 | x); //第二行第一个位置,显示起始地址
for(i=0;i<16;i++) W_DATA(s[i]);
}
void Init_LCD(){
W_CMD(0x38); //定义5X7点阵
W_CMD(0x01); //清屏并光标复位
W_CMD(0x06); //文字不动,光标向右移动
W_CMD(0x0c); //显示功能开
}
void main(){
Init_LCD();
Show_str(0,0,"QQ:2360173984 "); //第一行显示
Show_str(0,1,"Phone:1358xx055"); //第二行显示
while(1); //保持这种状态
}