欢迎来到天天文库
浏览记录
ID:41696132
大小:33.00 KB
页数:3页
时间:2019-08-30
《LCD12864显示程序资料》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。/**********************************************************程序说明:LCD12864显示主程序程序调试员:莫剑辉调试时间:2010-6-7**********************************************************/#include#include"12864.c"voidmain(){Ini_Lcd();//液晶初始化子程序Disp(1,0,6,"莫
2、剑辉");//显示数据到LCD12864子程序while(1);}这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。/**********************************************************程序说明:LCD12864显示头文件程序调试员:莫剑辉调试时间:2010-6-7**********************************************************///#include#defineucharunsigned
3、char#defineuintunsignedint#defineDATAP2//数据输出端0~7sbitRS=P0^0;//LCD12864RS端sbitRW=P0^1;//LCD12864RW端sbitE=P0^2;//LCD12864E端sbitPSB=P0^3;/*********************************************延时子程序*********************************************/voidDelay_1ms(uintx){uintj,i;for(j=0;j4、for(i=0;i<120;i++);//延时X乘以120}}/*********************************************LCD12864液晶测忙子程序(读状态)*********************************************/voidBusy(){ucharbusy;do{E=0;//0为关闭使能端,1为打开使能端RS=0;//1为指令,0为数据RW=1;//1为读,0为写Delay_1ms(20);//延时20乘以120时间E=1;//0为关闭使能端,1为打开使能端busy=P1;//读取5、P2状态Delay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端}while(busy&0x80);//判断BUSY位是否工作:1为内部在工作,0为正常状态}/*********************************************LCD12864液晶数据写入子程序*********************************************/voidWrite_Data(uchark){Busy();//测忙E=1;//0为关闭使能端,1为打开使能端RS=1;//1为指令,0为数6、据RW=0;//1为读,0为写DATA=k;//输入数据K到DATADelay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端Delay_1ms(20);//延时20乘以120时间}/*********************************************LCD12864液晶命令写入子程序*********************************************/voidWrite_Cmd(ucharcmd){Busy();//测忙E=1;//0为关闭使能端,1为打开使能端RS=7、0;//1为指令,0为数据RW=0;//1为读,0为写DATA=cmd;//输入命令cmd到DATADelay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端Delay_1ms(20);//延时20乘以120时间}/*********************************************LCD12864液晶数据显示子程序*********************************************/voidDisp(uchary,ucharx,uchari,uchar*z){ucha8、rAddress;if(y==1){Address=0x80+x;}//Y判断第几行,X判断第几列,0x80
4、for(i=0;i<120;i++);//延时X乘以120}}/*********************************************LCD12864液晶测忙子程序(读状态)*********************************************/voidBusy(){ucharbusy;do{E=0;//0为关闭使能端,1为打开使能端RS=0;//1为指令,0为数据RW=1;//1为读,0为写Delay_1ms(20);//延时20乘以120时间E=1;//0为关闭使能端,1为打开使能端busy=P1;//读取
5、P2状态Delay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端}while(busy&0x80);//判断BUSY位是否工作:1为内部在工作,0为正常状态}/*********************************************LCD12864液晶数据写入子程序*********************************************/voidWrite_Data(uchark){Busy();//测忙E=1;//0为关闭使能端,1为打开使能端RS=1;//1为指令,0为数
6、据RW=0;//1为读,0为写DATA=k;//输入数据K到DATADelay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端Delay_1ms(20);//延时20乘以120时间}/*********************************************LCD12864液晶命令写入子程序*********************************************/voidWrite_Cmd(ucharcmd){Busy();//测忙E=1;//0为关闭使能端,1为打开使能端RS=
7、0;//1为指令,0为数据RW=0;//1为读,0为写DATA=cmd;//输入命令cmd到DATADelay_1ms(20);//延时20乘以120时间E=0;//0为关闭使能端,1为打开使能端Delay_1ms(20);//延时20乘以120时间}/*********************************************LCD12864液晶数据显示子程序*********************************************/voidDisp(uchary,ucharx,uchari,uchar*z){ucha
8、rAddress;if(y==1){Address=0x80+x;}//Y判断第几行,X判断第几列,0x80
此文档下载收益归作者所有