[其它考试]基于STC89S52单片机的实时时钟设计.doc

上传人:sccc 文档编号:4662706 上传时间:2023-05-05 格式:DOC 页数:47 大小:1.32MB
返回 下载 相关 举报
[其它考试]基于STC89S52单片机的实时时钟设计.doc_第1页
第1页 / 共47页
[其它考试]基于STC89S52单片机的实时时钟设计.doc_第2页
第2页 / 共47页
[其它考试]基于STC89S52单片机的实时时钟设计.doc_第3页
第3页 / 共47页
[其它考试]基于STC89S52单片机的实时时钟设计.doc_第4页
第4页 / 共47页
[其它考试]基于STC89S52单片机的实时时钟设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《[其它考试]基于STC89S52单片机的实时时钟设计.doc》由会员分享,可在线阅读,更多相关《[其它考试]基于STC89S52单片机的实时时钟设计.doc(47页珍藏版)》请在三一办公上搜索。

1、湖南机电职业技术学院 毕业设计(论文)任务书题目: 基于STC89S52单片机的实时时钟系统设计任务与要求:时钟功能:该时钟最少可以准确走时几十年,在掉电后时钟芯片12CR887由内部集成锂离子电池供电,之所以在不需要看时钟信息时可以将主电源拔掉,当需要看时钟信息时插上主电源即可正常显示。日期功能:能够准确的显示当前日期,具有闰年,平年日期自动调整功能。闹钟功能:能够按规定的定时时间报时。要求:1、确定单片机的I/O口,选择单片机的型号,选择外围设备,所须电源参数。2、单片机外围I/O接线图3、设计控制程序1)、选择STC89C52单片机设计2)、选择DS12CR887作为时钟源3)、选择74

2、LS273作为地址锁存器4)、选择TDA2822作为闹钟功率放大器4、程序与说明时间: 2009 年 4 月20 日 至 2009 年 6月 5 日 共 6 周系部: 电气工程系 专业: 应用电子技术 学生姓名: 文绍锦 学 号: 06221124指导单位或教研室:广恒电子 电气教研室: 411指导教师: 郭稳涛 肖珊 系主任: 庹朝永 2009年7月2日V 毕业设计(论文)进度计划表日 期工 作 内 容执 行 情 况指导教师签 字2009年4月20日2009年4月30日认识课题:围绕要求掌握的内容,查阅书籍、资料确定设计方案。方法:书店购买书籍、利用工作之余努力学习单片机编程、在网上申请DS

3、12CR887免费样品,在电子城买其他外围元器件。2009年5月5日2009年5月10日读图:查阅DS12CR887时钟芯片内部结构相关资料、利用所学的知识重点对单片机如何读取DS12CR887内部数据信息进行分析,确定时钟显示电路、调时轻触按钮、地址锁存器74LS273、闹钟蜂鸣器、STC89C52单片机的选取。2009年5月12日2009年5月18日基于DS12CR887实时日历时钟的硬件连接,STC89C52单片机编程器的制作。并画出原理图及其PCB板准备外发PCB公司打板!2009年5月20日2009年5月25日编写程序,调试程序,并用软件仿真!将调试成功的程序下载到单片机中!2009

4、年5月26日时钟制作成功,并观察走时的准确性,为编写毕业论文做准备!2009年5月27日2009年6月5日整理编写毕业设计论文,准备答辩。指导教师对进度计划实施情况总评签名:年 月 日目 录摘要 第1章 绪论 61.1实时时钟研究的背景和意义.61.2本论文研究的主要内容.6本章小结6第2章 系统概述.72.1实时时钟的特点72.2实时时钟芯片DS12CR887工作原理72.3实时时钟芯片DS12CR887主要性能参数72.4七段数码管构成的显示电路工作原理10第3章 硬件设计113.1 STC89S52单片机编程器电路113.2电源和显示时间控制电路123.3 按键调时控制电路133.4闹钟

5、电路14第4章 单片机软件设计154.1实时时钟芯片DS12CR887编程基础154.2 时间调整,闹钟调整,年、月、日调整切换子程序设计164.3 时间调整子程序设计174.4闹钟定时调整子程序设计214.5年、月、日显示子程序设计284.6年、月、日调整子程序设计294.7数码管显示子程序设计40第5章 结论44谢辞参考文献附录A:基于12CR887实时时钟PCB板摘要随着我国经济的飞速发展,城市人口日益增多,人们在忙碌的日常生活中都少不了一个稳定可靠的时钟!当我们在火车站候车时总是时不时盯着电子显示屏的时间来预知车次的到来,当我们在工厂里面工作时,一个工人工资的多少往往都是以时间来计算的

6、!由此看来一个稳定可靠的时钟在我们的日常生活中具有很实际的意义。本课题是基于DS12CR887时钟芯片为时钟源,单片机为主控制系统开发的一个实时时钟。该时钟走时准确,并且在掉电的状态下最少也能准时间工作10年,它不但具有走时准确的功能,而且还能够准确的显示年,月,日,星期。在本设计中充分利用了单片机内部资源,涉及到了键盘控制、数码管显示、中断系统、定时/计数器、串口通信等,这既是对所学知识的总结也是对自己动手能力的最好锻炼。通过本次设计,我成功的制作出了属于自己的产品,并对单片机有了更深层次的了解。要想真正的学好单片机就要找时间去多“玩”单片机,也就是说多练习,多想,按照自己的想法去开发产品,

7、这样才能真正的掌握单片机。 单片机“入门既不难,深造也是办得到的”,只要有恒心、有决心,跟随“连载”一步步走下去,将来就一定能在单片机世界里遨游。关键词:实时时钟 单片机STC89C52 DS12CR887第1章 绪 论1.1实时时钟研究的背景和意义 在我们的现实生活中可能每个人都拥有自己的时钟,因为有了时钟我们就可以按着时间去工作,按着时间有计划的去处理某些事情。但是有没有人想过你的时钟走时不准的时候,你是多么的烦恼呢。因为在生活中大多数时钟多是非实时的,只要把电池取下来时钟就将停止工作,或者当你的时钟电池耗尽时它将也停止工作。就连人们常带的电子手表也要定期更换电池,否则将停止工作。然而又有

8、没有人想过在更换电池上所话费金钱的多少呢?我们就以电子钟一个月更换一次电池来计算吧,换一次电池大概需要3元钱,一年下来将要花费36元钱,十年下来将要花费360元,还不算电池涨价的情况与时钟维修的钱!而本次设计的实时时钟不但时间是连续的,而且在掉电的情况下也能工作几十年,并且制作成本也才20来块钱。本时钟还具有环保、走时无噪音、低功耗等非实时时钟不具有的功能。该实时时钟不但可以作为家用,而且更可以在公共场合使用,如车站、码头、商场等场所。1.2本论文研究的主要内容本文是以实时时钟芯片DS12CR887和STC89C52单片机为主要研究对象,着重进行51单片机控制系统的设计研究和如何读取DS12C

9、R887内部时钟信息的研究。主要内容包括:1、 时间显示系统的设计;2、 调整时间系统的设计;3、 年、月、日显示系统的设计;4、 年、月、日调整系统的设计;5、 闹钟定时系统的设计;6、 闹钟定时响应系统的设计;7、 如何读取DS12CR887内部时钟信息;本章小结本章介绍了基于DS12CR887实时时钟在现实生活中的重要性,总结了本论文研究的目的、意义及要完成主要工作的任务。第2章 系统概述2.1实时时钟的特点 1、走时准确无误,配置灵活,设用于工厂,车站,家庭等领域使用。 2、价格较低,外围设备较简单易于制作。 3、低功耗,能够掉电工作几十年。 4、工作无噪音,不影响他人休息。 5、闹钟

10、报时准确,不会误报错报。 6、外表美观,实用,实用价值高。2.2实时时钟工作原理本时钟在上电工作时首先显示当前时间时、分、秒,然后延时一段时间后显示当前年、月、日,并在设定的闹铃时间闹钟响应。当用户需要调整年、月、日、时、分、秒闹铃时可以按轻触按钮进行调节。在掉电的情况下,显示屏上面没有显示,但在时钟芯片DS12CR887内部已经集成了可充电锂离子电池,其内部任然在不间断的工作中,即时在掉电的情况下DS12CR887至少也能工作十年,所以当给单片机再次供电时,单片机对DS12CR887进行读数据,然后通过显示屏显示准确无误的时间!2.3实时时钟芯片DS12CR887主要性能参数 1,时钟芯片D

11、S12CR887,其引脚分布图如下所示图2-1 12C887引脚分布图MOT (1脚) :总线时序模式选择脚。接高电平,选择MOTOROLA总线时;序;接低电平或悬空,择选择INTEL总线时序。NC (2,3,16,20,21,22脚):悬空脚。AD0AD7(411脚):地址/地址数据复用总线引脚。CS(13脚):片选脚,低电平有效。AS(14脚):地址锁存输入脚。下降沿时,地址被锁存,紧接着的上升沿来时地址被清除。R/W(15脚):读/写输入脚。在选择MOTOROLA总线时序模式时,此引脚用于指示当前的读写周期,高电平指示当前为读周期,低电平指示当前为写周期;选择INTEL中线时序模式时,此

12、引脚为低电平有效的输入脚,相当于通用RAM的写使能信号(/WE)DS(17脚):选择MOTOROLA总线时序模式时,此引脚为数据锁存脚;选择INTEL总线时序模式时,此引脚为读输入脚,低电平有效,相当于典型的内存的输出使能信号(/OE)RESET(18脚):复位脚,低电平有效,复位不会影响到时钟、日历和RAM。IRQ(19脚):中断申请输出脚,低电平有效,可作为微处理器的中断输入。SQW(23脚):方波信号输出脚。可通过设置寄存器位SQWE关断此信号输出,此信号的输出频率也可通过对芯片内部的寄存器编程予以改变。VCC(24脚):+5v电源端。2,时钟芯片12C887,其内存空间如下所示14字节

13、000D0E3132337F0秒1 秒闹钟2 分钟3 分闹钟 4 时钟5 时闹钟6 星期7 日8 月9 年10 寄存器A11 寄存器B12 寄存器C13 寄存器D50 世纪 01314495051 127图2-2 12C887内存空间映射示意图地址0X000X09共十个寄存器,分别存放秒、秒闹钟、分、分闹钟、时、时闹钟、小时、时闹钟、星期、日、月、年和年信息,地址0X32为世纪信息寄存器(解决了千年问题);地址0X0A0X0Dh共4个寄存器,分别为寄存器A、B、C、D,它们用于控制和寄存某些状态信息;其余的113字节地址空间是留给用户使用的普通地址空间。在所有的128字节中,寄存器C和D为只读

14、寄存器,寄存器A的第7位属于只读位,秒字节的高阶位也是只读的,其余字节均为可直接读写字节。时钟,日历信息可以通过读取合适的内存字节获得:时钟、日历和闹钟可以写合适的内存字节设置和初始化。对应时钟、日历和闹钟的10个寄存器字节可以是二进制形式或者BCD码形式,在写这些寄存器时,寄存器B的SET位必须置1。寄存器A字节的内容如下。MSB LSB UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0UIP: 更新标志位。为只读位且不受复位操作的影响,为1时,表示即将发生的数据更新;为0时,表示至少244US不会更新数据。当UIP为0时,可以获得所有时钟、日历、闹钟信息。将寄存器B中的SET

15、位置1可以限制任何数据更新操作,并且清除UIP位。DV2、DV1、DV0:此3位为010时将打开晶振,并开始计时。RES3、RES2、RES1、RES0:用于设置周期性中断产生的时间周期和输出方波的频率。寄存器B字节的内容如下。 MSB LSB SET PIE AIE UIE SQWE DM24/12 DSESET:设置位,可读写,不受复位操作影响。为0时,不处于设置状态,芯片进行正常时间数据更新;为1时,抑制数据更新,可以通过程序设定时间和日历信息。PIE:周期性中断使能位,可读写,复位时清除此位。为1时,允许寄存器C中的周期中断标志位PF,驱动/IRQ引脚为低产生中断信号输出,中断信号产生

16、的周期由RS3RE0决定。AIE:闹钟中断使能位,可读写。为1时,允许寄存器C中的闹钟中断标志位AF、闹钟发生时就会通过/IRQ引脚产生中断输出。UIE:数据更新结束中断使能位,可读写。复位或者SET位为1时清除此位。为1时允许寄存器C中的更新结束标志UF,更新结束时就会通过/IRQ引脚产生中断输出。SQWE:方波使能位,可读写,复位时清除此位。为0时,SQW引脚保持低电平;为1时,SQW引脚输出方波信号,其频率由RS3RS0决定。DM:数据模式位,可读写,不受复位操作影响。为0时,设置时间、日历信息为二进制数据;为1时,设置为BCD码数据。24/12:时间模式设置为,可读写,不受复位操作影响

17、。为0时,设置为12小时模式;为1时,设置为24小时模式。DSE:为1时,会引起两次特殊的时间更新;4月的第一个星期日凌晨1:59:59会直接更新到3:00:00,10月的最后一个星期日凌晨1:59:59会直接更新到1:00:00;为0时,时间信息正常更新,此位可读写,不受复位操作影响。寄存器C字节内容如下。 MSB LSB IRQF PF AF UF 0 0 0 0IQRF:中断申请标志位。为1时,/IRQ引脚为低,产生中断申请。当PF、PIE为1时或者AF、ATE为1或者UF、UIE为1时,此位为1,否则置0.PF:中期中断标志位。为1时,它是只读位,和PIE位状态无关,由复位操作或者寄存

18、器C操作清除。AF:闹钟中断标志位。为1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器C操作清除。UF:数据更新结束中断标志位。每个更新周期后此位都会置1,当UIE位位置1时,UF若为1就会引起IRQF置1,将驱动/IRQ引脚为低电平,申请中断。此位由复位操作或读寄存器C操作清除。寄存器D字节的内容如下。 MSB LSB 0 0 0 0 0 0 0 0VRT;RAM和时间有效位。用于指示和VBAT引脚连接的电池状态。此位不可写,也不受操作为影响,正常情况下读取时总去为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据就会出现问题。芯片DS12CR887的113字节普

19、通RAM空间为非易失性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。3,74LS273其引脚分布图如下图所示 图2-3 地址锁存器74LS273引脚分布图RD(1脚):复位脚。低电平有效,当1脚是低电平时,输出脚2(1Q)、5(2Q)、6(3Q)、9(4Q)、12(5Q)、15(6Q)、16(7Q)、 19(8Q)。 全部输出0,即全部复位。T(11脚):锁存控制端。上升沿触发,当1脚为高电平时,且11脚有上升沿时,立即锁存输入脚3(1D)、4(2D)、7(3D)、8(4D)、13(5D)、14(6D)、17(7D)、18(8D)上的电平状态,并呈现在

20、输出脚2(1Q)、5(2Q)、6(3Q)、9(4Q)、12(5Q)、15(6Q)、16(7Q)、 19(8Q)上。4,七段数码管构成的显示电路工作原理。 本设计显示电路部分由六个共阳极数码构成。其中共阳极公共端用三级管进行驱动, 段码由74LS273地址锁存器控制,并采用数码管总线动态扫描方式进行时间,年、月、日的显示。具体硬件电路在后面的硬件设计中有提供!第3章 硬件设计3.1 STC89C52单片机编程器结构由于STC89C52单片机只支持串口下载,加上手中没有现成的编程器,故只能自己动手做个简单的编程。该编程器主要由MAX232电平转换芯片和单片机最小系统构成,利用RS-232接口实现单

21、片机和计算机通信,并由单片机专用烧录软件将程序写在单片机中。由于STC89C52单片机在写程序进去时,具有冷启动过程,所以在编程之前必去将主电源复位一次,本电路中复位按钮为S1。其单片机烧录软件为STCISPV31,编程器电路如下图所示。STC89C52单片机编程器电路如下所示:图3-1 STC89C52单片机编程器电路图3.2电源和显示控制结构电路 电源部分由一片LM7805构成5V的稳压电源,为整个电路提供电能。 由两片74LS273,六个共阳极数码管,六个NPN型三极管等元器件构成了完整的时间、年、月、日、显示电路。其中U2控制六个数码管的段码,U3控制三极管的基极再由三极管放大电流后驱

22、动数码管的公共端!采用总线扫描方式,利用人眼视觉暂留现象,在程序的控制下在数码管上面显示出所需要的数值! 电源和显示控制电路如下所示: 图3-2 电源和显示控制电路3.3按键调时控制电路 该电路主要由STC89C52单片机最小系统,DS12CR887,调时按钮S1S3及其外为元器件所构成。通过编写程序让单片机读取DS12CR887里面的信息,然后由DS12CR887控制地址锁存器74LS273进而控制数码管的显示。当按下按钮时单片机都会由走时状态转到调时状态进入时间调整、年、月、日、闹钟调整状态。当调整结束后又回到新的走时状态。 按键调时控制电路如下所示:图3-3按键调时控制电路图3.4闹钟电

23、路该电路主要由TDA2822功率放大模块将单片机发出的闹钟信号进行放大,进而推动一个3W喇叭。供电部分与单片机共用5V的电源,该设计的最大特点就是能够清脆的听出闹钟时发出的音乐曲调。闹钟电路如下所示:图3-4 闹钟电路图第4章 单片机软件设计4.1实时时钟芯片DS12CR887编程基础 1,在本设计中,DS12CR887采用INTEL总线模式进行与单片机进行数据读也写操作。当1脚(MOT)为低电平时,DS12CR887为MOTOROLA总线模式,在此不做详述。当1脚(MOT)为高电平或悬空时,DS12CR887为INTEL总线模式,本设计中将1脚(MOT)悬空。在编写程序的过程中首先应将DS1

24、2CR887按INTEL总线模式初始化,在INTEL总线模式下将数据写在指定的地址,在INTEL总线模式下将指定的地址读出数据。 2,INTEL总线写时序时序图如下:图4-1 INTEL总线写时序时序图3,INTEL总线读时序时序图如下:图4-2 INTEL总线读时序时序图 4,根据INTEL总线写时序时序图写数据程序: void write_12CR887(uchar add,uchar date)/在指定地址写入数据 CS=0; DS=1; RW=1; AS=1; P0=add; AS=0; RW=0; P0=date; RW=1; AS=1;CS=1; 5,根据INTEL总线读时序时序图

25、读数据程序: uchar read_12C887(uchar add)/在指定的地址读出数据 uchar read_data; DS=1; RW=1; AS=1; CS=0; P0=add; AS=0; DS=0; P0=0XFF; read_data=P0;DS=1; AS=1; CS=1; return(read_data);4.2时间调整,闹钟调整,年、月、日调整切换子程序设计当按下按钮SW1时,中间标志位i会自动进行加操作。当i等于1时,时间调整标志位置1,进入时间调整状态。当i等于2时,闹钟调整标志位置1,进入闹钟调整状态。当i等于3时,年、月、日调整标志位置1,进入年、月、日调整状

26、态。1,时间调整,闹钟调整,年、月、日调整却换子程序如下: void gongneng_quehuan()/功能却换子程序if(SW1=0)delay(5);if(SW1=0)while(SW1=0);display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);i+;if(i=1)flag_set_time=1;/将时间调整标志位置1else if(i=2)flag_set_time=0;flag_set_alarm=1;/将闹钟调整标志位置1else if(i=3)i=0;flag_set_century=1;/将

27、年、月、日调整标志位置14.3时间调整子程序设计 由于本人想向单片机更高层次编程,本设计只用三个按钮根据不同的组合状态进行时间,闹钟,年,月,日的调整。所以程序相对来说是比较复杂的。具体时间调整过程是这样的,首先进行小时调整,然后进行分钟调整,最后进行秒钟调整。在小时调整过程中,如果SW2按钮每按下一次时将对小时当前值加1次,当加到24时小时清零;如果SW3按钮每被按下一次时将对小时当前值减1次,当减到0后再按一次SW3时小时赋值到23。小时调整完毕后将所调整好的小时值写入小时寄存器中,然后又将写入到小时寄存器的数值从DS12CR887中读取出来并在显示屏上显示出来。在分钟调整过程中,如果SW

28、2按钮每按下一次时将对分钟当前值加1次,当加到60时分钟清零,小时加1;如果SW3按钮每被按下一次时将对分钟当前值减1次,当减到0后再按一次SW3时分钟赋值到59。分钟调整完毕后将所调整好的分钟值写入分钟寄存器中,然后又将写入到分钟寄存器的数值从DS12CR887中读取出来并在显示屏上显示出来。在秒钟调整过程中,如果SW2按钮每按下一次时将对秒钟当前值加1次,当加到60时秒钟清零,分钟加1;如果SW3按钮每被按下一次时将对秒钟当前值减1次,当减到0后再按一次SW3时秒钟赋值到59。秒钟调整完毕后将所调整好的秒钟值写入秒钟寄存器中,然后又将写入到秒钟寄存器的数值从DS12CR887中读取出来并在

29、显示屏上显示出来。当小时、分钟、秒钟都调整完毕后按下确认键(SW1和SW2都被按下时)时间调整完成,并将当前所调整出来的数值在显示屏上面显示出来,进入时间显示状态。 1,时间调整子程序如下: void shijian_tiaozheng()char hours_timeset,timeset=0;if(flag_set_time=1)write_12C887(REGISTER_B,0XA6);flag_set_time=0;if(timeset=0)hours_timeset=read_12C887(hours);/读取当前小时的值SW2=1;SW1=1;while(SW2=0)&(SW1=0

30、)!=1)if(SW2=0)delay(5);if(SW2=0)while(SW2=0)display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);hours_timeset+;/小时值加1if(hours_timeset=24)hours_timeset=0;write_12C887(hours,hours_timeset);/将调整后的小时的值写入小时寄存器/LED2=1;if(SW3=0)delay(5);if(SW3=0)while(SW3=0)display(read_12C887(seconds),rea

31、d_12C887(minutes),read_12C887(hours);hours_timeset-;/小时值减1if(hours_timeset=60)hours_timeset=0;write_12C887(minutes,hours_timeset);if(SW3=0)delay(5);if(SW3=0)while(SW3=0)display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);hours_timeset-;if(hours_timeset=60)hours_timeset=0;write_12C88

32、7(seconds,hours_timeset);if(SW3=0)delay(5);if(SW3=0)while(SW3=0)display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);hours_timeset-;if(hours_timeset0)hours_timeset=59;write_12C887(seconds,hours_timeset);display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);timeset=0;wh

33、ile(SW2&SW1)=0)display(read_12C887(seconds),read_12C887(minutes),read_12C887(hours);write_12C887(REGISTER_B,0X26);4.4闹钟定时调整子程序设计在正常的走时状态下,连续两次按下SW1按钮,将进入闹钟调整状态。首先进行小时调整,然后进行分钟调整,最后进行秒钟调整。在小时调整过程中,如果SW2按钮每按下一次时将对小时当前值加1次,当加到24时小时清零;如果SW3按钮每被按下一次时将对小时当前值减1次,当减到0后再按一次SW3时小时赋值到23。小时调整完毕后将所调整好的小时值写入小时寄存器

34、中,然后又将写入到小时寄存器的数值从DS12CR887中读取出来并在显示屏上显示出来。在分钟调整过程中,如果SW2按钮每按下一次时将对分钟当前值加1次,当加到60时分钟清零,小时加1;如果SW3按钮每被按下一次时将对分钟当前值减1次,当减到0后再按一次SW3时分钟赋值到59。分钟调整完毕后将所调整好的分钟值写入分钟寄存器中,然后又将写入到分钟寄存器的数值从DS12CR887中读取出来并在显示屏上显示出来。在秒钟调整过程中,如果SW2按钮每按下一次时将对秒钟当前值加1次,当加到60时秒钟清零,分钟加1;如果SW3按钮每被按下一次时将对秒钟当前值减1次,当减到0后再按一次SW3时秒钟赋值到59。秒

35、钟调整完毕后将所调整好的秒钟值写入秒钟寄存器中,然后又将写入到秒钟寄存器的数值从DS12CR887中读取出来并在显示屏上显示出来。当小时、分钟、秒钟都调整完毕后按下确认键(SW1和SW2都被按下时)时间调整完成,并将当前所调整出来的数值存入闹钟寄存器C中为以后的闹钟中断程序服务,然后进入时间显示状态。1,时间调整子程序如下所示:void naozhong_tiaozheng()char alarmset,alarmset_flag=0;if(flag_set_alarm=1)flag_set_alarm=0;if(alarmset_flag=0)alarmset=read_12C887(hours_alarm);/读取当前小时的值SW2=1;SW1=1;while(SW2=0)&(SW1=0)!=1)/如果确认键未按下,一直处于小时调整状态if(SW2=0)delay(5);if(SW2=0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号