/*************利用lcd1602在第1行第1列显示‘A’************ **********P0接D0~D7,P2.0 P2.1 P2.2分别接RS,RW,E.******/ #include "reg52.h" //宏定义,变量定义// #define Uchar unsigned char #define Uint unsigned int #define DataPort P0 #define Busy 0x80 sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; //char code s[]="chen xi"; /**************延迟函数*************************** i代表延迟多ms *******/ void defdelay(Uchar i) {while(i--);} //检测忙函数// /***********写指令函数***************** command表示写入的指令代码*/ write_command(Uchar command) { RS=0;RW=0; P0=command; E=1;defdelay(60);E=0; defdelay(10); P0=0xff; } /**********写数据函数********* lcdata表示写入的数据*/ write_data(Uchar lcddata) { RS=1;RW=0;P0=lcddata; E=1;defdelay(60);E=0; defdelay(10); P0=0xff; } /***********读数据函数********************/ read_data() { Uchar i; RS=1;RW=1;E=1;defdelay(60); i=P0; E=0; defdelay(10); return i; } /*********判断忙*************/ test_busy() { while((read_data()&0x80)==0x80); } //初始化函数// void initial() { E=0; defdelay(15); write_command(0x38); defdelay(5); write_command(0x38); defdelay(5); write_command(0x38); defdelay(5); write_command(0x38); test_busy(); write_command(0x08); test_busy(); write_command(0x01); test_busy(); write_command(0x06); test_busy(); write_command(0x0c); test_busy(); } /*****************主函数*********************/ main() { initial(); //初始化 defdelay(15); write_command(0x80);//指定第1行第1列 test_busy(); defdelay(15); write_data(0x41);//送数据A while(1); }