1、基于单片机的时钟电路设计摘 要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,51单片机是各单片机中最为典型和最有代表性的一种。 本次设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个简易的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用四个七段数码管来进行显示,数码管采用的是动态扫描显示。通过数码管能够比较准确显示时、分,LED一闪一灭显示秒,设计方面采用汇编语言编程,整个电子钟系统能完成时间的显示、复位等功能。 通过这次设计让我更深入了解单片机基本电路、如何控制和定时器和中断编程的基本方法,从而锻炼了我学习、设计和开发软、硬件的能力。
2、关键词:AT89C51 ;单片机 ;数码管 Based on single-chip clock circuit designAbstractBecause of its extremely high performance-price ratio, the single-chip computer has been paid great attention to ever since it came out in 1970s of 20th Century, and hagained extensive applicable field and fast development.Among
3、all kinds of SCCs, 51 SCC representative one. This design, adopting AT89C51 chip as the core part with some necessary periphcircuits, is a simple electronic clock which uses 5V DC as the power supply. In hardware besides CPU, four seven-segment LED digi-tubes are used for display, which work in a dy
4、namicallscdisplay mode and driven by 74SL14 chip.The LEDS can accurately indic ate hour and minute and assembly language.The whole electronic clock system has functions of time disadjustment, bell-setting and reset, etc. This design enables me to have greater insight into the basic circuit of SCC, a
5、nd thbasic methods of timer control and interruption programming, so that is a training of my abilearning, designing and developing software and hardward.keywords: AT89C51; SCM ; Digital目录1 绪论.11.1 选题的目的和意义.11.2 单片机的应用31.3 单片机数字时钟的总体设计方案32 硬件分析.62.1 单片机的选用62.1.1 AT89C51的主要性能参数.62.1.2 引脚说明.72.1.3 复位电
6、路.82.2 数码管的选择82.2.1 数码管的主要特点.82.2.2 驱动方式.92.2.3 性能检测.93 系统设计.113.1 分析论证.113.2 电路组成及工作原理.113.3 显示模块.113.4 运算模块.113.5 显示的原理.123.6 主要程序分析设计.133.7 程序流程图.144 系统的仿真与调试.154.1 硬件系统与调试.154.2 软件调试.16结论.16致谢.17参考文献.18附录.19附录A.19附录B.24251、绪论1.1 选题的目的和意义单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、 发展很快、单片机体积小、重量
7、轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89C51芯片为核心,加以辅助电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示时间。数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及我们每个人的日常生活中都发挥着重要的作用。本系统是基于AT89C51单片机设计的一个具
8、有四位数码管显示的数字时实时钟,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。数字单片机的技术进步反映在内部结构、功率消耗、外部电压等级以及制造工艺上。在这几方面,较为典型地说明了数字单片机的水平。在目前,用户对单片机的需要越来越多,但是,要求也越来越高。下面分别就这几个方面说明单片机的技术进步状况。1.2 单片机的应用(1)单片机在智能仪表中的应用单片机广泛地应用于各种仪表仪器,使仪表仪器智能化,提高它们的测量速度精度,加强控制功能。(2)单片机在机电一体化中的应用单片机的出现促进了机电一体化,它作为机电产品的控制器,充分地发挥了体积小,可靠性高,功能强,现场安装灵活方便等优点,
9、大大强化了机器的功能,提高了机器的精度,自动化和智能化的水平。(3)单片机在实时控制中的应用对于过程控制中的各种物理参数:如转速。位移,流量,压力,温度,湿度,化学成分的测量和控制。将测量技术,自动控制技术和计算机技术相结合,充分发挥数据处理和实时控制功能,使系统工作在最佳状态。(4)单片机在分布式多机系统中的应用单片机在这种多机系统中,往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。当今的微处理器和微型计算机正向着功能更强,速度更快,价格更廉和网络化,智能化以及多图型,超媒体的方向发展。随着网络通信技术的和多媒体技术的发展,微机及其应用技术将以前所未有的速度,深度
10、和广度向前发展。将迅速改变人们传统的生活方式,给未来的政治,经济发展带来日益深远的影响。而51单片机是各单片机中最具有代表性的一种。本次毕业设计是用51单片机来设计电子时钟。电子时钟是现代电子技术在时钟领域的具体实现方式。时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子时钟采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子时钟用集成电路计
11、时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。电子时钟给人们的生活带来极大的方便,而且大大扩展了钟表原先的功能。诸如定时自动报警,定时开关,自动起闭电路等等。在一定程度上让单片机的涉及范围得以体现,从而扩大应用领域。因此研究电子时钟及扩大其应用,在一定程度上有很大的现实意义。随着科学技术的进步,单片机的功能也会日益增强,那么电子时钟这项技术也可以发展成一项新型技术。电子时钟也可以由单一的定时,计数,报警等功能,开发成低成本、通用应用及高性能数据通信、光纤网络和存储系统应用的
12、各类高级时。本次毕业设计,通过对51单片机的学习、应用,通过学习与制作掌握单片机的应用,程序的编写,以及硬件电路的制作。运用学过的知识,以AT89C51芯片为核心,辅以必要的电路,设计可以实现的单片机电子时钟方案,通过数码管能够显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。1.3 单片机数字时钟的总体设计方案本设计主要选用单片机P1.0-P1.6口控制数码管7引脚,P2.4-P2.7口控制三极管放大电流从而保证输出的脉冲信号稳定,P0.2-P0.3口控制LED输出高电频亮低电频灭的功能。为方便程序的下载,设计中采用了与单片机相配合的下载端口,整个控制系统如图1-1所示:单片机时钟
13、电路系统下载线复位按钮图1-1 控制系统图1.4 程序流程图开 始设置初始常数启动定时器读取小时值转换成显示数据显示数据送脉冲读取分数值转换成显示数据显示数据送脉冲读取秒数值转换成显示数据调用子程序图1-2 程序流程图2、硬件分析2.1 单片机的选用本设计选用的单片机是AT89C51,AT89C51是一种低功耗、高性能的片内含有4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。它的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失
14、存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。2.1.1 AT89C51的主要性能参数8位CPU,片内振荡器;128b的数据存储器RAM;4kb片内程序存储器(ROM);32条I/O口线;111条指令,大部分为单字节指令;21个特殊功能寄存器SFR;2个可编程定时/计数器;5个中断源,2个优先级;一个全双工串行通信口;外部数据存储器寻址空间为64KB;外部程序存储器寻址空间为64KB;逻辑操作为寻址功能;单一+5V电源供电;AT89C51提供以下标准功能:4k字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,
15、一个全双工串行通信口,片内振荡器及时钟电路。同时AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。2.1.2 引脚的说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图2-1是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:Pin20:接地脚。Pi
16、n40:正电源脚,正常工作或对片内EPROM编写程序时,接+5V电源。Pin19:时钟XTAL1脚,片内振荡电路的输入端。Pin18:时钟XTAL2脚,片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。输入输出(I/O)引脚:Pin39-Pin32为P0.0-P0.7输入输出脚,Pin1-Pin1为P1.0-P1.7输入输出脚,Pin21-Pin28为P2.0-P2.7输入输出脚。 Pin10-Pin17
17、为P3.0-P3.7输入输出脚。图2-1 MCS-51引脚图2.1.3 复位电路8051的复位方式可以是自动复位,也可以是手动复位,见下图2-2。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。图2-2 自动手动复位2.1 数码管的选择2.2.1 数码管的主要特点
18、(1)低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。(2)发光响应时间极短(0.1s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。(4)寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。因此它被广泛用作数字仪器仪表、数控装置、计算机的数显器件。2.2.2 驱动的方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。本设计采用的是动态式驱动方式。(1)静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,
19、或者使用如BCD码二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个AT89S52单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。(2)动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那
20、个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。2.2.3 性能检测LED数码管外观要求颜色均匀、无局部变色及无气泡等,在业余条件下可用干
21、电池作进一步检查。现以共阴数码管为例介绍检查方法。将3伏干电池负极引出线固定接触在LED数码管的公共负极端上,电池正极引出线依次移动接触笔画的正极端。这一根引出线接触到某一笔画的正极端时,那一笔画就应显示出来。用这种简单的方法就可检查出数码管是否有断笔(某笔画不能显示),连笔(某些笔画连在一起),并且可相对比较出不同笔划发光的强弱性能。若检查共阳极数码管,只需将电池正负极引出线对调一下,方法同上。LED数码管每笔画工作电流ILED约在510mA之间,若电流过大会损坏数码管,因此必须加限流电阻,其阻值可按下式计算:R限 =(U。-ULED)ILED其中U。为加在LED两端电压,ULED为LED数
22、码管每笔画压降(约2伏)。利用数字万用表的HFE插口能够方便地检查LED数码管的发光情况。选择NPN挡时,C孔带正电,E孔带负电。例如检查LTS547R型共阴极LED数码管时,从E孔插入一根单股细导线,导线引出端接9极(第脚与第脚在内部连通,可任选一个作为负极),再从C孔引出一根导线依次接触各笔段电极,可分别显示所对应的笔段。3、系统设计3.1 分析论证 此实时时钟的设计与实现,主要采用了4只LED数码管,8031内部二进制16位定时器/计数器,可编程中断控制器8031等芯片,包括显示模块、运算模块两大功能模块。3.2 电路组成及工作原理本设计主要利用AT89C51单片机控制数字时钟电路设计,
23、由单片机的P1口控制数码管的段显示,P2控制三极管来放大电流,P0控制LED的一闪一灭。在设计中引入一个电源电路,一个外部电源系统产生+5V电压,用于给CPU及显示电路提供工作电压,这是数字时钟正常工作时的总电压。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用LED的一灭一闪60次,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路
24、将“时”、“分”、计数器的输出,通过四个七段LED显示器显示出来。3.3 显示模块设计主要是用数码管的显示功能来实现,显示部分硬件用四只数码管为显示管,这些数码管的阳极是互相连接在一起的,所以称为共阳极数码管。通过在这四只数码管的阳极加+5V或0V的电压使数码管形成不同的数字。3.4 运算模块该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现。本实验中用8031定时器/计数器,但因为8031供
25、的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8031工作方式为方式1,产生一个50ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8031的IR1号中断来实现,但由于每50ms一次中断请求,所以在中断服务程序必须利用已申请内存单元26H来统计中断请求的次数,只有当26H的值为20时,才能让秒单元内的数值加1。在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当LED闪动到60次时,分必须加1 、秒又开始重新闪动;当分加到60时,时加1、分清零。当时加到24时,直接清零。3.5 显示
26、的原理LED数码管分共阳极与共阴极两种,其工作特点是当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。当驱动信号为高电平、负端接低电平时,才能发光。LED的输出光谱决定其发光颜色以及光辐射纯度,也反映出半导体材料的特性。常见管芯材料有磷化镓(GaP)、砷化镓(GaAs)、磷砷化镓(GaAsP)、氮化镓(GaN)等,其中氮化镓可发蓝光。发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。其他颜色LED数码管的光谱曲线形状与之相似,仅入,值不同。LED
27、数码管的产品中,以发红光、绿光的居多、这两种颜色也比较醒目。LED数码管等效于多只具有发光性能的PN结。当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。在正向导通之前,正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。因此,LED数码管属于电流控制型器件,其发光亮度L(单位是cdm2)与正向电流IF有关,用公式表示:L=KIF即亮度与正向电流成正比。LED的正向电压U,则与正向电流以及管芯材料有关。使用LED数码管时,工作电流一般选10mA左右段,既保证亮度适中,又不会损坏器件。3.5.1 实验原理 这里用的共阳极的LED数码
28、管,共阳就是7段的显示字码共用一个电源的正。数码管的引脚如图3-3:图3-1 数码管的引脚从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。如要显示“0”,则a,b,c,d,e,f六个字段亮就显示“0”了,而g和dp字段不亮;这样只要向P0口送出相应的代码即可,编码方法如下表:表1-2 数码管编码显示DpGFEDCBA显示字符编码P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0110000000COH101100111F3H101001002A4H101100
29、003B0H10011001499H10010010592H10000010682H111110007F8H10000000880H10010000990H10001000A88H10001110F8EH程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符。3.6主要程序设计分析(1)主程序 设计中采用定时器T0中断完成,其余状态循环调用显示子程序。(2)显示子程序数码管显示的数据存放在内存单元32H-35H中, 32H-33H存放分数据,34H-35H存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十
30、进制BCD码数据的对应段码存放在ROM表中。显示时,先取出30H-35H某一地址中的数据,然后查的对应的显示段码从P1口输出。P3口将对应的数码管选中,就是显示该地址单元的数据值。4、系统的仿真与调试4.1 硬件系统的仿真与调试 硬件组装前首先要仔细核对硬件系统设计原理的正确性,包括参数选用的正确性和原理的正确性,这取决于设计者的学识和经验积累。对没有把握的电路可以通过在通用实验板上直接焊接实际电路来进行实物调试和验证。在系统通过理论分析后,便可进行电路设计和加工。一般而言,电路板加工企业的质量是有保证的,但也不排除个别企业加工的电路板出现工艺性缺陷的情况。因此在调试前,必须首先进行工艺排错,
31、这对于第一块样板的调试更是必不可少的环节。调试分为断电调试和通电调试。(1)第一步:断电调试为了安全起见,首先必须进行断电调试,断电调试的内容至少包含短路检测和原理正确性确认。短路检测系统电路焊接完成后,进行短路检测,选用合适的万用表欧姆挡(例如,20K挡或200K挡),用红黑表笔接电路板的+5V电源的+、极,如果存在充放电现象(即电阻指示从大到小再到大或从小到大),最后电阻稳定在一个适当的位置(一般为几千欧姆),则基于可排除系统短路现象。如果无充放电现象或电阻值稳定在很小的位置(例如几欧姆),则说明系统中可能存在短路故障,不能通电实验,必须对系统进行彻底排查,直至解决。正确性确认这里以显示亮
32、度调节电路为例进行说明。首先检查VTI(9013)的极性不能接错(e、c),否则,因为VTI始终不能正向偏置而无法导通,W1(LM317)的显示控制失去作用,使显示始终打开,导致在送数过程中出现显示抖动现象,影响正常显示。另外,R5和R6的电阻总值必须要在合适的值上(原因是此支路电流一般要求为5mA左右),太大则LM317不能正常工作而无法调节输出电压,太小则输出电压偏高(极限为2.5V),可能会由于过流而影响数码管的寿命。(2)第二步:通电调试凡是微处理器系统,正常运行的必要条件是系统时钟稳定正常。在实际工作中,因为各种原因导致系统时钟不正常出现系统无法正常运行的情况也有时出现,因此系统时钟
33、是否起振应是通电检查的首要一环。检查方法有:逻辑笔法。 数字万用表法。示波器法。设计中采用的是数字万用表法,复位不正常也会导致系统不工作。例如,1脚(复位脚)如果始终为高,则系统始终处于复位状态;如果始终为低电平(不能产生复位所需的高电平脉冲),则系统也可能无法正常工作。检查的重点是相关电路是否正确。4.2 软件调试(1)在单片机专用WAVE(伟幅)软件上编写程序。(2)在单片机专用ISIS软件上绘制系统原理图。(3)程序的首地址应使目标可以直接运行,即从0000H开始。在主程序的开始部分必须设置一个合适的栈底。程序放置的地址需连续且靠前,不要在中间留下大量的空间地址,以使目标机可以使用较少的
34、硬件资源。(4)然后把自己编好的程序放在ISIS软件原本绘制好的系统原理图中来运行,看自己编制的程序能不能运行。如果还有错就把程序改过直到在ISIS上能达到自己要的效果。结论虽然毕业设计内容繁多,过程繁琐但我的收获却更加丰富。通过这次对数字钟的设计,我摆脱了单纯的理论知识学习状态,和实际操作的结合锻炼了我。综合运用了所学的专业基础知识,解决实际使用过程中存在的问题,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平。通过整体的设计,局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,并且磨练了我的意志力,抗压能力及耐力也都得到了不同程度的提升。通过对系统的分析与设计过程,我
35、学到了许多新的知识,并且对我在这几年所学习机电和电子方面的专业知识进行巩固。本次毕业设计能顺利如期的完成给了我很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心。致谢本课题在选题及研究过程中得到老师的悉心指导,在我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等每一步都是在温老师的悉心指导下完成的,倾注了老师大量的心血。老师指引我的论文的写作的方向和架构,并对本论文初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向,他循循善诱的教导和不拘一格的思路给了我无尽的启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。在此,谨向
36、老师表示崇高的敬意和衷心的感谢!谢谢老师在我撰写论文的过程中给予我极大地帮助。同时,论文的顺利完成,离不开其他各位老师、同学和朋友的关心和帮助。在整个的论文写作中,各位老师、同学的积极帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终完成了整个论文。参考文献1 李叶紫,王喜斌,胡辉.MSC-51单片机应用教程.北京:清华大学出版社,20042 康华光,邹寿淅.电子技术基础.北京:高等教育出版社.20003 张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:复旦大学出版社,20004 李兰友,万振凯,李静东.微型计算机原理与接口技术.北京:清华大学出版社,
37、20065 潘永雄.单片机原理应用.北京:电子工业出版社,20056 刘勇.数字电路.北京:电子工业出版社,20037 张毅坤,陈善久.单片微型计算机原理及应用.西安:电子科技大学出版社,2002附录附录A程序清单 shaomiao bit 20h.0time0d5s bit 20h.1miao1 bit p0.2miao2 bit p0.3time1s eqU 36horg 0000hajmp mainorg 000bhajmp int_t0org 001bhajmp int_t1org 0030hmain: mov tmod,#01hmov tl1,#0b0hmov th1,#03chse
38、tb tr1setb et1setb easetb pt1mov tl0,#098hmov th0,#0bdhsetb tr0setb et0setb eaclr shaomiaoclr time0d5smov sp,#60hmov dptr,#dig_codeacall ini_ramloop: jnb time0d5s,no_workclr time0d5scpl miao1cpl miao2jb miao1,no_workcall new_timeno_work: jnb shaomiao,loopclr shaomiaoacall displayajmp loopini_ram: mo
39、v 30h,#00hmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#00hmov 35h,#00hmov 36h,#00hmov r7,#00hmov p0,#00hretnew_time: inc 30hmov a,#30hcjne a,#10,exit_new_timemov 30h,#00hinc 31hmov a,30hcjne a,#06h,exit_new_timemov 31h,#00hinc 32hmov a,32hcjne a,#0ah,exit_new_timeinc 32hmov a,33hcjne a,#06h,exit_new
40、_timemov 33h,#00hinc 34hmov a,34hcjne a,#0ah,exit_new_timemov 34h,#00hinc 35hmov a,35hcjne a,#0ah,exit_new_timemov 35h,#00hexit_new_time: retint_t0: mov tl1,#098hmov th0,0bdhsetb shaomiaoretiint_t1: mov tl1,#0b0hmov th1,#03chinc r7cjne r7,#100,exitmov r7,#00hsetb time0d5sexit: retidisplay: mov r0,#0
41、1hmov r6,#06hmov r1,#30hmov r1,#31hmov r1,#32hmov r1,#33hmov r1,#34hmov r1,#35hdisp_1: mov a,r1movc a,a+dptrmov p1,amov p2,r0inc r1mov a,r0rl amov r0,acall waitdjnz r6,disp_1mov p1,#0ffhmov p2,#00hretloop1: mov p3,#7fhacall waitmov p3,#0bfhacall waitmov p3,#0dfhacall waitmov p3,#0efhacall wait retwait: MOV R2,#015Hwait1: MOV R2,#038HDJNZ R3,$DJNZ R2,WAIT1RETdig_code: DB 081H;0DB 0EDH;1DB 043H;2DB 049H;3DB 02DH;4DB 019H;5DB 011H;6DB 0CDH;7DB 001H;8DB 009H;9END附录B系统原理图