//*****************************************************************/*程序功能:显示两行字符并且整屏左移 (程序使用在接口为4位的1602液晶)涉及芯片:1602液晶显示器*///*****************************************************************#includereg52.h>#define uint unsigned int#define uchar unsigned charsbit rs=P2^0;//数据/命令选择端(H/L)sbit rw=P2^1;//读/写选择端(H/L)sbit en=P2^2; //使能选择端uchar code mingzi[]="Gui fa zhi !_! "; //定义数据mingzi【】 uchar code num[]="tel:18778434282 "; //定义数组num【】void delay(uint time)//延时函数(运行的时间与晶振有关系){uint i,j;for(i=time;i>0;i--)for(j=110;j>0;j--);}void write_com(uchar mingling)//命令输入函数{uchar gao,di; //定义高、低四位gao=mingling0xf0;//分出高四位di=(mingling4)0xf0;//分出低四位//==========================================读走高四位P2=gao;//让数据(mingling)高四位有效rs=0;//rs端为低电平时,为接收命令 delay(5);en=1; //en一个高脉冲读走高四位数据(mingling)delay(5);en=0;//把使能端拉回低电平//============================================读走低四位delay(5); P2=di;//让数据(mingling)低四位有效rs=0;//rs端为低电平时,为接收命令delay(5);en=1 ;//en一个高电平读走低四位命令(mingling)delay(5);en=0;//把使能端拉回低电平}void write_date(uchar shuju)//数据输入函数{uchar gao,di;gao=shuju0xf0;//分出高四位di=(shuju4)0xf0;//分出低四位//=======================================读走高四位P2=gao;//让数据(shuju)高四位有效rs=1;//rs端为高电平时,为接收数据delay(5);en=1;//en一个高电平读走低四位数据 (shuju)delay(5);en=0;//把使能端拉回低电平//============================================读走低四位delay(5);P2=di;//让数据(shuju)低四位有效rs=1;//rs端为高电平时,为接收数据delay(5);en=1;//en一个高电平读走低四位数据(shuju)delay(5);en=0;//把使能端拉回低电平}void chushihua(){rw=0;//把数据/命令选择端先置为零en=0;//把使能端先置为零write_com(0x28);//设置16*12显示,5*7点阵,4位数据接口write_com(0x01);//清屏write_com(0x0c);//显示开启,不显示光标write_com(0x06);//整屏不移动}void main()//主函数{uint i,j; chushihua();//对液晶初始化while(1)//死循环{write_com(0x80);for(i=0;i16;i++){write_date(mingzi[i]);}write_com(0x80+0x40);for(j=0;j16;j++){write_date(num[j]);}write_com(0x18);//写控制字,在英文文档里介绍。0x18为左移,0x1c为右移}}
评论