单片机课程设计报告 电子时钟.doc

上传人:飞****2 文档编号:60121061 上传时间:2022-11-13 格式:DOC 页数:35 大小:1.10MB
返回 下载 相关 举报
单片机课程设计报告 电子时钟.doc_第1页
第1页 / 共35页
单片机课程设计报告 电子时钟.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《单片机课程设计报告 电子时钟.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告 电子时钟.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、荆楚理工学院课程设计成果学院: 电子信息工程学院 班 级: 学生姓名: 学 号: 设计地点(单位) 设计题目: 电子时钟 完成日期: 2014 年 6 月 19 日 指导教师评语: _ 成绩(五级记分制): 教师签名: 目 录1 摘要12 系统简介12.1 总体设计方案说明22.2 单片机系统组成方框图23 系统设计73.1 系统总体设计73.2 硬件电路设计83.3 软件设计114 实验结果与讨论155 结论 166 参考文献 177附录18 基于单片机的电子时钟设计1.摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和

2、社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显

3、示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。关键字:数字电子钟 单片机2系统简介数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、

4、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。 2.1 总体设计方案说明 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特

5、别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。目前,我国生产很多型号的单片机,在此,我们采用型号为STC89C52的单片机。因为:STC89C52是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM

6、),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C52提供了高性价比的解决方案。 STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。2.2 单片机的基本结构 MCS-52单片机内部结构 8052单片机包

7、含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM)8052内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据

8、,运算的中间结果或用户定义的字型表。单片机8052的内部结构程序存储器(ROM):8052共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM):8052有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8052共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。全双工串行口:8052内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8052具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满

9、足不同的控制要求,并具有2级的优先级别选择。时钟电路:8052内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8052单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即林斯顿(Princeton)结构。INTEL的MCS-52系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-52系列单片机的内部结构示意图。 MCS-52系列单片机的内部结构MCS-52的引脚说明:MCS-52系

10、列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:MCS-51的引脚说明:MCS-52系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明: 单片机的引脚图Pin9:RESET/Vpd复位信号复用脚,当80

11、52通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8052的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于

12、锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。 上电自动和手动复位电路图 内部和外部时钟方式图 Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且

13、程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。3系统设计3.1系统总体设计原理图3.2硬件电路设计 单片机最小系统的结构图单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。1.电源引脚 Vcc40电源端GND20接地端工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。 2.外接晶体引脚 晶振连接的内部、外部方式图XTAL119XTAL218 XTAL1是片内振荡器的反相放大器输入端,X

14、TAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会

15、影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3. 复位RST9在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实

16、现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。复位操作不会对内部RAM有所影响。4.输入输出引脚(1) P0端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部

17、程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8

18、位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看下表。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RD P3端口引脚兼用功能表发光二极

19、管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。.显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第

20、八个数码管,其余数码管显示横线。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常都是采用动态扫描的方法进行显示。3.3软件设计 这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。开始启动定时器按键检测时间显示 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。 主程序流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。 NYNYNY时

21、加1显示时间结束开始秒按键按下?秒加1分按键按下?分加1时按键按下? 按键处理流程图定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。N24小时到?分单元清零,时单元加1NNNYY时单元清零时间显示中断返回开始一秒时间到?60秒时间到?60分钟到?秒单元加1秒单元清零,分单元加1YY 定时器中断流程图 时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。时十位计算显示结束开

22、始秒个位计算显示秒十位计算显示分个位计算显示分十位计算显示时个位计算显示 时间显示流程图4实验结果与讨论 单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。4.1 硬盘调试拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。将万用表的探针放到单片机接电源的引

23、脚上检测一下,看是否符合要求。4.2 系统性能测试与功能说明(1).本设计以STC89C51为主控芯片.(2).显示部分主要器件为三个2位共阳红色数码管,驱动采用 PNP 型8550三极管驱动,各端口配有限流电阻。(3).冒号部分采用4个3mm的红色发光二极管。(4).按键 S1S3 占用 P3.2、P3.3、P3.4 口。 S1:功能选择键,按一下调节小时,按两下调节分钟,按三下调节闹钟小时,按四下调节闹钟分钟,按五下时钟开始工作。 S2:数值加一按键(调节时间时相应光标闪烁) S3:数值减一按键(调节时间时相应光标闪烁)初始化钟表时间为12:00:00。(5).闹铃电路由有源蜂鸣器和 PN

24、P 型三极管组成,初始化闹钟时间为06:30:00闹铃时间到时蜂鸣器鸣叫1分钟,按任意键可关闭铃声。4.3系统时钟误差分析时间是一个基本物理量,具有连续、自动流逝、不重复等特性。我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。结合时间概念和误差理论,可以定义电子钟的走时误差S=S1-S2,S1表示程序实际运行计算所得的秒;S2表示客观时间的标准秒。本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都

25、会造成与基准时间产生偏差,造成走时误差。4.4 软件调试问题及解决软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wav

26、e6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。5结论通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了PROTUES原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法。并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。我的动手能力得到了很大的提高,创新意识得到了锻炼

27、。通过硬件电路的调试,实现了预先设定的功能,设计主要用到的原件不多,最主要的是程序比较繁琐尤其是校时模块。显示模块以前都有学过,所以想对来说较为简单。这次设计就是让我们学以致用,将书本上学到的知识应用于实践。虽然在设计中遇到了不少困难,在我们通过自己的各种方式解决问题的同时,也提升了自己的专业水平。 这次课程设计,我收获了很多,在设计过程中遇到了不少困难,都在同学老师的帮助下一步步得到解决。我深深体会到团结合作,互相帮助是何等重要。还加深了对51单片机系列知识及其系统的认识。这个设计题目并不怎么新颖,但从中体现到了个系统开发设计的过程,让我们受益匪浅.在这次的设计中,让我更进一步的提高了动手能

28、力,也重新复习了一次单片机的程序编程能力,加强了对编程能力的理解和对相应资料的查阅。6参考文献1刘乐喜. 微机计算机接口技术及应用M.华中科技大学出版社.2石东海. 单片机数据通信技术从入门到精通.M.西安电子科技大学出版社.3谢自美. 电子线路设计、实验、测试.M.华中科技大学出版社.4李华,李东. MC51/98系列单片机原理与应用。M.机械工业出版社.5马忠梅. ARM&Linux嵌入式系统教程北京:北京航空航天大学出版社.6李建忠单片机原理及应用西安:西安电子科技大学.7韩志军. 单片机应用系统设计M.机械工业出版社.8周润景. Proteus在MCS-51&ARM7系统中的应用百例M

29、.电子工业出版社.9马忠梅. 单片机的C语言应用程序设计M.北京航空航天大学出版社.10刘树中. 单片机和液晶显示驱动器串行接口的实现J.附录仿真图程序硬件连接:数码管:段码为:P1 位码分别为:P2.5P2.0蜂鸣器:P2.7功能键k1:P3.4加建k2:P3.5减键k3:P3.6 */#include /51头文件sbit smg1=P25;/位码1声明sbit smg2=P24;/位码2声明sbit smg3=P23;/位码3声明sbit smg4=P22;/位码4声明sbit smg5=P21;/位码5声明sbit smg6=P20;/位码6声明sbit k1=P34; /按键k1的声

30、明sbit k2=P35; /按键k2的声明sbit k3=P36; /按键k3的声明sbit beep=P27;/蜂鸣器声明/*定义一些变量*/char d=0,e=0,a=0,b=0,n=0,shi=12,fen=0,miao=0,b_shi=6,b_fen=30,b_miao=0;char code table=/共阳级数码管码表0-90xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void init();/初始化函数声明void delay(int z); /带参数延时函数声明void display(char s,f,m);/带参数

31、显示函数声明void key();/按键控制函数声明void main()/主函数init();/调用初始化函数while(1)/主函数内大循环if(d=0)key(); /如果d=0则扫描按键函数if(shi=b_shi&fen=b_fen)/如果闹铃时间到 就蜂鸣器响if(d=1&!(k1&k2&k3)/ 任意按键按下关闭铃声e=1; /关闭闹铃标志位ed=0; /屏蔽按键函数标志位dif(e=0)/关闭铃声d=1; /屏蔽按键函数beep=0;/蜂鸣器鸣叫delay(10); /延时一会beep=1;/关闭蜂鸣器if(n=0|n=1|n=2)/如果处在功能键的0、1、2三个中的某个状态d

32、isplay(shi,fen,miao);/调用显示时钟if(n=3|n=4)/如果处在功能键的3、4中的某个状态display(b_shi,b_fen,b_miao);/调用显示闹铃时间void init()/初始化函数IE=0X8a;/1000 1010TMOD=0X01; /0001 0001选择定时器0的工作方式1选择定时器1的工作方式1TH0=(65536-50000)/256;/初值15536TL0=(65536-50000)%256;TR0=1; /开启定时器0TH1=(65536-50000)/256;/初值15536TL1=(65536-50000)%256;TR1=1; /

33、开启定时器1void timer0() interrupt1 /定时器0中断服务程序TH0=(65536-50000)/256;/进入中断重新赋初值15536TL0=(65536-50000)%256;/计数5万次(50毫秒)a+;/每进一次中断a加一if(a=20) /如果进入20次中断,正好一秒a=0; /a到20 就清零miao+;/a每计20次,秒加一if(miao=60) /秒到达60秒后清零,分加一miao=0;fen+;e=0;/闹铃标志位清零if(fen=60)/分到达60后清零,时加一fen=0;shi+;if(shi=24) /时到达24后清零shi=0;void time

34、r1() interrupt3 /定时器1中断服务程序,用来设置光标闪烁频率TH1=(65536-50000)/256;/进入中断重新赋初值15536TL1=(65536-50000)%256;/计数5万次(50毫秒)b+; /标志位b,用来确定光标闪烁频率if(b=20) b=0;/b=20 时被清零void display(char s,f,m)/带参数的显示函数,参数为s f msmg1=0;/打开数码管1位选P1=tables/10;/给数码管1赋值,值为小时的十位delay(1); /延时smg1=1; /关闭数码管1位选P1=0Xff; /关闭数码管1段选if(b10&(n=1|n

35、=3)/在1,3状态下,b10时,关闭数码管2 smg2=1; P1=0Xff;else /其他状态下,数码管2正常显示smg2=0;/打开数码管2位选P1=tables%10;/给数码管2赋值,值为小时的个位delay(1);/延时smg2=1; /关闭数码管2位选P1=0Xff; /关闭数码管2段选smg3=0;/打开数码管3位选P1=tablef/10;/给数码管3赋值,值为分钟的十位delay(1); /延时smg3=1; /关闭数码管3位选P1=0Xff;/关闭数码管3段选if(b10&(n=2|n=4) /在2,4状态下,b0;x-) /循环110*z次空函数for(y=110;y

36、0;y-);void key() /按键控制函数if(k1=0) /功能键k1被按下delay(5);/消抖延时if(k1=0)n+;/n记录功能键状态if(n4) n=0; /n清零while(k1=0);/等待松手if(n=0)/状态0,TR0=1;/定时器打开状态if(n=1)/状态1TR0=0;/关闭定时器0if(k2=0) /k2被按下delay(5);/消抖延时if(k2=0)shi+;/小时加一if(shi=24)shi=0;/达到24清零while(k2=0);/等待松手if(k3=0) /k3被按下delay(5); /消抖延时if(k3=0)shi-; /小时减一if(sh

37、i0)shi=23;/小于0,重新复制while(k3=0);/等待松手if(n=2)/状态2TR0=0; /关闭定时器0 if(k2=0) /k2被按下delay(5);/消抖延时if(k2=0)fen+;/分加一if(fen=60)fen=0;/分到达60 分清零while(k2=0);/等待松手if(k3=0) /k3被按下delay(5);/消抖延时if(k3=0)fen-;/分减一if(fen0)fen=59;/分小于0,分重新赋值59while(k3=0);/等待松手if(n=3)/状态三TR0=1;/开启定时器if(k2=0) /k2被按下delay(5);/消抖延时if(k2=0)b_shi+;/闹铃时间加一if(b_shi=24)b_shi=0;/闹铃时间清零while(k2=0);/等

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁