欢迎来到天天文库
浏览记录
ID:57436026
大小:49.92 KB
页数:11页
时间:2020-08-15
《c语言LcD动态显示技术.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//实例84:液晶时钟设计#include//包含单片机寄存器的头文件#include//包含随机函数rand()的定义文件#include//包含_nop_()函数定义的头文件sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚sbitk0=P1^0;sbitk1=P1^1;sbitk2=
2、P1^2;sbitk3=P1^3;sbitk4=P1^4;sbitk5=P1^5;sbitk6=P1^6;sbitk7=P1^7;sbitk8=P2^6;sbitk9=P2^7;unsignedchartable_1[9]={0x00,0x00,0x3A,0x00,0x00,0x3A,0x00,0x00,0x00};//定义字符数组显示数字unsignedcharcount;//定义变量统计中断累计次数unsignedchars,m,h;//定义变量储存秒、分钟和小时/*********************************************
3、********函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n************************************
4、***************/voiddelay(unsignedcharn){unsignedchari;if(k9==0)n=n/2;for(i=0;i5、itresult;RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1;//E=1,才允许读写_nop_();//空操作_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间result=BF;//将忙碌标志电平赋给resultE=0;//将E恢复低电平returnresult;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate**********************6、*****************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,//就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();//空操作两个机器周期,给硬件反应时间P0=dictate;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_7、nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}/********************************************函数功能:转换******************************************************************************/voidCovhms(){table_1[0]=h/10+0x38、0;table_1[1]=h%10+0x30;tab
5、itresult;RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1;//E=1,才允许读写_nop_();//空操作_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间result=BF;//将忙碌标志电平赋给resultE=0;//将E恢复低电平returnresult;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate**********************
6、*****************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,//就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();//空操作两个机器周期,给硬件反应时间P0=dictate;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_
7、nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}/********************************************函数功能:转换******************************************************************************/voidCovhms(){table_1[0]=h/10+0x3
8、0;table_1[1]=h%10+0x30;tab
此文档下载收益归作者所有