基于ds1302和lcd1602的数字电子钟的设计内容摘要:

//E 置高电平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=0。 //当 E 由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能:指定字符显示的实际地址 入口参数: x ***************************************************/ void WriteAddress(uchar x) { WriteInstruction(x|0x80)。 //显示位置的确定方法规定为 80H+地 址码 x } /***************************************************** 函数功能:将数据 (字符的标准 ASCII 码 )写入液晶模块 入口参数: y(为字符常量 ) ***************************************************/ void WriteData(uchar y) { while(BusyTest()==1)。 RS=1。 //RS 为高电平, RW 为低电平时,可以写入 数据 RW=0。 E=0。 //E 置低电平 (根据表 86,写指令时, E 为高脉冲, // 就是让 E 从 0 到 1 发生正跳变,所以应先置 0 P0=y。 //将数据送入 P0 口,即将数据写入液晶模块 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=1。 //E 置高电平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=0。 //当 E 由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能:对 LCD 的显示模式进行初始化设置 ***************************************************/ void LcdInitiate(void) { delaynms(15)。 //延时 15ms,首次写指令时应给 LCD 一段较长的反应时间 WriteInstruction(0x38)。 //显示模式设置: 16 2 显示, 5 7 点阵, 8 位数据接口 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 WriteInstruction(0x38)。 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 WriteInstruction(0x38)。 //连续三次,确保初始化成功 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 WriteInstruction(0x0c)。 //显示模式设置:显示开,无光标,光标不闪烁 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 WriteInstruction(0x06)。 //显示模式设置:光标右移,字符不移 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 WriteInstruction(0x01)。 //清屏幕指令,将以前的显示内容清除 delaynms(5)。 //延时 5ms ,给硬件一点反应时间 } /************************************************************** 以下是 1302 数据的显示程序 **************************************************************/ /***************************************************** 函数功能:显示秒 入口参数: x ***************************************************/ void DisplaySecond(uchar x) { uchar i,j。 //j,k,l 分别储存温度的百位、十位和个位 i=x/10。 //取十位 j=x%10。 //取个位 WriteAddress(0x49)。 //写显示地址 ,将在第 2 行第 7 列开始显示 WriteData(digit[i])。 //将百位数字的字符常量写入 LCD WriteData(digit[j])。 //将十位数字的字符常量写入 LCD delaynms(50)。 //延时 1ms 给硬件一点反应时间 } /***************************************************** 函数功能:显示分钟 入口参数: x ***************************************************/ void DisplayMinute(uchar x) { uchar i,j。 //j,k,l 分别储存温度的百位、十位和个位 i=x/10。 //取十位 j=x%10。 //取个位 WriteAddress(0x46)。 //写显示地址 ,将在第 2 行第 7 列开始显示 WriteData(digit[i])。 //将百位数字的字符常量写入 LCD WriteData(digit[j])。 //将十位数字的字符常量写。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。