毕业设计(论文)基于单片机的多功能电子钟的设计与实现.doc
摘要基于51单片机可校时数字时钟电路设计,单片机计算机即单片微型计算机。(Single-Chip Microcomputer )是集CPU ,RAM ,ROM ,计数和多种接口于一体的微控制器。石英晶体振荡器是高精度的计时工具,而电子钟,石英表,石英钟都采用了石英技术,因此计时精度高,稳定性好,使用方便,不需要经常调校。而数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。本文利用单片机实现数字时钟计时功能的主要内容,其中AT89S52是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。本设计由单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机数字时钟。关键词:单片机;数字时钟;LED数码管显示;按键AbstractThe base and 51 digital clock when the microcontroller can be the school circuit design, single-chip computer that is single-chip micro-computer. (Single-Chip Microcomputer) is a CPU, RAM, ROM, counting and multiple interfaces in one microcontroller.Quartz crystal oscillator is a high-precision timing tools, electronic clock, quartz watch, quartz is used quartz technology, high precision timing, good stability, easy to use, does not require frequent adjustment. The digital electronic clock with the time integrated circuits, the decoding instead of mechanical transmission, with LED display instead of a pointer display and then display the time and reduce the timing error, this table has the hours, minutes and seconds displays the time function, but also in progress and sub-proof-reading, the flexibility of a good chip select. In this paper, MCU function digital clock timing the main contents of which AT89S52 is a core element at the same time the use of digital control dynamic display "time", "sub", "second" modern timing devices. Compared with the traditional mechanical watch, it has a travel-time accuracy, display and intuitive and so on. It is a time period of 24 hours, substantially full-scale as "23:59:59", another time with a school function, memory function after power outages, power restoration can be realized when the time synchronization and so on.The design by the MCU AT89S52 chip and LED digital tube as the core, supplemented by the necessary circuitry to form a single chip digital clock.KEY WORDS: shrapnel machine;digital clock;LED digital tube display;button目 录1 绪论11.1 电子时钟的发展1选题背景和意义1电子时钟的国内外研究现状22 电子钟功能及AT89S52 芯片简介22.1 电子钟功能介绍2基本功能要求2扩展功能要求32.2 AT89S52 芯片简介3内部结构33 基本原理及总体方案的介绍431基本原理4时钟方案43.2.1 计时方案43.2.2 定时方案4键盘方案5显示方案54 电子钟的工作原理5实现时钟计时的基本方法65 软件系统设计6各模块的划分6数码管显示模块6定时器计数器T0中断服务程序:7按键处理模块:7主程序及各模块执行流程图85.2.1 主程序流程图8中断子程序流程图:9键扫程序设计流程图10各个按键处理程序流程图11显示子程序流程框图12时间子程序流程图:136 系统调试14测试的目的14测试的重要性14软件调试14测试数据与数据分析147 误差分析15总 结15参考文献16致 谢17附录一18附录二281 绪论1.1 电子时钟的发展近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。单片机的应用的重要意义在于,它从根本上改变了传统意义设计理念和设计方法。曾经必须要通过模拟电路或者是数字电路实现的功能,单片机应用软件技术就可以实现,这种微控技术不仅简化了电路,而且还可以改变软件程序或者参数实现不同的设计。数字钟已经成为人们日常生活中不可缺少的必需品,广泛的应用于家庭以及办公室等公共场所。给我们生活、学习、工作、娱乐带来了极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字中集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时功能也可以完成数字钟的电路设计,因此进行数字钟的设计是必要的。本次设计的多功能数字钟就是应用单片机的计时功能为设计核心。20世纪末,电子技术得到了极速的发展,毫无疑问,在其推动下,现代电子产品以及各种高科技产品几乎渗透到了社会的各个领域,这有力地推动了社会生产力的发展和社会信息化程度以及综合科技水平的提高,但产品更新换代的频率也越来越快。随着科技的发展社会的进步和全球化竞争的日益激烈,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能电子钟不管在性能还是在样式亦或是用途上都发生了重大的变化,许多电子钟都已具备电子闹钟、电子秒表、温度检测等功能。同时单片机在多功能数字钟中的应用已是非常普遍的。数字电子时钟是采用数字电路实现对时,分,秒数字显示的装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可或缺的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。例如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电器的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟。而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。数字电子时钟,自从它发明的那天起,就成为人类的朋友,给人们的生活、学习、工作、娱乐带来极大的方便。但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。可以说时间的准确已成为各行各业安全运行的基础,如果时间出现误差而不能及时校正,会造成一系列严重的后果和经济损失 。 电子时钟的设计方法有多种,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用对单片机编程来实现电子钟。其中,利用单片机实现的电子时钟具有硬件结构简单、编程灵活、便于功能扩展等特点。由单片机作为数字钟的核心控制器,可以通过它的时钟信号实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术或者数码管显示技术。2 电子钟功能及AT89S52 芯片简介2.1 电子钟功能介绍2基本功能要求 时间以24小时为一个周期; 显示时、分、秒; 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;当没有按键按下的时候,时钟正常显示,初始化时间为9:00:00.当设置按键按下的时候,时钟进行设置动作,按键处理设置为:当第一次按下K0按键时候,进入调秒状态时钟停止走动,按下K1键可以对秒个位进行加1操作,按下K2键的时候可以对秒个位进行减1操作。当第二次按下K0按键时候,进入调秒十位状态,按下K1可以对秒十位进行加1操作,按下K2可以对秒十位进行减1操作。第三次,第四次,第五次,第六次按下K0分别对分钟的个位、十位、小时的个位、十位进行调整,K1进行相应的加操作,K2进行相应的减操作。当K0第七次按下的时候时钟恢复正常走动,退出调时间的模式。2扩展功能要求 时、分、秒的间隔符“-”以一定频率闪烁; AT89S52 芯片简介2内部结构AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,4k B Flash片内程序存储器,128 B的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。主要功能特性: 主控器(AT89S52)的主要性能特点是:(1)与MCS-51单片单片机产品兼容;(2)8K字节在系统可编程Flash存储器;(3)1000次擦写周期; (4)全静态操作:0Hz-33MHz; (5)三级加密程序存储器; (6)32个可编程I/O口线; (7)三个16位定时器/计数器; (8)六个中断源; (9)全双工UART串行通道; (10)低功耗空闲和掉电模式; (11)掉电后中断可唤醒; (12)看门狗定时器; (13)双数据指针; (14)掉电标识符 。3 基本原理及总体方案的介绍31基本原理本设计基于单片机技术原理,以单片机芯片AT89S52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LED显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,以单片机为核心, 配以一定的外围电路和软件。硬件是整个系统的基础, 软件部分则要合理、充分地支持和使用系统的硬件, 从而完成系统所要完成的任务。该时钟系统主要由时钟模块、液晶显示模块、键盘控制模块组成。能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。单片机在这种情况下诞生了基于单片机电子时钟。下面,就对时钟系统的几大模块制定一下具体的方案。3.2时钟方案 计时方案利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。 定时方案在本设计中用到了几个定时模块,第一个定时是用于定时一秒的,用到了单片机的定时器TR0,在定时的过程中采用的是查询的方式,查询定时时间是否到的定时器所采用。第二个定时是用于定时按键的抖动时间,因为当按键时都会出现电压抖动,但对键盘工作有影响的是键闭合时的抖动,所以为了确保键扫描的正确性,每当扫描到有闭合键时,都要进行去抖动处理。本设计中采用的是软件去抖动的方法,抖动的定时采用的软件的延时进行定时的。第三个定时的功能是在液晶显示时的延时时间,即在液晶显示时是采用查表的方法进行显示的,因此需要用到一定的延时,使得我们能够看的清楚所显示的内容,在这里用到的延时也是采用软件的延时。3.2.3键盘方案在本次程序设计中对于键盘的设计,我专门设计了一个键盘扫描子程序,它所完成的功能是,首先对键盘进行处理,给每一个键都设置了一个键码,那么只要判断键盘的键码就可以知道是否有键按下,如若有键按下也可以判断是哪一个键按下了。在按键的程序扫描中是采用查询的方法对按键进行操作的,当查询到按键有动作时,则执行相应的操作。独立式键盘的程序设计一般把键盘扫描程序设计成子程序,以便其它各程序调用。本设计中的键盘扫描子程序的名称为KEY,则键盘扫描子程序KEY应具有以下功能:判定有无按键动作;去抖动;确认是否真正有闭合键;计算并保存闭合键键码;判定闭合键是否释放;恢复闭合键键码。3.3.4显示方案本系统公用4.个二合一数码管,从右到左依次显示秒个位,秒时位,分隔符,分个位,分十位,分隔符,时个位,时十位。数码管显示的信息用8个内存单元存放,这个8内存单元为显示缓冲区,其中秒个位和秒十位,分个位和分十位,时个位和时十位分别由秒数据,分数据和小时数据分拆得到。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息字字段码,显示的时候,先从显示缓冲区中取出显示信息,然后通过查表程序在字断码表中查出的所显示的字断码。从P0口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。4电子钟的工作原理4.1实现时钟计时的基本方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。假设使用T/C0,方式1,50ms定时,fosc=12MHz。则初值X满足(216-X)×1/12MHz×12s =50000sX=155363CB0H(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。5软件系统设计各模块的划分5数码管显示模块本系统共用4个二合一数码管,从右到左一次显示秒个位,秒时位,分隔符,分个位,分十位,分隔符,时个位,时十位。数码管显示的信息用8个内存单元存放,这个8内存单元为显示缓冲区,其中秒个位和秒十位,分个位和分十位,时个位和时十位分别由秒数据,分数据和小时数据分拆得到。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息字字段码,显示的时候,先从显示缓冲区中取出显示信息,然后通过查表程序在字断码表中查出的所显示的字断码。从P0口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示缓冲区的内容。AT89S52电路显示方框图LED显示器有静态显示方式和动态显示方式两种。静态显示就是当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。LED显示器工作于静态显示方式时,各位的共阴极接地;若为共阳极则接+5V电源。每位的段选线分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。正因为如此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多。因此,在显示位数较多的情况下,一般都采用动态显示方式。由于所有8位段皆由一个I/O口控制,因此,在每一瞬间,8位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴,故应送低电平),以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(共阳)极公共端分别由相应的I/O口线控制,实现各位的分时选通。段选码,位选码每送入一次后延时1MS,因人的视觉暂留时间为(100MS),所以每位显示的时间不能超过20MS,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。这种方式称为软件扫描方式。5定时器计数器T0中断服务程序:定时器计数器T0用于时间计时,选择方式1,重复定时,定时时间设为50MS,定时时间到则溢出中断,在中断服务程序中用一个计数器对50MS计数,计20次则对秒单元加1,秒单元到60则对分单元加1,同时秒单元清零。分单元加到60的时候,则对时单元加1,同时分单元清零,时单元加到24的时候则对时单元清零,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的制定位置。5按键处理模块:按键处理设置为:如果没有按键,则时钟正常走下去,当第一次按下K0按键时候,进入调秒状态时钟停止走动,按下K1键可以对秒个位进行加1操作,按下K2键的时候可以对秒个位进行减1操作。当第二次按下K0按键时候,进入调秒十位状态,按下K1可以对秒十位进行加1操作,按下K2可以对秒十位进行减1操作。第三次,第四次,第五次,第六次按下K0分别对分钟的个位、十位、小时的个位、十位进行调整,K1进行相应的加操作,K2进行相应的减操作。当K0第七次按下的时候时钟恢复正常走动,退出调时间的模式。5.2主程序及各模块执行流程图5 主程序流程图主程序先对现实单元和定时器计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下,则转入相应的功能程序。开始T0、方式1设为16位计数器模式允许T0中断,设中断次数为20次清零计时单元开中断启动T0调用显示子程序.2中断子程序流程图:T0中断保护现场20次中断到否秒单元加1单元清零恢复现场、中断返回NY5.2.3键扫程序设计流程图5.2.4各个按键处理程序流程图开始对“时”闪烁对“秒”闪烁对“分”闪烁NNK0按下NK0按下K0按下YYY按键消抖按键消抖按键消抖NNNK1按下K1按下K1按下YYY按键消抖按键消抖按键消抖YYNNN子程序返回秒加一K2按下K2按下K2按下时减一按键消抖时加一分减一按键消抖分加一秒减一按键消抖Y5.2.5显示子程序流程框图 5.2.6时间子程序流程图:6 系统调试如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。 1. 软件测试是为了发现错误而执行程序的过程; 2. 测试是为了证明程序有错,而不是证明程序无错误; 3. 一个好的测试用例是在于它能发现至今未发现的错误; 4. 一个成功的测试是发现了至今未发现的错误的测试。 软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。系统仿真分析电路原理图在ISIS里设计完成,并将系统软件编译成.Hex文件,再进行电子时钟的系统虚拟仿真 。(1)在ISIS的原理图中,右键单击AT89S52将其选中,然后单击左键打开AT89S52的Edit Component 对话框。(2)选择相应的.Hex文件,再在Proteus ISIS 编辑窗口的File菜单中选择Save Design 选项,保存设计,生成.DSN文件。6.4测试数据与数据分析在Proteus ISIS的Debug菜单中选择Execute,运行程序。实现功能的具体方法:当进入调整功能时,按第一个键K1进行加运算,按第二个键K2进行减运算。按下第三个键K0,实现时间调整功能,等数字闪烁后,按一二键进行加减,从而可以进行具体时间调整。时间显示格式为:时-分-秒。7 误差分析本数字电子钟在跟标准的电子钟比较时,时间稍微慢一点,产生此种情况的原因有:其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。其二是晶振不够标准,使得定时器定时时不够精准。总 结过去人们应用时钟仅仅是为了明确当前时间。随着生产力的发展,社会的进步,生产生活对时钟的需求越来越大,对时钟的体型、功能的要求也各有不同。所以多功能电子时钟在今后的应用也会越来越广泛。基于单片机实现电子时钟,仅仅是众多方法之一。并且市场上的实际时钟日历芯片品类繁多,IC化的传感器各种各样,显示方式也愈趋于人性化。所以多功能电子时钟有多种实现方案,能够实现的功能也有很多,笔者已经通过仿真和调试,实现了时间的显示和校对功能。本文采用51单片机C语言进行编程,当然也可以应用汇编语言。由于笔者的能力有限,提供的程序还可以进一步优化,并且还可以根据需求为电子时钟增设新的功能。本课题由两个人共同完成,我个人负责软件的建立与调试。在系统的设计过程中我们小组两个人是分别完成自己所负责的模块,遇到的问题一起商量解决,这样就避免了有些问题彼此都不了解从而对这次的毕业设计达不到最好的效果。由此,我们深深体会到在团队合作中实时沟通的重要性。毕业设计是大学本科学习阶段的一次非常难得的理论与实际相结合的锻炼机会,通过这次“基于单片机的多功能电子钟的设计与实现”的课题开发,不仅锻炼了自己运用所学的专业基础知识,并且更重要的是很好的锻炼了我们解决实际问题的能力。在设计的过程中遇到不会的知识点要查阅大量的文献资料,在不断地发现问题与解决问题的过程中使自己进一步认识到不怕困难,刻苦钻研的重要性。最重要的是通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使自己的综合能力得到了提高。我认为这正是我们学校让毕业生进行毕业设计的目的所在。 最后,顺利如期的完成本次毕业设计,但由于自身能力的问题,本设计还是并不是完美的,还存在许多的不足,比如:1.界面太过于简单;2. 所实现的功能太少。这些无疑是很让我感到遗憾的,可这些不足正是我们去更好的研究更好的创造的最大动力,只有发现问题、面对问题,才有可能解决问题。我会积极的面对这些问题,努力提高自己的专业知识和能力!参考文献1 徐爱钧单片机原理实用教程基于Protrues虚拟仿真M北京:电子工业出版社.2009-1 2 李萍AT89S52单片机、原理、开发与应用实例M北京:中国电力出版社2008-73 张晔、王玉民等单片机应用技术M 北京:高等教育出版社2006-34 付家才等单片机控制工程实践技术M 北京:化学工业出版社2004-55李广弟等.单片机基础(修订版)M.北京航空航天大学出版社.20016何立民.单片机高级教程-应用与设计(第2版). 北京航空航天大学出版社,20077于学禹.Protel 2004电路设计入门与应用M.机械工业出版社.20078周航慈.单片机应用程序设计技术(修订版) M.北京航空航天大学出版社.20039李华. MCS-51系列单片机实用接口技术M.北京航空航天大学出版社.200110杨金岩等. 8051单片机数据传输接口扩展技术与应用实例M.人民邮电出版社.200511 谢自美电子线路设计实验测试 M武汉:华中科技大学出版社200312 刘守义单片机应用技术M成都:西安电子科技大学出版社.2002.1314 李叶紫王喜斌.胡辉.孙东辉.编著MCS_51单片机应用教程清华大学出版社2008.6.15 闫玉德、俞红.MCS-51单片机原理与应用(C语言版).机械工业出版社(49-104页 单片机的C程序设计)16 辛友顺、胡永生、薛小玲.单片机应用系统设计与实现.福建科学技术出版社(184-186页 LED显示接口,190-193页 键盘接口).1718 胡汉才 单片机原理及其接口技术M. 北京:清华大学出版社.1996.19M.西安:西安电子科技大学出版社.20蔡希彪,曹洪奎; 单片机电子时钟系统的设计与仿真 J;中国科技信息; 2007年04期致 谢经过一周的单片机课程设计,我组成员已基本完成课题要求。功能上基本达标:时钟的显示,秒表显示,定时功能,调时功能。时钟显示功能,精确度完全可以满足日常生活显示时间的需要;秒表功能,可以满足比赛计时的需要;调时功能,方便快捷;定时功能准确可靠,还有扩展成音乐闹钟的余地。硬件设施合乎要求,软件设计可以配合硬件实现要求功能。但是由于时间比较短,出现部分不足:使用定时和秒表功能时时间显示功能停止运行。经讨论只是软件部分还不完善。不过,我们相信,如果时间充足,将软件改进,我们完全可以很好实现所有功能。 另外,在本次设计的过程中,我们发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高,我想这就是我在这次毕业设计中的最大收获。在设计过程中,通过针对性地查找资料,了解了些电子方面的资料,既增长了自己见识,补充最新的专业知识,又提高了自己的应用能力。这次对AT89S52有了一个全面的认识,在此基础上结合以前所学的专业知识,从而把我所学的知识贯穿到一起,对本专业有了一个更全面的认识!总之这次毕业设计让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面来培养自身的综合素质。这些在我今后的学习和工作当中都会有很大的帮助。最后,我要感谢我的指导老师,在这次毕业设计中给了我许多的帮助。同时也祝愿学院明天更美好。附录一#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit key1=P30;sbit key2=P31;uchar code sz=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar shi,fen,miao,jishu;void delayms(uint z)/延时Z毫秒uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void init()EA=1;TMOD=0X01;ET0=1;TR0=1;TH0=(65536-50000)/256; TL0=(65536-50000)%256;shi=9;fen=0;miao=0;void show()P0=0x00;P2=0;P0=szshi/10;delayms(300);P0=0x00;P2=1;P0=szshi%10;delayms(300);P0=0x00;P2=2;P0=0x40;delayms(300);P0=0x00;P2=3;P0=szfen/10;delayms(300);P0=0x00;P2=4;P0=szfen%10;delayms(300);P0=0x00;P2=5;P0=0x40;delayms(300);P0=0x00;P2=6;P0=szmiao/10;delayms(300);P0=0x00;P2=7;P0=szmiao%10;delayms(300);void key()uchar i=0,j=0,k=30;if(key1=0)delayms(5);if(key1=0)EA=0;i+;while(!key1);while(1)if(key1=0)delayms(5);if(key1=0)i+;while(!key1);if(i=7)EA=1;break; if(key2=0)delayms(5);if(key2=0)if(i=1)if(miao%10)=9)miao=miao/10*10;else miao+;if(i=2)miao=miao+10;if(miao>=60)miao=miao%10;if(i=3)if(fen%10)=9)fen=fen/10*10;else fen+;if(i=4)fen=fen+10;if(fen>=60)fen=fen%10;if(i=5)if(shi/10=2)if(shi%10)=3)shi=shi/10*10;else shi+;elseif(shi%10)=9)shi=shi/10*10;else shi+;if(i=6)shi=shi+10;if(shi>=24)shi=shi%24;while(!key2); if(key3=0)delayms(5);if(key3=0)if(i=1)if(miao%10)=0)miao=miao/10*10+9;else miao-;if(i=2)miao=miao-10;if(miao>=60)mi