#include#define uint unsigned int#define uchar unsigned char/*******引脚定义*******/ sbit RS= P1^0; sbit RW= P1^1; sbit E= P1^2;#define data1602 P0 sbit BF= data1602^7;//BF表示data1602的最高位,判断是忙还是闲/*******延时函数*******/voiddelay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******忙检测函数*******/ bitLCD_busy(){ bit busy; P0=0xff;//防止干扰 RS=0;//命令模式 RW=1;//读模式 E=1; busy= BF;//将忙标志位的数值赋给busy E=0;return busy;}/*******写命令函数*******/voidLCD_write_cmd(uchar cmd)//cmd为需要写的命令{while(LCD_busy());//只有当LCD_busy()为0(闲)时才跳出循环 RS=0;//命令模式 RW=0;//写模式 data1602= cmd;//将命令内容的十六进制送到P0端口 E=1; E=0;//使能端,高电平有效,使命令送到LCD1602的DB0~DB7}/*******写数据函数*******/voidLCD_write_data(uchar dat)//dat为需要写的数据{while(LCD_busy());//只有当LCD_busy()为0(闲)时才跳出循环 RS=1;//数据模式 RW=0;//写模式 data1602= dat;//将数据内容的十六进制送到P0端口 E=1; E=0;//使能端,高电平有效,使命令送到LCD1602的DB0~DB7}/*******LCD初始化函数*******/voidLCD_init(){LCD_write_cmd(0x38);//将设置“两行、八位数据、5*7的点阵”命令写入LCD的控制器LCD_write_cmd(0x0c);//开显示关光标LCD_write_cmd(0x06);//光标右移指令LCD_write_cmd(0x01);//清除显示}/*******