单片机定时闹钟设计报告

上传人:e****s 文档编号:70638850 上传时间:2022-04-06 格式:DOC 页数:26 大小:160KB
收藏 版权申诉 举报 下载
单片机定时闹钟设计报告_第1页
第1页 / 共26页
单片机定时闹钟设计报告_第2页
第2页 / 共26页
单片机定时闹钟设计报告_第3页
第3页 / 共26页
资源描述:

《单片机定时闹钟设计报告》由会员分享,可在线阅读,更多相关《单片机定时闹钟设计报告(26页珍藏版)》请在装配图网上搜索。

1、湖北理工学院2011 2012学年 第 2 学期 单片机应用课程设计报告 教学院(部) 电气与电子信息工程学院 教 研 室 电气自动化 指 导 教 师 胡 蔷 陶 彪 课程设计时 间 2012.5.72012.5.11 课程设计班 级 电气工程及其自动化学 号 姓 名 同 组 人 课程设计任务书一、课程设计题目: 单片机应用 二、课程设计内容 1. 根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整; 2. 熟悉、掌握各种外围接口电路芯片的工作原理和控制方法; 3. 熟练使用单片机汇编语言进行软件设计; 4

2、. 熟练使用Proteus、Keil软件进行仿真电路测试; 5. 熟练使用Protel软件设计印刷电路板; 6. 学会查阅有关参考资料和手册,并能正确选择有关元器件和参数; 7. 编写设计说明书,参考毕业设计论文格式撰写设计报告。三、进度安排1时间安排序 号内 容学时安排(天)1方案论证和总体设计12硬件设计测试13软件设计14仿真测试及PCB设计15答辩1合 计5设计指导地点:K2-406 DSP、EDA实验室四、基本要求(1)根据要求确定系统设计方案;(2)绘制系统框图、系统原理总图,印刷电路板图,列出元器件明细表;(3)计算电路参数和选择元器件,画出软件框图,列出程序清单;(4)仿真,测

3、试与修改调整;(5)误差分析与调整;(6)写出使用说明书;(7)对设计进行全面总结,写出课程设计报告。五、课程设计考核办法与成绩评定评定项目基本内涵分值设计过程考勤5分答 辩回答问题情况25分实物测试正常无故障运行20分设计报告完成设计任务、报告规范性等情况50分90100分:优;8089分:良;7079分:中;6069分,及格;60分以下:不及格六、课程设计参考资料1电气与电子信息工程学院.单片机实验指导书 2熊静琪.计算机控制技术.北京:电子工业出版社,2003.3黄忠霖.控制系统MATIAB计算及仿真.北京:国防工业出版社, 2004.4彭为等.单片机典型系统设计实例精讲. 北京:电子工

4、业出版社,20075王庆利等.单片机设计案例实践教程.北京:北京邮电大学出版社,2008入门向导与设计实例.北京:机械工业出版社,20057皮大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,2010指导教师: 陶彪 胡蔷 单片机应用 课程设计成绩评定表课程设计题目:课程设计答辩或质疑记录:1、单片机如何使显示器时钟走动? 答:单片机采用定时器1工作方式1,即16位定时器/计数器,并应用中断方式使时间走动。2、LED显示器是怎样显示数字的? 答:LED利用数码管的段选,使不同的段亮即代表着不同的数字。成绩评定依据:课程设计考勤情况(5):课程设计答辩情况(25):完成设计任务及报告规

5、范性(50):实物测试(20):最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 2012 年 5 月 20 日摘要本次课程设计是在单片机授课结束的情况下,通过老师的指导和小组同学的协助,独立自主的完成项目设计,我们小组选定的是定时闹钟的设计,下面简单阐述一下该项目的设计思路。利用动态数码管作为显示器,K20-K27作为输入按键,蜂鸣器作为声音输出制作一个定时闹钟。最后结果要求做到:1、正确显示时分。2、可以利用按钮调整时间和设定闹钟时间。3、当时间到达设定的闹钟时间时,蜂鸣器发出嘀、嘀、嘀的报警声。4、通过串口在PC上设定时间和闹钟。关键字:定时闹钟 目录1 概述52主要硬件介绍

6、及电路原理设计6 STC89C52RC单片机简要介绍7键盘和LED数码管显示器简介8主要电路原理与设计93 软件设计113.1 概述123.2 主模块的设计123.3 基本显示模块设计123.4 时间设定模块设计133.5 闹铃功能的实现14软件仿真155课程设计体会17参考文献18附:程序清单19本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。定时闹钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。单片机具有集成度高、功能强、通用性好、特别是

7、它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。所以在该设计中采用单片机利用AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。AT89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进步可以扩充控制电

8、器的启停。设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计。采用四个开关来控制定时闹钟的工作状态,分别为:K1、设置时间和闹钟的小时;K2、设置小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。课设准备中根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用proteus软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出蜂鸣声音,持续一分钟。显示采用的六位数码管电路,如果亮度感觉不够,可以通过提升

9、电阻来调节,控制程序中延迟时间的长短,可以获得不同的效果。也可以改蜂鸣器为继电器,通过控制继电器从而进一步扩展的来控制一些家电开关。2.主要硬件介绍及电路原理设计 STC89C52RC单片机简要介绍 在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和IO接口,使单片机应用系统能够运行。 在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的

10、信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。 键盘和LED数码管显示器简介键盘是单片机应用系统中最常用的输入设备,在单片机应用系统实现简单的人机通信。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的结构形式一般有两种:独立式

11、键盘和矩阵式键盘。矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。LED数码管显示器在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和

12、软件译码方式。LED数码管在显示时,通常有两种显示方式:静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。(1)系统硬件电路的设计:电路是由控制部分和显示部分两大部分组成。利用单片机程序进行控制,单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。振荡频率foscl2分频后形成机器周期MC。所以,1个机器周期包含有6个状态周期或12个振荡周期。1个到4个

13、机器周期确定一条指令的执行时间,这个时间就是指令周期。AT89S52单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。,并通过数码管进行显示单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。锁相环允许用户在片外使用频率较低的晶振,可以很大地减小板级噪声;而且,由于时钟频率可由程序控制,系统时钟可以在一个很宽的范围内调整,总线频率往往能升得很高。但是,使用锁相环也会带来额外的功率消耗。 单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。AT89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器

14、(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。图中,电容器C01,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为12MH2,采用6MHz的情况也比较多。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。外部振荡方式是把外部已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。外部振荡方式的外部电路如下图所示。如图所示:各模块分析:显示模块电路先通过电源电路送出+5V电压,单片机AT89S52通过74LS

15、47和CD4515(416译码器)驱动数码管显示数值, 显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描12位数码管显示时会出现闪烁情况,设计时分两排显示,一排显示时间和年月日,一排显示星期和温度, 共阳极数码管中8个发光二极管的阳极(二极管正端)连在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。采用动态显示方式,比较节省I/O口,硬件

16、电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多时间。 为了提供共阳LED数码管的驱动电压,用三极管9012作电源驱动输出。采用12MHz晶振,有利于提高秒计时的精确性。三极管采用9012。数码管采用红色的共阳型LED数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动510欧姆的电阻可以改变显示亮度;时钟模块利用芯片内部的振荡器,然后在引脚XTAL1和引脚XTAL2两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时,C1和C2的值通常选择30pF; C1

17、、C2对频率有微调作用,晶体谐振器的频率12MHz。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。设置了1224两种显示状态,调整计时的按键、设置定时的按键且定时设置了3次定时、还另加载了星期、年、月、日的调整及闰年的自动调整;温度模块主要由18B20通过单片机AT89S52中的温度程序不断的检测温度来显示温度温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;音乐模块通过LM386N-1给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置3次定时,每次定

18、时到时,音乐程序中编了6种音乐,它可以自动选择6种音乐中的任一音乐响1分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止SpeakerVS6GND4GAIN8325BYP7GAIN1LM386N-110k470GNDGND10U47UGNDGNDGND+5V1KGND AT89S52 复位模块单片机复位电路是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。无论是在单片机刚接上电源时,还是断电后或者发生故障后都要复位;单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从00

19、00H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。说明:表中符号*为随机状态;A00H,表明累加器已被清零;特殊功能寄存器 初始状态 特殊功能寄存器 初始状态 A 00H TMOD 00H B 00H TCON 00H PSW 00H TH0 00H SP 07H TL0 00H DPL 00H TH1 00H DPH 00H TL1 00H P0P3 FFH SBUF 不定

20、IP *00000B SCON 00H IE 0*00000B PCON 0*B PSW00H,表明选寄存器0组为工作寄存器组;SP07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP00000B,表明各个中断源处于低优先级;IE000000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复

21、位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。 安全省电模式电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。3. 软件设计3.1 概述软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等方面。基于软件的秒脉冲信号通常有延时法和定时中断法。延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现

22、。例如,设定某定时器每100ms中断1次,则10次的周期为1s。本系统中所使用的晶振频率为12MHZ。3.2 主模块的设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的程序框图如下图2所示:系统初始化定时初始化中断初始化串口初始化显示待机指示符设定闹铃时间判设置闹铃时间否?显示刷新启动走时有关变量初始化刷新显示判时或分变化否?秒指示判秒到否?闹铃判是否到闹铃时间?延时YYYY图 23.3 基本显示模块设计基本显示模块设计的重点是由显示代码取得相应的段码,

23、显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。程序流程如图3所示。将进制时分秒数据转化为显示代码 关显示以免显示抖动通过串口将时分秒数据传入数码管打开显示图 33.4 时间设定模块设计时间设定模块的设计要点是按键的去抖处理与“一键多态”的处理。即只涉及4个键完成了6位时间参数的设定。软件

24、法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。“一键多态”即多功能键的实现思想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。其流程图如下图4所示:设置键吗?设置模块初始化将在编参数送显示缓冲区闪烁标志为真?将当前位的显示代码置暗代码调基本显示模块刷新显示设置键吗?当前编辑位下移(下一位)当前编辑的是分各位?结束设定键吗?根据当前位的性质分别进行处理(含上下限判

25、断) 图 43.5 闹铃功能的实现闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来。闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来

26、对“时”、“分”、“秒”显示数字进行校对调整。其流程图如下所示:时十位、个位,分十位、个位改变了设置闹铃标志是否设置了闹铃清除闹铃标志判当前时间是设定时间中断返回中断返回闹铃判别处理考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁,而且以定时20组闹钟。在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时,分,秒显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化

27、。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。由于定义了定时闹钟组,在这里采用中断组次,每中断一次比较一组闹钟,避免了一次比较中断时间过长,影响下次中断时间。显示之后查询闹铃标志位是否与前面所置数相等,若相等则响铃。为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会影响显示。之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。4. Proteus软件仿真

28、本次课程设计所采用的程序调试软件为keil软件,所采用的仿真软件为protus 6 professional软件。本次试验的效果图如下所示:性能及误差分析 K1键用于系统进入时间调节状态,根据所按次数不同,分别进入时分秒调节状态,K2、K3分别用于对显示时间和闹钟时间的增加和减小调节,K4键用于显示闹钟所定时间,对K4键所按次数不同分别进入闹钟的时分秒调节状态。该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0. 00010. 000001结构化软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿

29、真器即可;后者一般需要仿真系统的支持。本次课设,采用keil调试软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择keil已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课设的要求再修改程序,再运行查,直到满足要求。5. 课程设计体会单片机是一门应用性很强的学科,课程设计是培养我们综合运用所学知识,

30、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。虽然在做课程设计以前已经系统的把单片机课本认真的学习了一下,但是在刚拿到设计任务书时还是有点一头雾水,不知道该从哪里下手。令人欣慰的是经过一周的学习,虽然过程很艰辛,但是总算实现了定时闹钟的功能,所有的努力都很值得。这一周的大部分时间都在研究程序怎么处理,在这个过程中加深了我对汇编语言命令的应用,而且也更加了解到软硬件配套的重要性。通过这次课程设计,使我对这们功课有了更深刻的认识和了解。首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有

31、理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。其次软件在这次设计中也有不足之处,比如音乐的响声不连续,但又不知道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识面,解决设计的不足之处。总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。参考文献1电气与电子信息工程学院.单片机实验指导书 2熊静琪.计算机控制技术.北京:电子工业出版社,2003.3黄忠霖.控制系统MATIAB计算及仿真.

32、北京:国防工业出版社, 2004.4彭为等.单片机典型系统设计实例精讲. 北京:电子工业出版社,20075王庆利等.单片机设计案例实践教程.北京:北京邮电大学出版社,2008入门向导与设计实例.北京:机械工业出版社,20057皮大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,2010程序清单#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit

33、 buzzer=P37;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1;uint num,num1,num2,num3,shi1,shi2,fen1,fen2,miao1,miao2,keynum1,keynum4;uint nnum1,nnum2,nnum

34、3,nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2;void delayms(uint xms) uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-); void display(uchar A,uchar B,uchar C,uchar D,uchar E,uchar F) miao1=num1/10; miao2=num1%10; fen1=num2/10; fen2=num2%10; shi1=num3/10; shi2=num3%10; nmiao1=nnum1/10; nmiao2=nnum1%10; nfen1=nnum

35、2/10; nfen2=nnum2%10; nshi1=nnum3/10; nshi2=nnum3%10; P0=0xff; wela=1; P0=0xfe; wela=0; dula=1; P0=tableA; dula=0; delayms(1); P0=0xff; wela=1; P0=0xfd; wela=0; dula=1; P0=table1B; dula=0; delayms(1); P0=0xff; wela=1; P0=0xfb; wela=0; dula=1; P0=tableC; dula=0; delayms(1); P0=0xff; wela=1; P0=0xf7;

36、wela=0; dula=1; P0=table1D; dula=0; delayms(1); P0=0xff; wela=1; P0=0xef; wela=0; dula=1; P0=tableE; dula=0; delayms(1); P0=0xff; wela=1; P0=0xdf; wela=0; dula=1; P0=tableF; dula=0; delayms(1); void keyscan() if(key1=0) delayms(10); if(key1=0) keynum1+; while(!key1); if(keynum1!=0) TR0=0; if(keynum1

37、=1) if(key2=0) delayms(10); if(key2=0) num1+; if(num1=60) num1=0; while(!key2); if(key3=0) delayms(10); if(key3=0) if(num1=0) num1=60; num1-; while(!key3); if(keynum1=2) if(key2=0) delayms(10); if(key2=0) num2+; if(num2=60) num2=0; while(!key2); if(key3=0) delayms(10); if(key3=0) if(num2=0) num2=60;

38、 num2-; while(!key3); if(keynum1=3) if(key2=0) delayms(10); if(key2=0) num3+; if(num3=24) num3=0; while(!key2); if(key3=0) delayms(10); if(key3=0) if(num3=0) num3=24; num3-; while(!key3); if(keynum1=4) keynum1=0;TR0=1; if(key4=0) delayms(10); if(key4=0) keynum4+; while(!key4); if(keynum4!=0) TR0=0;

39、if(keynum4=1) if(key2=0) delayms(10); if(key2=0) nnum1+; if(nnum1=60) nnum1=0; while(!key2); if(key3=0) delayms(10); if(key3=0) if(nnum1=0) nnum1=60; nnum1-; while(!key3); if(keynum4=2) if(key2=0) delayms(10); if(key2=0) nnum2+; if(nnum2=60) nnum2=0; while(!key2); if(key3=0) delayms(10); if(key3=0)

40、if(nnum2=0) nnum2=60; nnum2-; while(!key3); if(keynum4=3) if(key2=0) delayms(10); if(key2=0) nnum3+; if(nnum3=24) nnum3=0; while(!key2); if(key3=0) delayms(10); if(key3=0) if(nnum3=0) nnum3=24; nnum3-; while(!key3); if(keynum4=4) keynum4=0;TR0=1; void main() num3=12; nnum3=6; TMOD=0x01; TH0=(65536-5

41、0000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) keyscan();if(keynum4=0)display(shi1,shi2,fen1,fen2,miao1,miao2);if(keynum4!=0)display(nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2); if(keynum1=0)if(num1=nnum1&num2=nnum2&num3=nnum3) buzzer=0; delayms(5000); buzzer=1; void T0_time() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; num+; if(num=20) num=0; num1+; if(num1=60) num1=0; if(num1=0) num2+;if(num2=60)num2=0;if(num2=0) num3+; if(num3=24) num3=0;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!