单片机电子钟课程设计文档.doc_第1页
单片机电子钟课程设计文档.doc_第2页
单片机电子钟课程设计文档.doc_第3页
单片机电子钟课程设计文档.doc_第4页
单片机电子钟课程设计文档.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

摘 要电子钟是一种利用数字电路来显示秒、分、时的计时装置,比指针式更加直观,电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现8位7段LED数码管(两个四位一体数码管)显示年月日时分秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时,。该电子钟设有四个按键K1、K2、K3、K4、K5、K6、K7和K8键,进行相应的操作就可实现校准时间日期、设置定时时间、日期显示、闹铃开启关闭、秒表、复位功能。具有时间显示、日期显示、整点报时、任意时间报时、秒表等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词: 电子钟;万年历;秒表;硬件设计;软件设计ABSTRACTClock is a digital circuit used to display the seconds, minutes, hours, timing devices, more intuitive than the pointer, electronic clock is widely used in life, and a simple and convenient digital electronic clock is more welcomed by people . Therefore, a simple digital electronic clock design is necessary. The electronic clock using ATMELs AT89S52 microcontroller core, using 12MHz crystal oscillator is connected with the MCU AT89S52, the method by software programming 8-bit 7-segment LED digital tube (two four one LED) display date when the minutes and seconds requirements, and in the course of time with timing, when the time arrived ahead of scheduled time to buzz a good timekeeping,. The electronic clock with four buttons S1, S2, S3, S4, S5, S6, S7 and S8 key, the appropriate action can achieve the calibration time and date, set the timer time, date display, turn off the alarm, stopwatch, reset function. A time display, date display, the whole point of time, any time timekeeping, stopwatch functions. Accurate travel time, visual display, stable operation and so on. Has a very high application value.Key words electronic clock; calendar; stopwatch; hardware design; software design目 录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务11.2 功能要求说明11.3 设计课题总体方案介绍及工作原理说明12 数字电子钟的硬件系统的设计22.1 数字电子钟硬件系统各模块功能简要介绍22.1.1 单片机最小系统模块22.1.2 输入模块22.1.3 输出模块22.1.4 电源模块22.1.5 下载口模块22.2 数字电子钟的电路原理图、PCB图、元器件布局图22.3 元器件清单23 数字电子钟的软件系统的设计33.1 数字电子钟使用单片机资源的情况33.2 数字电子钟软件系统各模块功能简要介绍33.3 数字电子钟软件系统程序流程框图33.4 程序清单94 设计结论、误差分析、教学建议104.1 数字电子钟的设计结论及使用说明104.1.1 设计结论104.1.2 使用说明104.2 数字电子钟的误差分析114.3 设计体会114.4 教学建议12结束语13致 谢14参考文献15附录A16附录B20301 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。具有时间显示、报时、日期显示、秒表等功能。能对时间、日期、闹铃进行调整。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.3 设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、8个独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示: 图1 总体设计方案图本电子钟的所有的软件、数据均存放在AT89S52的Flash ROM和内部RAM中。键盘采用动态扫描方式。利用单片机定时器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过P1端读入外部控制状态来改变程序的不同状态,实现不同功能,P1口把外部输入送到内部,经过软件处理,用软件控制P0和P2控制数码管的显示,软件和硬件相结合,通过输出和输入达到显示切换效果。2 数字电子钟的硬件系统的设计2.1 数字电子钟硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块、下载口模块。2.1.1 单片机最小系统模块包括低功耗、高性能CMOS8位微控制器AT89S52;复位电路;晶振电路。本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。通过这两个引脚在芯片外并接12MHz石英晶体振荡器和两只33pF电容。这样就构成一个稳定的自激振荡器。 2.1.2 输入模块本模块共用到了8个按键接到P1口上,8/个按键独立式键盘,K1键控制电子钟的启动调整状态,K2键为调分、调日秒表开启关闭,K3键为调分调月秒表清零退出秒表显示,K4调时调年,K5显示日期, K6调制年高位、整点闹铃, K7保存闹铃时间,K8闹铃开启关闭,且K1K8任一键都独自连一个I/O(P1.0P1.7)口线,它们可以独立实现相应的电子钟功能。2.1.3 输出模块本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,P0通过限流电阻后再接数码管段控口,P2通过8个PNP三极管方向驱动后接数码管位控口,通过P0和P2控制输出显示,P3.1通过三极管再接蜂鸣器。2.1.4 电源模块为了降低本设计的成本及节省设计时间采用PC机的USB口直接供电,一个限流电阻和LED灯构成电源供电显示灯。2.1.5 下载口模块用于把编好的程序生成的hex文件下载到单片机中。2.2 数字电子钟的电路原理图、PCB图、元器件布局图Protel软件绘制的原理图和PCB图及元器件布局图见附录A。2.3 元器件清单元器件清单见附录A。3 数字电子钟的软件系统的设计3.1 数字电子钟使用单片机资源的情况 数字电子用了单片机内部的两个定时器,都采用中断方式工作,定时器0用于时间计时,定时器1用于秒表计时,P0口输出数码管段选信号,段选显示采用查表法,P2口输出数码管位选信号;P1接八个按键,采用独立式键盘,P3.1接蜂鸣器用于闹铃报时。3.2 数字电子钟软件系统各模块功能简要介绍 本设计的软件系统主要采用以下基本模块来实现,主函数、中断服务函数、显示函数模块、键扫函数模块和延时函数模块。主函数模块:主要是用于对输入信号的处理、输出信号的控制和对各个功能函数模块的运用及其控制。定时器0中断服务函数模块:主要是用于电子钟的准确运行。定时器1中断服务函数模块:主要是用于秒表的准确运行。键扫函数模块:主要是用于确定按键并执行相对应的键功能。显示函数模块:主要是用于驱动数码管及利用数码管显示日期和时间。延时函数模块:主要是数码管动态显示延时,延时1ms。3.3 数字电子钟软件系统程序流程框图系统软件采用C语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteus 进行仿真,测试其功能是否能实现,仿真能实现功能后再下载到实际硬件中检测其功能是否能实现。整体流程框图如图2所示图2 整体流程框图主函数流程框图如图3所示 图3 主函数流程框图延时函数流程框图如图4所示图4 延时函数流程框图键扫描函数流程框图如图5所示图5 键扫描函数流程框图显示函数流程框图如图6所示图6 显示函数流程框图(6)定时器0中断服务函数流程框图如图7所示图7 定时器0中断服务函数流程框图定时器1中断服务函数流程框图如图8所示图8 定时器1中断服务函数流程框图3.4 程序清单程序清单见附录B4 设计结论、误差分析、教学建议4.1 数字电子钟的设计结论及使用说明4.1.1 设计结论通过软件对两个四位一体LED数码管的显示控制以及单片机接八个独立式键盘作为输入硬件电路进行操作,软件和硬件结合下,实现了显示时分秒,万年历,秒表,整点闹铃,一个随用户设定时间的闹铃,同时还可实现对该电子年月日钟时分秒进行调整的功能。闹铃时间调整,闹铃开启和关闭都有开关控制,而且闹铃可以报时关闭。4.1.2 使用说明该数字电子中上电就显示P.并不断闪烁,K1键是启动/调整键,首次按下K1键电子钟从2000年1月1日0时0分0秒开始计时,显示时分秒,LED2 和LED5显示-.,LED2点表示整点闹铃开启,LED5点表示定时闹钟开启,定时闹钟系统设定为0时2分。初始状态闹铃都打开,秒表关闭。(1) 时分秒使用:在显示时分秒调整状态下通过K2、K3、K4可以调整时分秒,K2每按一次秒加1,如果超过60清零,K3每按一次分加1,若果超过60清零,K4每按一次时加1,如果超过24清零,如果再次按K1进入启动状态,该状态下不能调整时间。(2) 秒表使用:在启动状态下,按可以K2开启秒表并显示秒表从0毫秒0秒0分0时开始计时,如果秒表计时再次K2按下秒表暂停,显示秒表时间状态下按K3,秒表计时清零并退出返回以前显示(时分秒或年月日),如果秒表在计时状态下按下K3,再次按K2键显示计时时间,计时时间为退出显示到这次按K2键间隔时间。(3) 万年历使用:按K5键可以实现年月日显示,再次按K5,回到上次显示界面,在调制状态显示为年月日,每按一次K2日加1,如果超过该月的天数就变1,每按一次K3月加1,如果日超过该月的天数,日就变1,每按一次K4年加1,如果日超过该月的天数,日就变1,每按一次K6年加100,超过10000就把保留十位和个位其他位清零,如果超过该月的天数就变1。如果再次按K1进入启动状态,该状态下不能调整年月日。(4) 整点闹钟使用:在启动状态下,按K6可以关闭/开启整点闹铃,显示时间LED2的点熄灭表示已关闭,反之则为开启状态。(5) 定时闹钟使用:在调制时分秒在状态下,按下K7键就保存当前的时分作为每天闹铃时间,在任意状态下,按K8可以关闭/开启整点闹铃,显示时间LED5的点熄灭表示已关闭,反之则为开启状态。4.2 数字电子钟的误差分析 该电子钟运行一小时误差为1S,误差产生有两个种可能,首先是采用的计时方案是软件计时的,计时利用定时器0中断方式来实现定时,满20次为一秒钟,执行完正在执行语句才能执行中断程序,产生3到8微秒的误差,当然这个误差是避免不了的。第二,设计用的晶振,实际值和标称值12MHz之间的误差。 秒表计时误差分析,定时器1中断方式用于秒表计时,中断方式计时每次计时本身有3到8微秒误差;定时器0的中断优先级高,如果同时产生中断时,定时器1的中断请求信号不能响应;设计用的晶振,实际值和标称值12MHz之间的误差。4.3 设计体会 本次课程设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。在硬件设计过程遇到了不少困难,第一使用Protel软件画图遇到了许多困难,通过在网上看视频学习软件操作,在做PCB封装时按照视频介绍的常用封装,转化为PCB图时视频说的常用封装是贴片封装,在绘制原理要有耐心,做封装是要以元器件实物测量为准,在打印之前查出错误还可以纠正,在打印PCB图后,用熨斗转印到覆铜板上,采用点定位,不能急于求成,转印好与差决定你用油笔画的多少,打孔机打孔后孔上碳粉没了,只能通过油笔画才能腐蚀,吸取先行者的只画两次,焊盘被腐蚀的教训,我用油笔画了四次,画的较大,结果腐蚀后焊盘过大,他画的太浅焊盘腐蚀,我画的颜色深,焊盘没有被腐蚀。根据别人的经验,通过自己实践才能真正学会。绘图室焊盘内径应该比管脚可以小,打孔针偏一点也不会影响整个焊盘。发现在硬件检测时不能下载,查了很久,自己的原理图查了很久没错,后来比照参考原理图才发现自己的原理图下载两根线接错了,在绘图要细心和耐心。 在软件设计时理不清头绪,无从下手,显示程序和键扫程序不知道怎么写,看一些关于键扫和显示的程序后,但通过认真研究设计课题,找资料。在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我先是要求在运行时没有语法错误,再通过与Protues调试看有没有逻辑错误,本次设计中出现很多的逻辑错误,特别是万年历中遇到逻辑错误,通过查程序错误,修改程序再次调试,最好的调试方法是先单一功能调试,再加入主程序中达到实现该功能。对于程序调试要非常有耐心,可能陷入自己逻辑误区不能自拔,休息后再查或请教他人。编程思路是整个程序的灵魂,在开始编程之前,想好编程的思路,编程能力才会提高,编程的过程才会顺畅。但我写程序没有把整个思路理清楚,每个功能是单一程序,导致占用存储空间大。但是写程序时我们一般没考虑程序占用的存储器空间有多大,你的程序编的再好,存储器放不下,那你就只能增加硬件或修改程序,本次程序设计中就应为存储空间不够,还有些可附加功能没能实现,仿真中能实现的功能,在实物中并不能实现,有些实物中能实现仿真中不能实现,像我程序中得强制关闭闹铃功能在仿真中不能实现,但在实物中能实现。程序能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。程序只有和硬件相结合才能实现功能,程序不能脱离硬件,特别是硬件的存储空间。本次设计中因为时间原因,初次编写程序,一些可以简单的程序写的太复杂,占用太多存储空间,导致闹铃功能不够完美,程序设计好之后很难跳出自己这种程序思路,用C语言编写的,导致自己汇编没以前那熟练,这是因为自己看的写的程序太少,导致自己程序占用存储器空间过大,思路单一。以后要多看多写程序,培养自己编程思路。4.4 教学建议经过一个学期王韧老师教导的的单片机学习,我掌握了很多单片机学习的宝贵经验。在王韧老师的教学过程中,幽默轻松的教学方式常常让课堂气氛很活跃,幽默诙谐,授课内容条理清晰,经常运用各种实例,娓娓道来,给人印象深刻。王老师在课堂上也十分注重和同学们的互动,经常会用一些实践的经验为例,让同学们在基于事实的基础上更好的理解相关理论,在设计中避免自己犯错误,充分做到了理论与实际的结合,既形象生动,又丰富有趣。加强程序设计思路培用,程序思路是程序设计的灵魂,像我们自己写的程序如何写流程框图,写的那没清晰易懂,导致读别人的程序会有困难,如果程序设计思路开阔,读程序也轻松,别人程序中精华更好的为己所用,占用存储空间也小。多讲解软硬件相结合的综合性程序,比讲多个子程序设计效果更好,让我们可以学到不同的思路,找出不同编程思路中得精华,可以减轻同学们对于实物软件设计的恐惧感。同样的功能,采用什么思路可以减小占用存储空间,每个程序的亮点。结束语这次数字电子钟的设计通过对自己在这学期里所学的知识的回顾,灵活运用所学的知识,子程序实现的功能大部分是自己曾经编写过程序,本次课程设计多个简单功能程序结合后的综合运用,提高自己的编程能力。这次课程设计是运用已有的专业基础知识,对其进行设计、分析和解决一个实际问题,把所学的知识运用到现实生活中,培养了我运用所学知识解决实际问题的能力,也为以后打下很好的基础。本次设计实现了数字电子钟的万年历、时分秒、定时闹铃、整点闹铃和秒表功能,但时间精准度不太理想,比实际时间慢,误差主要是软件定时是采用定时器中断定时不精准带来的,还有些附加功能没能实现,程序虽然通过很多次修改但还是有不足之处,程序编的很复杂占用大量存储空间,导致定时闹铃不能在开启时调整闹铃。还可以增加12小时转换、音乐闹铃等附加功能。致 谢 通过不断努力,终于完成了此次单片机的课程设计。在此,首先感谢王韧老师,正是他在万忙之中还抽出宝贵的时间对我们进行精心的指导,才使我顺利完成了此次单片机课程设计。同时也感谢各位同学和老师对我提供的帮助,特别是肖文广同学在硬件设计过程给了很大帮助,让我避免不少的错误。使我在此次设计中学到了许多宝贵的知识和经验。在此,衷心地感谢你们!参考文献1李广第.单片机基础M.第三版.北京:北京航空航天大学出版社2006.249253Li Guangdi crocontroller based on M, Third Edition Beijing: Beijing Aerospace Univerdity Press 2007. 249253 (in Chinese)2马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计.第四版. 北京:北京航空航天大学出版社.2006.8093Ma Zhongmei, Ji Shunxin, Zhang Kai, Ma Yan. Microcontroller C language app-lication design M. Fourth Edition.Beijing: Beijing University of Aeronautics and Astronautics Press.2006.80 93(in Chinese)附录A图A1 原理图图A2 PCB顶层图图A3 PCB底层图图A4 元器件布局图表A1 元器件清单 Part TypeDesignatorFootprint470RP6AXIAL-0.3.S4KAIGUAN470RP7AXIAL-0.3.S5KAIGUAN470RP3AXIAL-0.3.S2KAIGUAN470RP2AXIAL-0.3.S3KAIGUAN470RP4AXIAL-0.3.S6KAIGUAN470RP1AXIAL-0.3.S9KAIGUAN470RP0AXIAL-0.3.S1KAIGUAN9012Q3PNP.S7KAIGUAN9012Q1PNP.S8KAIGUAN9012Q2PNP.SSKAIGUAN69012Q6PNP1KR12AXIAL-0.39012Q5PNP1KR13AXIAL-0.39012Q8PNP1KRQ2AXIAL-0.39012Q7PNP10KJ2SIP99012Q4PNP10KJ5SIP99052Q9PNP12MHzY1CTAT89S52U1DIP4022uFC3C+BELLLSIBELL33pFC1CCON2JP5SIP233pFC2CCON2JX2SIP2200RQ1AXIAL-0.3CON2J1SIP2470R04AXIAL-0.3CON8JP3SIP8470R00AXIAL-0.3CON8JP4SIP8470R01AXIAL-0.3CON8JP1SIP8470R03AXIAL-0.3CON8JP2SIP8470R07AXIAL-0.3LED1LED1SHUMAGUAN470R06AXIAL-0.3LED2LED2SHUMAGUAN470R23AXIAL-0.3LEDD7D470R22AXIAL-0.3LEDD6D470R21AXIAL-0.3LEDD9D470R20AXIAL-0.3LEDD8D470R27AXIAL-0.3LEDD5D470R02AXIAL-0.3LEDD1D470R05AXIAL-0.3LEDD3D470R24AXIAL-0.3LEDD4D470R25AXIAL-0.3LEDD2D470R26AXIAL-0.3USBJ3USB470RP5AXIAL-0.3下载口JXIAZAIKOU附录B */项目名称: 数字电子钟/项目设计者: /项目设计时间: 2011年12月23日/项目功能:电子钟上电或按键复位后能自动显示系统提示符“P.”, 并不断闪烁进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。电子钟能显示年月日、时分秒、秒表,任意时间闹铃,整点闹铃/*/* crystal=12Mhz */#include#define uchar unsigned char#define uint unsigned int sbit kaig=P10; /*启动/调制键*/ sbit ksec=P11; /*调整秒/日/秒表开关*/ sbit kmin=P12; /*调整分/月/显示秒表*/ sbit khour=P13; /*调整时/年的低两位*/ sbit date=P14; /*显示日期开关*/sbit bai=P15; /*调整年高二位/整点闹钟开关*/ sbit save=P16; /*保存设置的闹铃时间*/sbit offl=P17; /*闹铃开关*/sbit loud=P31; /*扬声器*/uint num=0,sec=0,min=0,hour=0,hao=0,miao=0,fen=0,shi=0;/ 计时 秒 分 时毫秒 秒 分 时uint day=1,mou=1,year=2000,dx=0,co=0,stopnao=0,shour=0,smin=2;/ 日 月 年 显示 整点/闹铃开关 时 分uchar secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;/时间 秒个位 秒十位 分个位 分十位 时个位 时十位 uchar i=0, flag=0, j=0, yearqian=0, yearbai=0;/ 上电标志 电子钟启停标志 秒表启动标志 年千位 年百位uchar moushi=0,mouge=0,dayge=0,dayshi=0,yearshi=0,yearge=0;/ 月十位 月个位 日个位 日十位 年十位 年个位uchar haoshi=0,haoge=0,miaoshi=0,miaoge=0,fenge=0,fenshi=0,shige=0,shishi=0;/秒表 毫秒十位 个位 秒十位 秒个位 分个位 分十位 时个位 时十位 Unsigned char code table10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/* *0*1*2*3*4*5*6*7*8*9*/void delay(unsigned int z); /延时1ms函数void time0(); / 定时器0中断方式工作void time1(); / 定时器1中断方式工作void display(); /显示子程序 void keyscan(); /键扫描键功能子程序/*/函数名: main()/功能: 主函数 /调用函数:display(),keyscan()/*/ main() TMOD=0x11; P3=0X0FF; IP=0X02; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-10000)/256; TL1=(65536-10000)%256; EA=1; /*开启中断总开关*/ ET0=1; /*开启定时器0中断*/ i=0; /*控制显示,开关是否开启过*/ TR0=0; /*关闭定时器*/ ET1=0; TR1=1; while(1) keyscan(); display(); /*/函数名: void delay(uint z)/功能: 延时时间为1ms/输入参数:z,1ms计数/说明: 总共延时时间为1ms乘以z,crystal=12Mhz/*/void delay(unsigned int z) unsigned int x,y,a; for(x=z;x0;x-) for(y=142;y0;y-) for(a=2;a0;a-); /*/函数名: void time0()/功能: 定时50ms/说明:用于电子钟时间/*/void time0() interrupt 1 using 2 num+; /中断次数 TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(num=20) /*1s才变化显示*/ num=0; sec+; if(sec=60)/分 sec=0; min+; if(min=60)&(!co) loud=0; if(min!=60) loud=1;if(min=smin)&(hour=shour)&(!stopnao) loud=0;if(min=(smin+1)&(hour=shour) loud=1; if(min=60)/ /时 min=0; hour+; if(hour=24) hour=0; min=0; sec=0;day+;/日 if(mou=1)|(mou=3)|(mou=5)|(mou=7)|(mou=8)|(mou=10)|(mou=12) if(day=32) day=1;mou+;goto ww; if(mou=4)|(mou=6)|(mou=9)|(mou=11) if(day=31) day=1;mou+;goto ww; if(year%4=0)&(year%100)!=0)|(year%400=0)&(mou=2) if(day=30) day=1;mou+;goto ww; if(mou=2)if(day=29) day=1;mou+; ww:if(mou=13) mou=1;year+;/年 if(year=10000) year=0; /*/函数名: void time1()/功能: 定时10ms/说明: 用于秒表计时/*/ void time1() interrupt 3 using 3 hao+; TH1=(65536-10000)/256; TL1=(65536-10000)%256; if(hao=100)/*/ hao=0; miao+; if(miao=60)/*/ miao=0; fen+; if(fen=60)/*/ fen=0; shi+; if(shi=24)/*/ shi=0; /*/函数名: display()/功能: 八位LED数码显示/说明: 显示时间/显示年月日/显示秒表,显示时间LED3点表示整点闹铃已打开,显示时间LED6点表示定时闹铃已打开/*/void display() if(i=1)&(j=0)&(dx=0)/显示时间 secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2=0xfe; P0=tablesecge; delay(1); P2=0xff; P2=0x0fd; P0=tablesecshi; delay(1); P2=0xff; P2=0x0fb; if(co=1)P0=0xbf; /整点报时关闭 else P0=0x3f; /整点报时开启 delay(1);P2=0xff; P2=0x0f7; P0=tableminge; delay(1); P2=0xff; P2=0x0ef; P0=tableminshi; delay(1); P2=0xff; P2=0x0df; if(stopnao=1)P0=0xbf; /闹铃关闭 else P0=0x3f; /闹铃开启 delay(1); P2=0xff; P2=0x0bf; P0=tablehourge; delay(1); P2=0xff; P2=0x7f; P0=tablehourshi; delay(1); P2=0xff; if(i=1)&(j=1) /显示秒表 haoge=hao%10; haoshi=hao/10; miaoge=miao%10; miaoshi=miao/10; fenge=fen%10; fenshi=fen/10; shige=shi%10; shishi=shi/10; P2=0xfe; P0=tablehaoge; delay(1); P2=0xff; P2=0x0fd; P0=tablehaoshi; delay(1);P2=0xff; P2=0x0fb; P0=tablemiaoge-0x80;/显示.隔毫秒和秒 delay(1);P2=0xff; P2=0x0f7; P0=tablemiaoshi; delay(1); P2=0xff; P2=0x0ef; P0=tablefenge-0x80;/ 显示.隔秒和分 delay(1); P2=0xff; P2=0x0df; P0=tablefenshi; delay(1); P2=0xff; P2=0x0bf; P0=tableshige-0x80; / 显示.隔时和分 delay(1); P2=0xff; P2=0x7f; P0=tableshishi; delay(1); P2=0xff; if(i=1)&(dx=1)&(j=0) /显示年月日 dayge=day%10; dayshi=day/10; mouge=mou%10

温馨提示

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

评论

0/150

提交评论