51电子时钟毕业设计说明书.doc
摘 要现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。本次设计主要对电子时钟进行设计,采用AT89C51单片机来保证电子时钟的工作,并用LED数码管时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。AbstractMODERN LIFE OF PEOPLE MORE AND MORE ATTENTION TO THE CONCEPT OF TIME, CAN BE SAID TO BE THE TIME AND MONEY IS A SIGN. FOR THOSE WHO HOLD THE PERSON OR THING IS VERY STRICT IN TIME AND ACCURATELY, THE TIME OF INACCURATE WILL BRING GREAT TROUBLE, SO AS TO CONTROL THE DISPLAY OF DIGITAL CLOCK THAN THE CLOCK POINTER SHOWED A BIG ADVANTAGE. THE DESIGN OF THE MAIN DESIGN OF THE ELECTRONIC CLOCK, USE AT89C51 MICROCONTROLLER TO ENSURE THE ELECTRONIC CLOCK, AND THE LED DIGITAL TUBE, FENS AND MIAOS, 24 SHIS TIMER MODE, ACCORDING TO DIGITAL CONTROL THEORY TO DYNAMIC DISPLAY TO DISPLAY, USE THE 12MHZ CRYSTAL OSCILLATION PULSE, THE TIMER COUNT. IN THIS DESIGN, THE CIRCUIT HAS ITS TIME THE FUNCTION, BUT ALSO CAN ACHIEVE THE ADJUSTMENT OF TIME.目录第一章 绪论11.1 设计背景11.2 单片机的发展1第二章 设计方案42.1任务要求42.2设计原理42.3设计方案的确定4第三章 硬件设计53.1 单片机的选型53.2 时钟电路73.3 复位电路73.4显示电路73.5按键电路93.6 74LS245驱动器103.7系统原理图11第四章 软件设计134.1主程序134.2调时子程序144.3定时中断子程序154.4 软件消抖17第五章 调试与运行195.1 Proteus ISIS 的介绍195.2 仿真结果19第六章 总结21参考文献22致谢23附录24 第一章 绪论1.1 设计背景数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用越来越普及了,并且由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,使单片机在电子和一些自动化行业中应用也越来越广泛了。数字钟的组成模块主要由一个AT89C51单片机模块、用于放大信号来驱动数码管显示的74LS245、用于显示时间的数码管显示模块、还有用于复位的按键部分,还有电源等部分组成。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。1.2单片机的发展单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1、多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP2解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。2、高效率和高性能为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3、低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。(6)现代交通与航空航天领域通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高。第二章 设计方案2.1任务要求1.通过单片机内定时器控制走时,准确持续走时,调时不影响走时。2.在LED数码管上显示时、分、秒。3.能对时间进行校准。2.2设计原理采用AT89C51芯片作为硬件核心,其内部采用Flash ROM,具有4KB ROM 存储空间,能于3V的超低压工作,本系统的计时方案是利用单片机内部的定时/计数器进行中断定时, 配合软件延时实现对时、分、秒的计时。LED数码管74LS245位选段选时钟电路复位电路按键 AT89C51 AT89C51时钟电路复位电路按键 图 1.1 2.3 设计方案的确定 电子钟的电路图主要由单片机(AT89C51)、按键电路、驱动显示电路和LED显示器四部分组成,它主要实现时钟的显示,以及对时、分、秒进行调整,即实现调时的功能。(1)显示方案数码管显示方法可分为静态显示和动态显示两种。方案一:动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。方案二: 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。由于本次设计是对时间进行显示,如采用静态显示,则所占用的I/O口较多,电路较复杂,所以在此选择的是方案二,采用动态显示。(2)按键方案方案一:独立式按键。按键的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。方案二:单个按键。只有一个按键实现所有控制功能。本次设计选择方案一使用三个按键。(3)计时方案采用软件控制:利用单片机内部的定时/计数器进行定时,配合软件定时实现时、分、秒的计时。该方案能够使设计者,在设计的过程中容易实现,且节省硬件成本,因此本系统将采用软件方法实现计时。第三章 硬件设计3.1单片机的选型由于AT89C51芯片的普及性和便捷性,所以选择它作为AT89C51 提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。图3-1 AT89C51管脚说明:VCC:供电电压。GND:接地。(1) P0端口: P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。 (2) P1端口: P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口: P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2时钟电路晶体振荡器电路给数字钟提供一个频率稳定准确的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。如图2-1所示。图3-2 单片机时钟电路图3.3复位电路当上电时,电源对电容充电,对单片机复位,使单片机从00H开始执行程序。如下图2-3所示: 图3-3上电复位电路上电复位要求接通电源后,单片机自动实现复位操作。常用的上电复位如上图所示。上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。3.4显示电路七段LED显示器的原理由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图2-4所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。图3-4 LED数码管结构原理图及实物图LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。各段码位与显示段的对应关系如表2-2。表2-2 各段码位的对应关系段码位D0D1D2D3D4D5D6D7显示段ABCDEFGDP将AT89C2051的P2.0P2.7分别与共阴数码管的ag及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。表2-3 LED显示段码字型共阳极段码共阴极段码0C0H3FH1F9H06H2A4H5BH3BOH4FH499H66H592H6DH682H7DH7F8H07H880H7FH990H6FH数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低,所以本次设计使用动态显示。3.5按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,按键占用一条I/O口线。如图2-5所示。图3-5 按键电路图3-6按键实物图为了充分利用单片机I/O口本设计采用动态显示,单片机P1口接段码,P2口接位选,然而P1不能直接驱动数码管,所以应使用驱动。3.6 74LS245介绍74LS245是常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当80C51单片机的P1口总线负载达到或超过P1最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。 E是H时,A,B为高阻E为L,DIR为L时,BAE为L,DIR为H时,AB图3-7 74LS245引脚图及实物图3.7 系统原理图 AT89C51的P3口接入三个按键,对时、分、秒进行调整。P1口输出字段码,控制要显示的字符,外接74LS245芯片,驱动LED显示。P2口输出字位码,去控制要显示的位,其原理图如图2-7所示。图3-8 电子钟原理图当接入电源时,数字电子钟以秒为单位开始计时。运行状态下,按下控制按键S1,对小时进行调整;按下S2调整分钟;按下S3对秒清零。这样通过三个按键,分别对时、分、秒进行调整,从而实现调时。第四章 软件设计4.1主程序初始化将时、分、秒各单元的内容清空,置T0为计数器方式1,分别给计数器的高8位和低8位赋计数初值,启动T0工作。键入一个按键,如执行此动作,秒值加1,否则重新键如按键。主程序模块:主程序流程图,如图3-1所示 内存单元清零调时子程序显示程序T0为16位计数器允许T0中断开始按键控制子程序Y中断返回N图4-1 主程序流程图4.2调时子程序调时子程序用于调整时间。以秒为例,按下按键S2,判断S2是否真的被按下,若没有键按下,转到MIN_SET程序段,再次键入按键,重新判断。若按键按下了,则调用延时程序,消除抖动现象分值加1,当分值大于60时,分清零,进行下一次计时,同时分加一,并转到DISP显示。此过程循环执行,其程序流程图如图4-2所示:显示S2是否按下否按下分值加1分是否大于60清零N调用延时YYN图4-2 键输入程序流程图MIN_SET: CALL DISP;调用显示程序 JNB P3.2,MIN_SET;P3.2按下跳到调分程序 INC 76H;分的个位加1 MOV R5,76H CJNE R5,#10,MIS1;个位不为10跳到MIS1 MOV 76H,#0;个位清零 INC 77H;十位加1 MOV R5,77H CJNE R5,#6,MIS1;十位不为6跳到MIS1 MOV 77H,#0;分清零 MOV 76H,#0 RET MIS1: RET;调分返回N24小时是否到分单元清零,时单元加1NNNYY时单元清零时间显示中断返回开始是否运行60秒时间是否到60分钟是否到秒单元加1秒单元清零,分单元加1YY4.3 定时器中断子程序图4-3 定时器中断流程图INTT0:PUSH ACC;入栈,保护现场PUSH PSWCLR ET0;关闭中观允许CLR TR0;关闭中断MOV A,#0B7H;中断响应时间同步修正ADD A,TL0;低8位初值修正MOV TL0,AMOV A,#3CH ;高8位初值修正ADDC A,TH0MOV TH0,A SETB TR0 ;开启定时器T0DJNZ R4,OUT ;20次中断未到中断退出ADDS: MOV R4,#14H;20次中断到重赋初值MOV R0,#71H;指向秒计时单元ACALL ADD1;调用ADD1MOV A,R3;秒数据放入ACLR C;清零进位标志CJNE A,#60H,ADDMM;秒是否到了60,是则跳转ADDMM:JC OUT ;小雨60秒中断退出ACALL CLR0;等于60秒调用CLR0清零秒MOV R0,#77H;指向分计时单元ACALL ADD1;调用ADD1MOV A,R3;分数据放入ACLR C;清零进位标志CJNE A,#60H,ADDH;分是否到了60,是则跳转ADDH:JC OUT ;小于60分时中断退出ACALL CLR0;等于60分调用CLR0清零秒MOV R0,#79H;指向时计时单元ACALL ADD1;调用ADD1MOV A,R3;时数据放入ACLR C;清零进位标志CJNE A,#24H,HOUR;时是否到了24,是则跳转4.4软件消抖按键抖动时间一般为5ms10ms,因此去抖动10MS,软件消抖有定时器定时,和利用延时子程序两种方式。 DL1MS: MOV R6,#10 DL1: MOV R7,#249 DL2: NOPNOPDJNZ R7,DL2 DJNZ R6,DL1 RETEND第五章 调试与运行5.1 Proteus ISIS 的介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。5.2 调试和运行 在KEIL (单片机汇编) C51软件中编写好的程序,将程序放入单片机仿真软件中,结合硬件电路进行调试与运行。1.程序通电开始状态2.按动S1键,对时调时3.按动S2键,对分调时3.按动S3键,对秒清零第六章 总结在数字电子钟的设计过程中,出现了很多的问题。在调试运行过程中,我的对程序和图进行了很多次的修改最终终于定下最为合适的结果。数字电子钟在运行时会产生一定延时误差,产生误差的主要原因是我们用软件计时,计1秒是采用定时器的中断服务程序。当数字钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。因此,应该让数字钟工作在适度温度、干燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。此次设计的数字电子钟过于简单化,现在的很多种数字电子钟已经拥有很多功能,比如说加实时时钟芯片,加温度控制,加闹钟等功能来完善这个电子钟。 随着时间的推移,计算机革命的完成,信息高速公路的飞速发展,我们的工业已经和自动化控制密不可分了.单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。而数字钟具备单片机最小系统的基本组成,对于我们了解单片机有很大的帮助。参考文献1.李全利主编,单片机原理及应用技术,高等教育出版社,20102.李东生.张勇,许四毛. Protell99SE电路设计技术入门与应用M.北京:电子工业出版社,2002;3.扬刚主.电子系统设计与实践.电子工业出版社M 20044.卢结成. 电子电路实验及应用课题设计M.中国科学技术大学出版社,2002年5.李广弟,朱月秀,王秀山.单片机基础M.北京航空航天出版社,2001.76.谢维成,杨加国.单片机原理与应用及C51程序设计M.清华大学出版社,2007.27. 关宗安,仲丛久.基于单片机实现的多路定时控制器的设计.沈阳航空工业学院学报.2004年6月8.何希庆,高伟.MCS-51单片机原理、实验、实例M.山东:山东大学出版社.19899.刘飞等,两种数字钟电路设计比较J 湖北师范学院学报 .2003,2(23):40-43 10.胥筱门,单片机系统的试验及应用J 电子制作.1999,(6):20-3011.房小翠,王金凤.单片微型计算机与机电接口技术M.北京国防工业出版社.200212.姜治臻.单片机技术及应用.高等教育出版社.2009年4月13.周润景,张丽娜基于PROTEUS 的电路及单片机系统设计与仿真M北京:航空航天大学出版社 ,2006.P321P32614.李广弟等 单片机基础 北京航空航天出版社, 2001.7 15.何立民主编,单片机应用技术选编 北京航空航天大学出版社 2004.3致谢首先衷心地感谢我的毕业设计指导老师曾老师。本设计从选题到完成,从理论上的探讨到实际问题的解决,无处不饱含着曾老师的心血。曾老师的悉心指导和建议给了我极大的帮助和支持,使我受益匪浅,在此论文完成之际,谨向曾老师致以深深的谢意和崇高的敬意。同时感谢的还有我的家人,是他们让我能上大学;在大学里,先要学会学习才能学的更好,是老师教了我怎样学习,到现在能完成毕业设计,都少不了老师的功劳;在整个设计过程中,从硬件电路图到软件编程,应用了相当多的知识,包含了大学三年所学的知识,在此向各位任课老师表示感谢。附录 程序清单ORG 0000H;程序开始地址LJMP MAIN;跳到MAINORG 000BH;T0中断程序入口LJMP INTT0;跳到T0开始执行程序ORG 0100HMAIN:MOV R0,#70H;准备70H-79H 10个字节空间MOV R7,#09HCLRDISP: MOV R0,#00H;将70H-79H初始化为00HINC R0DJNZ R7,CLRDISPMOV TMOD,#01H;设T0为16位定时器MOV TL0,#0B0H;赋初始值MOV TH0,#3CHSETB EA;CPU开中断SETB ET0;允许T0中断SETB TR0;启动T0MOV R4,#14H;1S设定初始值LOOP: LCALL DISP;调用显示程序JB P3.0,LOOP1;判断P3.0有无按下LCALL HOUR_SET;调用小时设定程序AJMP LOOPLOOP1: JB P3.2,LOOP2;判断P3.2有无按下LCALL MIN_SET;调用分设定程序AJMP LOOPLOOP2: JB P3.4,LOOP3;判断P3.4有无按下LCALL CLR0;调用清零程序,这里只清零秒AJMP LOOPLOOP3: AJMP LOOPHOUR_SET: CALL DISP;调用显示程序 JNB P3.0,HOUR_SET;P3.0按下跳到调小时程序 INC 78H;小时的个位加1 MOV R6,78H CJNE R6,#10,HOUR1;个位不为10跳到HOUR1 MOV 78H,#0;个位清零 INC 79H;十位加1 JMP HOUR2;跳到HOUR2HOUR1: MOV R6,78H CJNE R6,#4,HOUR2;个位不为4跳到HOUR2 MOV R6,79H CJNE R6,#2,HOUR2;十位不为2跳到HOUR2 MOV 78H,#0;小时清零 MOV 79H,#0HOUR2: RET;调时返回MIN_SET: CALL DISP;调用显示程序 JNB P3.2,MIN_SET;P3.2按下跳到调分程序 INC 76H;分的个位加1 MOV R5,76H CJNE R5,#10,MIS1;个位不为10跳到MIS1 MOV 76H,#0;个位清零 INC 77H;十位加1 MOV R5,77H CJNE R5,#6,MIS1;十位不为6跳到MIS1 MOV 77H,#0;分清零 MOV 76H,#0 RET MIS1: RET;调分返回INTT0: PUSH ACC;入栈,保护现场PUSH PSWCLR ET0;关闭中观允许CLR TR0;关闭中断MOV A,#0B7H;中断响应时间同步修正ADD A,TL0;低8位初值修正MOV TL0,AMOV A,#3CH ;高8位初值修正ADDC A,TH0MOV TH0,A SETB TR0 ;开启定时器T0DJNZ R4,OUT ;20次中断未到中断退出ADDS: MOV R4,#14H;20次中断到重赋初值MOV R0,#71H;指向秒计时单元ACALL ADD1;调用ADD1MOV A,R3;秒数据放入ACLR C;清零进位标志CJNE A,#60H,ADDMM;秒是否到了60,是则跳转ADDMM: JC OUT ;小雨60秒中断退出ACALL CLR0;等于60秒调用CLR0清零秒MOV R0,#77H;指向分计时单元ACALL ADD1;调用ADD1MOV A,R3;分数据放入ACLR C;清零进位标志CJNE A,#60H,ADDH;分是否到了60,是则跳转ADDH:JC OUT ;小于60分时中断退出ACALL CLR0;等于60分调用CLR0清零秒MOV R0,#79H;指向时计时单元ACALL ADD1;调用ADD1MOV A,R3;时数据放入ACLR C;清零进位标志CJNE A,#24H,HOUR;时是否到了24,是则跳转HOUR: JC OUT ;小于24时时中断退出ACALL CLR0;调用CLR0OUT: MOV 72H,76H ;将分的存储地址转移MOV 73H,77HMOV 74H,78H ;将时的存储地址转移MOV 75H,79HPOP PSW ;恢复现场POP ACCSETB ET0