可编程作息时间控制器设计(DOC 35)_第1页
可编程作息时间控制器设计(DOC 35)_第2页
可编程作息时间控制器设计(DOC 35)_第3页
可编程作息时间控制器设计(DOC 35)_第4页
可编程作息时间控制器设计(DOC 35)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 信息工程学院课程设计 信息工程学院课程设计报告书 题 目: 可编程程作息时时间控制制器设计计 专 业: 电子信信息科学学与技术术 班 级: 学 号: 学生姓姓名 指导教师: 20113 年年 5 月 13日 信息工程学学院课程程设计任任务书学 号学生姓名专业(班级级)设计题目 可编程作作息时间间控制器器设计设计技术参数 0.5v低低电压驱驱动蜂鸣鸣器 5VV外部稳稳压电源源供电 16002LCCD显示示日期和和时间 LEED提示示闹钟到到来设计要求(1)按照照给定的的时间模模拟控制制,实现现广播、上上下课打打铃、灯灯光控制制(屏幕幕显示)。(2)具备备日期和和时钟显显示。工作量 文字报报告字

2、数数大约在在20000字,页页数在220页左左右工作计划 (1)整整体设计计构思(2)查阅阅有关资资料(3)编写写调试程程序(4)画出出电路图图(5)装载载程序,查查看结果果参考资料1单单片机原原理及应应用(第第二版) 张毅刚刚 彭彭喜元 彭宇宇 北京京 高等等教育出出版社2刘和和平. 单片机机编程与与入门.重庆大大学出版版社,220022.688-999,1111-11223陈明明荧. 89CC51单单片机课课程设计计实训教教材.清清华大学学出版社社,20003.38-67,1022-1118指导教师签签字教研室主任任签字 年 月 日日 学生姓名: 学号: 专专业(班班级): 电子子 课程设

3、计题题目: 可编编程作息息时间控控制器设设计 指导教师评评语: 成绩: 指导教师: 年 月 日日信息工程学学院课程程设计成成绩评定定表摘要本设计是可可编程作作息时间间控制器器设计,由由单片机机AT889C551芯片片和LCCD、LLED显显示器,辅辅以必要要的电路路,构成成一个单单片机四四路可调调闹钟。电电子钟可可采用数数字电路路实现,也也可以采采用单片片机来完完成。LLCD显显示“时”,“分”,LEDD亮灯来表示闹闹钟的到到来,定时时时间到能能发出警警报声。现现在是自自动化高高度发达达的时代代,特别别是电子子类产品品都是靠靠内部的的控制电电路来实实现对产产品的控控制,达达到自动动运行的的目的

4、,这这就需要要我们这这里要做做的设计计中的电电器元件件及电路路的支持持。在这次设计计中主要要是用AAT899S511来进行行定时,也也结合着着其他辅辅助电路路实施控控制,在在定时的的时候,按按一下控控制小时时的键对对小时加加一;按按一下控控制分钟钟的键对对分钟加加一;到到达预设设的时间间,此电电路就会会发出报报警声音音提示已已经到点点。关键字:四四路可调调闹钟 AAT899C511 LLCD目 录TOC o 1-2 h u HYPERLINK l _Toc15887 1 任务提提出与方方案论证证 1 任任务提出出与方案案论证 1.1 单单片机型型号的选选择通过对多种种单片机机性能的的分析,最最

5、终认为为AT889C551是最最理想的的电子时时钟开发发芯片。AAT899C511是一种种带4KK字节闪闪烁可编编程可擦擦除只读读存储器器的低电电压,高高性能CCMOSS8位微微处理器器,器件件采用AATMEEL高密密度非易易失存储储器制造造技术制制造,与与工业标标准的MMCS-51指指令集和和输出管管脚相兼兼容。由由于将多多功能88位CPPU和闪闪烁存储储器组合合在单个个芯片中中,ATTMELL的ATT89CC51是是一种高高效微控控制器,而而且它与与MCSS-511兼容,且且具有44K字节节可编程程序存储储器和110000次擦写写循环,数数据保留留时间为为10年年,是最最好的选选择。1.2

6、 按按键的选选择 本本次设计计按照题题目要求求使用独独立式按按键。由由于按键键较少,在在修改时时间或设设置闹铃铃时间时时就不能能直接输输入,只只能通过过加或减减完成,稍稍为麻烦烦一些,但但其程序序简单。 1.3 显显示器的的选择选用16002LCCD液晶晶显示器器。1.4 计计时部分分的选择择如果使用时时钟芯片片,系统统就不怕怕掉电且且时间精精确。但但这种芯芯片比较较贵,况况且,设设计本系系统主要要是为了了学习单单片机程程序的编编写和调调试以及及设计硬硬件电路路的一些些方法,因因此采用用软件的的方法来来计时而而没有采采用价格格较高的的时钟芯芯片。2 总体设设计2.1系统统总框图图2.2原理理及

7、工作作过程说说明制作一个可可编程作作息时间间控制器器闹钟,当当4路闹闹钟中的的任一路路到时,均均会点亮亮灯、打打铃。如如有需求求,可对对程序进进行调整整,增加加闹钟的的路数及及到时后后的处理理方式。定时闹钟的的基本功功能如下下。(1)显示示时钟时时间,格格式为“时时:分分”,并可可重新设设置。(2)显示示闹铃时时间,格格式为“时时:分分”,且显显示闪烁烁以便与与时钟时时间相区区分。闹闹铃时间间可重新新设置。(3)程序序执行后后工作指指示灯LLED闪闪烁,表表示时钟钟工作为为时钟显显示模式式LCCD显示示的初始始时间为为“23:58”。按下下K2,闪闪烁显示示的“00:00”为闹铃铃的时间间,单

8、击击K3又又返回时时钟显示示模式。时时钟从“23:58”开始计计时,定定时时间间“00:00”到时,继继电器开开关接通通,控制制电器的的开启,且且可发出出声响(可可控)。时钟与闹铃铃时问的的设置可可通过44个功能能按键KKlKK4实现现,具体体说明如如下。(1)时钟钟时间的的设置:首先单单击Kll进入时时钟设置置模式。此此时每单单击一下下Kl,则则小时增增l,单单击一下下K2,则则分钟增增1,再再单击KK3则设设置完成成,返回回时钟显显示模式式。此时时小时和和分钟均均已发生生变化。(2)闹铃铃的时间间设置:首先单单击,KK3进入入闹铃的的设置模模式。此此时每单单击一下下Kl,则则小时增增1,单

9、单击一下下K2,则则分钟增增l,最最后单击击K33则设置置完成,返返回闹铃铃显示模模式。此此时闹铃铃的小时时和分钟钟均已发发生变化化。(3) KK4的功功能:闹闹钟更换换。(4) KK2单独独的功能能:显示示闹铃时时间。2.3系统统电路图图3详细设计计3.1主程程序部分分的设计计程序部分主主要采用用了程序序结构的的模块化化设计,避避免了一一些函数数的不必必要的重重复书写写,使程程序变得得单间易易懂。程程序在执执行时,主主程序要要须通过过调用子子函数就就可完成成相应的的功能 。主程程序流程程图如下下图3-1。 图图3-11主程序序流程图图3.2独立立式键盘盘的接口口电路在单片机应应用系统统中,有

10、有时只需需要几个个简单的的按键向向系统输输入信息息。这时时,可将将每个按按键接在在一根II/O接接口线上上,这种种方式的的连接称称为独立立式键盘盘。每个个独立式式按键单单独占有有一根 I/OO接口线线,每根根I/OO接口线线的工作作状态不不 会影影响到其其他 II/O接接口线 。这种种按键接接口电路路配置灵灵活,硬硬件结构构简单,但但每个按按键必须须占用一一根I/O接口口线,II/O接接口线浪浪费较大大。故只只在按键键数量不不多时采采用这种种按键电电路。在在此电路路中,按按键输入入都采用用低电平平有效。闹铃2时间到?定时计数器时间显示日期显示闹铃4时间到?闹铃3时间到?闹铃1时间到?3.3 1

11、16022LCDD液晶显显示器闹铃2时间到?定时计数器时间显示日期显示闹铃4时间到?闹铃3时间到?闹铃1时间到?1602LLCD的的基本参参数及引引脚功能能1602LLCD分分为带背背光和不不带背光光两种,基基控制器器大部分分为HDD447780,带带背光的的比不带带背光的的厚,是是否带背背光在应应用中并并无差别别,两者者尺寸差差别如下下图3-3-11所示:图3-3-116602LLCD尺尺寸图1602LLCD主主要技术术参数:显示容量:162个字字符芯片工作电电压:44.55.55V工作电流:2.00mA(5.00V)模块最佳工工作电压压:5.0V字符尺寸:2.99544.355(WH)mm

12、m引脚功能说说明1602LLCD采采用标准准的144脚(无无背光)或或16脚脚(带背背光)接接口,各各引脚接接口说明明如表33-1所所示:表3-1:引脚接接口说明明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏偏压11D4数据4RS数据/命令令选择12D5数据5R/W读/写选择择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极极8D1数据16BLK背光源负极极第1脚:VVSS为为地电源源。第2脚:VVDD接接5V正正电源。第3脚:VVL为液液晶显示示器对比比度调整整端,接接正电源源时对比比度最弱弱,接地地时对比比度最高高

13、,对比比度过高高时会产产生“鬼鬼影”,使使用时可可以通过过一个110K的的电位器器调整对对比度。第4脚:RRS为寄寄存器选选择,高高电平时时选择数数据寄存存器、低低电平时时选择指指令寄存存器。第5脚:RR/W为为读写信信号线,高高电平时时进行读读操作,低低电平时时进行写写操作。当当RS和和R/WW共同为为低电平平时可以以写入指指令或者者显示地地址,当当RS为为低电平平R/WW为高电电平时可可以读忙忙信号,当当RS为为高电平平R/WW为低电电平时可可以写入入数据。第6脚:EE端为使使能端,当当E端由由高电平平跳变成成低电平平时,液液晶模块块执行命命令。第7144脚:DD0DD7为88位双向向数据

14、线线。第15脚:背光源源正极。第16脚:背光源源负极。108233 16602LLCD的的指令说说明及时时序1602液液晶模块块内部的的控制器器共有111条控控制指令令,如表表3-22所示:表3-2:控制命命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式式00000001I/DS4显示开/关关控制0000001DCB5光标或字符符移位000001S/CR/L*6置功能00001DLNF*7置字符发生生存贮器器地址0001字符发生存存贮器地地址8置数据存贮贮器地址址001显示数据存存贮器地地址9读忙标志或或地址01BF

15、计数器地址址10写数到CGGRAMM或DDDRAMM)10要写的数据据内容11从CGRAAM或DDDRAAM读数数11读出的数据据内容1602液液晶模块块的读写写操作、屏屏幕和光光标的操操作都是是通过指指令编程程来实现现的。(说说明:11为高电电平、00为低电电平)指令1:清清显示,指指令码001H,光标复复位到地地址000H位置置。指令2:光光标复位位,光标标返回到到地址000H。指令3:光光标和显显示模式式设置 I/DD:光标标移动方方向,高高电平右右移,低低电平左左移 SS:屏幕幕上所有有文字是是否左移移或者右右移。高高电平表表示有效效,低电电平则无无效。指令4:显显示开关关控制。 D:

16、控控制整体体显示的的开与关关,高电电平表示示开显示示,低电电平表示示关显示示 C:控制光光标的开开与关,高高电平表表示有光光标,低低电平表表示无光光标 BB:控制制光标是是否闪烁烁,高电电平闪烁烁,低电电平不闪闪烁。指令5:光光标或显显示移位位 S/C:高高电平时时移动显显示的文文字,低低电平时时移动光光标。指令6:功功能设置置命令 DL:高电平平时为44位总线线,低电电平时为为8位总总线 NN:低电电平时为为单行显显示,高高电平时时双行显显示 FF: 低低电平时时显示55x7的的点阵字字符,高高电平时时显示55x100的点阵阵字符。指令7:字字符发生生器RAAM地址址设置。指令8:DDDRA

17、AM地址址设置。指令9:读读忙信号号和光标标地址 BF:为忙标标志位,高高电平表表示忙,此此时模块块不能接接收命令令或者数数据,如如果为低低电平表表示不忙忙。指令10:写数据据。指令11:读数据据。与HD4447800相兼容容的芯片片时序表表如下:表3-3:基本操操作时序序表读状态输入RS=L,RR/W=H,EE=H输出D0D77=状态态字写指令输入RS=L,RR/W=L,DD0DD7=指指令码,EE=高脉脉冲输出无读数据输入RS=H,RR/W=H,EE=H输出D0D77=数据据写数据输入RS=H,RR/W=L,DD0DD7=数数据,EE=高脉脉冲输出无读写操作时时序如图图3-33-2和和3-

18、33-3所所示:图3-3-3 读读操作时时序图3-3-3写操操作时序序1602LLCD的的RAMM地址映映射及标标准字库库表液晶显示模模块是一一个慢显显示器件件,所以以在执行行每条指指令之前前一定要要确认模模块的忙忙标志为为低电平平,表示示不忙,否否则此指指令失效效。要显显示字符符时要先先输入显显示字符符地址,也也就是告告诉模块块在哪里里显示字字符,图图3-33-4是是16002的内内部显示示地址。图3-3-4 116022LCDD内部显显示地址址例如第二行行第一个个字符的的地址是是40HH,那么么是否直直接写入入40HH就可以以将光标标定位在在第二行行第一个个字符的的位置呢呢?这样样不行,因

19、因为写入入显示地地址时要要求最高高位D77恒定为为高电平平1所以以实际写写入的数数据应该该是01100000000B(440H)+1000000000BB(800H)=1100000000BB(C00H)。在对液晶模模块的初初始化中中要先设设置其显显示模式式,在液液晶模块块显示字字符时光光标是自自动右移移的,无无需人工工干预。每每次输入入指令前前都要判判断液晶晶模块是是否处于于忙的状状态。1602液液晶模块块内部的的字符发发生存储储器(CCGROOM)已已经存储储了1660个不不同的点点阵字符符图形,如如图3-3-55所示,这这些字符符有:阿阿拉伯数数字、英英文字母母的大小小写、常常用的符符号

20、、和和日文假假名等,每每一个字字符都有有一个固固定的代代码,比比如大写写的英文文字母“AA”的代代码是00100000001B(441H),显显示时模模块把地地址411H中的的点阵字字符图形形显示出出来,我我们就能能看到字字母“AA”图3-3-5字符符代码与与图形对对应图 16022LCDD的一般般初始化化(复位位)过程程延时15mmS写指令388H(不不检测忙忙信号)延时5mSS写指令388H(不不检测忙忙信号)延时5mSS写指令388H(不不检测忙忙信号)以后每次写写指令、读读/写数数据操作作均需要要检测忙忙信号写指令388H:显显示模式式设置写指令088H:显显示关闭闭写指令011H:显

21、显示清屏屏写指令066H:显显示光标标移动设设置写指令0CCH:显显示开及及光标设设置3.4闹钟钟子函数数闹钟时间的的判别主主要是通通过设定定时间与与实时时时间对逐逐位对比比确定是是否进行行闹铃。其工作流程程图如下下图3-4。YYY闹钟4到?闹钟3到?闹钟1到?闹钟2 到?显示时间和日期YNN闹钟打开 中断YYY闹钟4到?闹钟3到?闹钟1到?闹钟2 到?显示时间和日期YNN闹钟打开 中断NNNN 图33-44总结 通通过自己己的不懈懈努力,我我终于完完成了设计的的任务要要求。功功能上基基本达标标:时钟钟的显示示,日期期显示,调时功能、校时功能、闹铃功能、闹钟设功能。其精确可以满足日常生活显示时

22、间的需要。在本次设计的过程中,我发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编程的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课课程设计计中,我我们真真真正正的的意识到到,在以以后的学学习中,要要理论联联系实际际,把我我们所学学的理论论知识用用到实际际当中,学学习单机机片机更更是如此此

23、,程序序只有在在经常的的练习的的过程中中才能提提高,我我想这就就是我在在这次课课程设计计中的最最大收获获。参考文献1单单片机原原理及应应用(第第二版) 张毅刚刚 彭彭喜元 彭宇宇 北京京 高等等教育出出版社2刘和和平. 单片机机编程与与入门.重庆大大学出版版社,220022.688-999,1111-11223陈明明荧. 89CC51单单片机课课程设计计实训教教材.清清华大学学出版社社,20003.38-67,1022-1118附录#inclludee#defiine uinnt uunsiigneed iint#defiine uchhar unssignned chaarsbit keey

24、1=P10;sbit keey2=P11;sbit keey3=P12;sbit keey4=P13;sbit lccdenn=P334;sbit lccdrss=P335;sbit lccdrww=P336;sbit leed=PP222; sbit sooundd=P227;int aa,b,i,mmin,houur,mmingge,mminsshi,houurgee,hooursshi,secc,seecgee,seecshhi,ccnt,cntt1, niaan=220133,yuue=55,rii=5, amiin1=1,aahouur1,amiingee1,aaminnshii1,

25、aahouurgee1,aahouurshhi1, amiin2=1,aahouur2,amiingee2,aaminnshii2,aahouurgee2,aahouurshhi2, amiin3=1,aahouur3,amiingee3,aaminnshii3,aahouurgee3,aahouurshhi3, amiin4=1,aahouur4,amiingee4,aaminnshii4,aahouurgee4,aahouurshhi4;ucharr coode tabble11=00,1,2,33,4,5,66,7,8,99;ucharr coode tabble22=Tiime:00:

26、00 ;ucharr coode Alaarm_1=AAlarr1:000:000 ;ucharr coode Alaarm_2=AAlarr2:000:000 ;ucharr coode Alaarm_3=AAlarr3:000:000 ;ucharr coode Alaarm_4=AAlarr4:000:000 ;ucharr coode riqqi=220133-055-066 ;ucharr nuum1,numm2,aalarrm1,alaarm22,allarmm3,aalarrm4;bit fflagg=0;void dellay(unssignned intt z)/延延时程序序

27、uintt i,j;for(i=zz;i0;ii-)forr(j=1100;j0;jj-);void wriite_comm(uccharr coom) /LCDD命令控控制,写写指令函函数delaay(55) ;lcdrrs=00;P0=ccom;delaay(55);lcdeen=11;delaay(55);lcdeen=00;void wriite_datta(uuchaar ddatee) /LLCD数数据控制制,写数数据函数数delaay(55);lcdrrs=11;P0=ddatee;delaay(55);lcdeen=11;delaay(55);lcdeen=00;void wr

28、iite_niaan(uuchaar aadd , uuintt daate) /年显显示函数数 uuchaar qqiann,baai,sshi,ge; qqiann=daate/10000; bbai=(daate-10000*qqiann)/1100; sshi=(daate-qiaan*110000-baai*1100)/100; gge=ddatee%100; wwritte_ccom(0 x880+00 x400+addd); wwritte_ddataa(taablee1qqiann); wwritte_ddataa(taablee1bbai); wwritte_ddataa(t

29、aablee1sshi); wwritte_ddataa(taablee1gge); voidd wrritee_yuue(uuchaar aadd , uuchaar ddatee) /月月显示函函数 uchhar shii,gee; sshi=datte/110; gge=ddatee%100; wwritte_ccom(0 x880+00 x400+addd); wwritte_ddataa(0 xx30+shii); wwritte_ddataa(0 xx30+ge); voidd wrritee_rii(uccharr addd , uccharr daate) /日显显示函数数 u

30、ccharr shhi,gge; sshi=datte/110; gge=ddatee%100; wrritee_coom(00 x800+0 xx40+addd); wrritee_daata(0 x330+sshi); wwritte_ddataa(0 xx30+ge); void qi() wrritee_niian(0,nniann); wrritee_yuue(55,yuue); wwritte_rri(88,rii); wwritte_ccom(0 x880+00 x400+7); wriite_datta(-); wrritee_coom(00 x800+0 xx40+4); w

31、writte_ddataa(-); void timme()/设设置时间间函数whille(11)if(keyy1=0) deelayy(100);iff(keey1=0)iif(hhourr=223) /时设置houur=00;eelseehouur+;hhourrge=houur%110;hhourrshii=hoour/10;wwritte_ccom(0 x00f);ddelaay(22);wwritte_ccom(0 x880+66);wwritte_ddataa(taablee1hhourrge); /时时个位位写入LLCD第第1行第第6位ddelaay(55);wwritte_cc

32、om(0 x880+55);ddelaay(22);wwritte_ddataa(taablee1hhourrshii); /时时十位位写入LLCD第第1行第第5位wwhille(!keyy1);if(keyy2=0)deelayy(100);iff(keey2=0)iif(mmin=599)/分设设置minn=0;eelseeminn+;mmingge=mmin%10;mminsshi=minn/100;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+99);wwritte_ddataa(taablee1mmingge); /分个位写写入LCCD第二二行第9

33、9位ddelaay(11);wwritte_ccom(0 x880+88);wwritte_ddataa(taablee1mminsshi); /分十十位写入入LCDD第二行行第8位位ddelaay(11);wwhille(!keyy2);if(keyy3=0)deelayy(100);iff(keey3=0)wwritte_ccom(0 x00c); /整体体显示,关关光标,不不闪烁TTR1=1; /定时时计数器器1启动动wwhille(!keyy3);bbreaak; /keey3松松开时,显显示时间间时分位均已已设置完完毕void dissplaay1()/设设置闹钟钟1时间间函数whi

34、lle(11)if(keyy1=0)deelayy(100);iff(keey1=0)iif(aahouur1=233)/闹闹钟时时设置置ahoour11=0;eelseeahoour11+;aahouurgee1=aahouur1%10;aahouurshhi1=ahoour11/100;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+8);wwritte_ddataa(:);wwritte_ccom(0 x880+00 x400+7);wwritte_ddataa(taablee1aahouurgee1);ddelaay(11);wwrit

35、te_ccom(0 x880+00 x400+6);wwritte_ddataa(taablee1aahouurshhi1);ddelaay(11);wwhille(!keyy1);if(keyy2=0) /闹钟分设设置deelayy(100);iff(keey2=0)iif(aaminn1=59)amiin1=0;eelseeamiin1+;aaminnge11=ammin11%100;aaminnshii1=aaminn1/110;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+100);wwritte_ddataa(taablee1aam

36、innge11);ddelaay(11);wwritte_ccom(0 x880+00 x400+9);wwritte_ddataa(taablee1aaminnshii1);ddelaay(11);wwhille(!keyy2);if(keyy3=0)allarmm1=alaarm11; ddelaay(110);iff(keey3=0)wwritte_ccom(0 x00c);wwritte_ccom(0 x880+00 x400);ffor(i=00;i11;i+)wwritte_ddataa(riiqii);wwhille(!keyy3);bbreaak; /设置置结束,此此时LCCD

37、第二二行无数数据显示示,只有有第一行行有时间间显示 voidd diispllay22()/设设置闹钟钟2时间间函数whille(11)if(keyy1=0)deelayy(100);iff(keey1=0)iif(aahouur2=233)/闹闹钟时时设置置ahoour22=0;eelseeahoour22+;aahouurgee2=aahouur2%10;aahouurshhi2=ahoour22/100;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+8);wwritte_ddataa(:);wwritte_ccom(0 x880+00

38、x400+7);wwritte_ddataa(taablee1aahouurgee2);ddelaay(11);wwritte_ccom(0 x880+00 x400+6);wwritte_ddataa(taablee1aahouurshhi2);ddelaay(11);wwhille(!keyy1);if(keyy2=0) /闹钟分设设置deelayy(100);iff(keey2=0)iif(aaminn2=59)amiin2=0;eelseeamiin2+;aaminnge22=ammin22%100;aaminnshii2=aaminn2/110;wwritte_ccom(0 x00f

39、);wwritte_ccom(0 x880+00 x400+100);wwritte_ddataa(taablee1aaminnge22);ddelaay(11);wwritte_ccom(0 x880+00 x400+9);wwritte_ddataa(taablee1aaminnshii2);ddelaay(11);wwhille(!keyy2);if(keyy3=0) allarmm2=alaarm22; ddelaay(110);iff(keey3=0)wwritte_ccom(0 x00c);wwritte_ccom(0 x880+00 x400);ffor(i=00;i11;i+)

40、wwritte_ddataa(riiqii);wwhille(!keyy3);bbreaak; /设置置结束,此此时LCCD第二二行无数数据显示示,只有有第一行行有时间间显示void diispllay33()/设设置闹钟钟3时间间函数whille(11)if(keyy1=0)deelayy(100);iff(keey1=0)iif(aahouur3=233)/闹闹钟时时设置置ahoour33=0;eelseeahoour33+;aahouurgee3=aahouur3%10;aahouurshhi3=ahoour33/100;wwritte_ccom(0 x00f);wwritte_ccom

41、(0 x880+00 x400+8);wwritte_ddataa(:);wwritte_ccom(0 x880+00 x400+7);wwritte_ddataa(taablee1aahouurgee3);ddelaay(11);wwritte_ccom(0 x880+00 x400+6);wwritte_ddataa(taablee1aahouurshhi3);ddelaay(11);wwhille(!keyy1);if(keyy2=0) /闹钟分设设置deelayy(100);iff(keey2=0)iif(aaminn3=59)amiin3=0;eelseeamiin3+;aaminn

42、ge33=ammin33%100;aaminnshii3=aaminn3/110;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+100);wwritte_ddataa(taablee1aaminnge33);ddelaay(11);wwritte_ccom(0 x880+00 x400+9);wwritte_ddataa(taablee1aaminnshii3);ddelaay(11);wwhille(!keyy2);if(keyy3=0) allarmm3=alaarm33;deelayy(100);iff(keey3=0)wwritte_

43、ccom(0 x00c);wwritte_ccom(0 x880+00 x400);ffor(i=00;i11;i+)wwritte_ddataa(riiqii);wwhille(!keyy3);bbreaak; /设置置结束,此此时LCCD第二二行无数数据显示示,只有有第一行行有时间间显示void dissplaay4()/设设置闹钟钟4时间间函数whille(11)if(keyy1=0)deelayy(100);iff(keey1=0)iif(aahouur4=233)/闹闹钟时时设置置ahoour44=0;eelseeahoour44+;aahouurgee4=aahouur4%10;a

44、ahouurshhi4=ahoour44/100;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+8);wwritte_ddataa(:);wwritte_ccom(0 x880+00 x400+7);wwritte_ddataa(taablee1aahouurgee4);ddelaay(11);wwritte_ccom(0 x880+00 x400+6);wwritte_ddataa(taablee1aahouurshhi4);ddelaay(11);wwhille(!keyy1);if(keyy2=0) /闹钟分设设置deelayy(100

45、);iff(keey2=0)iif(aaminn4=59)amiin4=0;eelseeamiin4+;aaminnge44=ammin44%100;aaminnshii4=aaminn4/110;wwritte_ccom(0 x00f);wwritte_ccom(0 x880+00 x400+100);wwritte_ddataa(taablee1aaminnge44);ddelaay(11);wwritte_ccom(0 x880+00 x400+9);wwritte_ddataa(taablee1aaminnshii4);ddelaay(11);wwhille(!keyy2);if(ke

46、yy3=0) aalarrm4=allarmm4; ddelaay(110);iff(keey3=0)wwritte_ccom(0 x00c);wwritte_ccom(0 x880+00 x400);ffor(i=00;i11;i+)wwritte_ddataa(riiqii);wwhille(!keyy3);bbreaak; /设置置结束,此此时LCCD第二二行无数数据显示示,只有有第一行行有时间间显示void keyyscaan()/键键盘扫描描if(kkey11=00) dellay(10);if(keyy1=0)whhilee(!kkey11); /keey1键键松开后后执行下下一行

47、程程序tiime(); /调用用timme()函数,即即时间设设置 elsee iff(keey2=0) ccnt11+;dellay(10);if(cntt1=1)whhilee(!kkey22)ahhourrge11=ahhourr1%110;ahhourrshii1=aahouur1/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahhourrge11);deelayy(5);wrritee_coom(00 x800+0 xx40+6);deelayy(2);wrritee_daata(tabble11ahhourrshi

48、i1);ammingge1=amiin1%10;amminsshi11=ammin11/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge1);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi11);wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee_daata(Alaarm_1ii); /显示闹闹钟设置置的时间间wrritee_coom

49、(00 x800+0 xx40);foor(ii=0;i111;ii+)wrritee_daata(riqqiii); /kkey22松开后后,LCCD只有有第一行行显示时时间,闹闹钟设置置时间不不显示 iif(ccnt11=22)whhilee(!kkey22)ahhourrge22=ahhourr2%110;ahhourrshii2=aahouur2/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahhourrge22);deelayy(5);wrritee_coom(00 x800+0 xx40+6);deelayy(2)

50、;wrritee_daata(tabble11ahhourrshii2);ammingge1=amiin1%10;amminsshi11=ammin11/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge2);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi22);wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee_daata(Alaar

51、m_2ii); /显示闹闹钟设置置的时间间wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;ii+)wrritee_daata(riqqiii); /kkey22松开后后,LCCD只有有第一行行显示时时间,闹闹钟设置置时间不不显示 iff(cnnt1=3)whhilee(!kkey22)ahhourrge33=ahhourr3%110;ahhourrshii3=aahouur3/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahhourrge33);deelayy(5);wrritee_co

52、om(00 x800+0 xx40+6);deelayy(2);wrritee_daata(tabble11ahhourrshii3);ammingge1=amiin1%10;amminsshi11=ammin11/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge3);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi33);wrritee_coom(00 x800+0 xx40);foor(i

53、i=0;i111;+i)wrritee_daata(Alaarm_3ii); /显示闹闹钟设置置的时间间wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;ii+)wrritee_daata(riqqiii); /kkey22松开后后,LCCD只有有第一行行显示时时间,闹闹钟设置置时间不不显示iff(cnnt1=4)whhilee(!kkey22)ahhourrge44=ahhourr4%110;ahhourrshii4=aahouur4/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahho

54、urrge44);deelayy(5);wrritee_coom(00 x800+0 xx40+6);deelayy(2);wrritee_daata(tabble11ahhourrshii4);ammingge1=amiin1%10;amminsshi11=ammin11/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge4);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi44);wrrit

55、ee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee_daata(Alaarm_4ii); /显示闹闹钟设置置的时间间wrritee_coom(00 x800+0 xx40);foor(ii=0;i4) cnnt1=0; else if(keyy3=0) cntt+;dellay(10);if(cntt=11)whhilee(!kkey33); /表示闹闹钟时间间设置退退出ahhourrge11=ahhourr1%110;ahhourrshii1=aahouur1/10;wrritee_coom(00 x800+0 xx40+7);wrritee_

56、daata(tabble11ahhourrge11);deelayy(5);wrritee_coom(00 x800+0 xx40+6);deelayy(2);wrritee_daata(tabble11ahhourrshii1);ammingge1=amiin1%10;amminsshi11=ammin11/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge1);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11

57、amminsshi11);wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee_daata(Alaarm_1ii);diispllay11(); iff(cnnt=3)whhilee(!kkey33); /表示闹闹钟时间间设置退退出ahhourrge22=ahhourr2%110;ahhourrshii2=aahouur2/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahhourrge22);deelayy(5);wrritee_coom(00 x800+0 xx40+6

58、);deelayy(2);wrritee_daata(tabble11ahhourrshii2);ammingge2=amiin2%10;amminsshi22=ammin22/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge2);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi22);wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee

59、_daata(Alaarm_2ii);dissplaay2(); iff(cnnt=5)whhilee(!kkey33); /表示闹闹钟时间间设置退退出ahhourrge33=ahhourr3%110;ahhourrshii3=aahouur3/10;wrritee_coom(00 x800+0 xx40+7);wrritee_daata(tabble11ahhourrge33);deelayy(5);wrritee_coom(00 x800+0 xx40+6);deelayy(2);wrritee_daata(tabble11ahhourrshii3);ammingge3=amiin3%10

60、;amminsshi33=ammin33/100;wrritee_coom(00 x800+0 xx40+10);wrritee_daata(tabble11ammingge3);deelayy(5);wrritee_coom(00 x800+0 xx40+9);deelayy(2);wrritee_daata(tabble11amminsshi33);wrritee_coom(00 x800+0 xx40);foor(ii=0;i111;+i)wrritee_daata(Alaarm_3ii);diispllay33(); if(cntt=77)whhilee(!kkey33); /表示闹闹

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论