头文件#ifndef_LCD1602_H#define_LCD1602_H#includereg51.h#defineucharunsignedchar#defineuintunsignedint#defineLCD_DBP2sbitRW=P1^0;sbitRS=P1^1;sbitE=P1^2;voidLCD1602_Init();//LCD初始化函数voidWrite_Command(chardat);//写指令函数voidWrite_Data(chardat);//写数据函数#endif源文件#includeLCD1602.H#includereg51.h//LCD1602初始化函数voidLCD1602_Init(){Write_Command(0x38);//指令6:数据总线8位,显示2行,5*7/字符Write_Command(0x0c);//指令4:显示功能开,无光标,不闪烁Write_Command(0x06);//指令3:输入字符后光标右移,屏幕不动Write_Command(0x80);//指令8:设定下一个存入数据的地址0x80h;}//LCD1602写指令voidWrite_Command(uchardat)//写指令{uchari=0;E=1;LCD_DB=dat;RW=0;RS=0;E=0;for(i=0;i10;i++);//LCD1602接收到数据后需要一定的处理时间,经测试大约在10us级}//LCD1602写数据voidWrite_Data(uchardat)//写数据{uchari=0;E=1;LCD_DB=dat;RW=0;RS=1;E=0;for(;i10;i++);}例程:#includereg51.h#includeLCD1602.hvoidmain(){LCD1602_Init();Write_Data('I');Write_Data('');Write_Data('a');Write_Data('m');Write_Data('');Write_Data('^');Write_Data('_');Write_Data('^');while(1);}仿真结果: