1、ABSTRACT1北京工业大学耿丹学院毕业设计(论文)题目电子倒计时定时器设计摘要随着时代的进步,电子技术的发展,倒计时定时器得到了越来越广泛的应用,给人们日常的生活、学习、工作、娱乐带来便利,电子定时器相比普通的定时器来事具有体积小、重量轻、造价低、精度高等特点。本设计主要采用51系列单片机,通过硬件电路设计和软件编程设计来实现,硬件主要包括主控模块,时间显示模块,键盘设置模块,报警器模块的设计,软件编程主要采用C语言,虽然程序条数比较多,但是设计起来比较方便,可通过KEILS软件进行调试。此次倒计时定时器采用单片机AT89S52为核心,利用时钟芯片DS1302来显示一天的时间,系统通电后利
2、用数码管自动显示当前时间,通过键盘可以调整时间,分别对时、分、秒进行加减,也可以通过键盘转换成倒计时模式,最大倒计时时间为59分59秒,而且误差很小,当倒计时为零时蜂鸣器进行报警,指示灯变亮,倒计时功能关闭则显示当前时间,操作简单方便。ABSTRACT2关键词时钟芯片;AT89S52;倒计时;DS1302ABSTRACTWITHTHEPROGRESSOFTHEDEVELOPMENTOFELECTRONICTECHNOLOGY,THECOUNTDOWNTIMERHASBEENMOREANDMOREWIDELYTOPEOPLESDAILYLIFE,STUDY,WORK,ENTERTAINMENTC
3、ONVENIENCE,ELECTRONICTIMERTIMERCOMPAREDTOORDINARYTHINGSHAVESMALLSIZE,LIGHTWEIGHT,LOWCOSTANDHIGHACCURACYTHEDESIGNISMAINLY51SERIESMICROCONTROLLER,HARDWAREDESIGNANDSOFTWAREPROGRAMMINGDESIGN,HARDWARECONTROLMODULE,DISPLAYMODULE,KEYBOARDSETTINGSMODULE,THEALARMMODULEDESIGN,SOFTWAREPROGRAMMINGUSINGCLANGUAGE
4、,ALTHOUGHTHEPROGRAMARTICLENUMBER,BUTITWASEASIERTODESIGN,KEILSSOFTWAREDEBUGGINGTHECOUNTDOWNTIMERMICROCONTROLLERAT89S52ASTHECORE,DS1302CLOCKCHIPTODISPLAYTHETIMEOFDAY,THESYSTEMISPOWEREDONUSEOFDIGITALCONTROLAUTOMATICALLYDISPLAYSTHECURRENTTIME,THETIMECANBEADJUSTEDVIATHEKEYBOARD,HOURS,MINUTES,SECONDSPLUSO
5、RMINUS,BUTALSOKEYBOARDCONVERTEDINTOCOUNTDOWNMODE,THEMAXIMUMCOUNTDOWNTIMEOF59MINUTES59SECONDS,ANDTHEERRORISVERYSMALL,THEBUZZERALARMWHENTHECOUNTDOWNTOZERO,THELIGHTISON,THECOUNTDOWNFUNCTIONCLOSETODISPLAYTHEABSTRACT3CURRENTTIME,SIMPLEOPERATIONKEYWORDSCLOCKCHIP;AT89S52;COUNTDOWN;DS1302目录4目录摘要1ABSTRACT2第1
6、章绪论611课题的学术背景及其实际意义612相关领域的成果及存在的不足613课题来源及主要研究内容6第2章倒计时定时器的结构、原理及设计方案821单片机的发展概况82251单片机的内部结构823设计要求、方案及框图10211设计要求10212设计方案10213设计框图11第3章硬件电路设计1231ATS89C52单片机介绍1232时钟模块14321DS1302简介14322DS1302电路设计15323时钟电路设计16324时钟复位电路1633键盘模块1734显示模块18341LED数码管介绍18342LED数码管电路设计2035报警模块22第4章软件程序设计2341KEIL软件介绍2342软
7、件程序流程图23第5章系统调试26目录5结论31参考文献32附录33附录1主程序33附录2电路原理图50附录3PCB图51致谢52北京工业大学耿丹学院2012届毕业设计(论文)6第1章绪论11课题的学术背景及其实际意义倒计时定时器已经成为人们日常生活中必不可少的物品,随着技术的发展,广泛的应用于各个公共场所,给人们日常的生活、学习、工作、娱乐带来便利,但是由于原先简单的报时功能已经不能够被人们所满足,希望出一些新的功能新的产品来满足人们的需要,例如重要日子的倒计时、秒表等等,这些都能带来更大的方便。而所有的这些都是以倒计时定时器为基础的。因此,研究倒计时定时器有着非常重要的意义和实用价值。电子
8、定时器在家用电器中经常用于延时自动关机、定时。延时自动关机可用于收音机、电视机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时断电及延时自停电源等。定时可用于照相定时曝光、定时闪光、定时放大、定时调速、定时烘箱、冰箱门开定时报警、水位定时报警、延时催眠器、延时电铃、延时电子锁、触摸定时开关等。例如空调中的定时器,在工作一段时间之后便能自动切断电源停止工作。夏季夜间使用,入睡前先顶好时间,等睡熟后到了预定时间,空调自动关机,方便节能。定时器除了应用于家用电器外,还广泛地用于工业农业生产和服务设施等等。12相关领域的成果及存在的不足在电子技术突飞猛进的今天,电子倒计时定时器也慢慢的
9、被广大的家庭所接受,这些都方便了每个人的生活和工作。传统的定时器绝大多数都是发条驱动式、电机传动式或电钟式等机械定时器,部分电子器械中也有用时间继电器的。相对于传统的定时器,电子定时器的体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。所以电子定时器的发展必定大有前途。同时随着现代电子技术的发展,电子定时器也在不断的进步,朝向着更多用途、更高精度、更小体积发展着。13课题来源及主要研究内容本课题是通过老师挑选的几个课题当中自主选择的,虽然倒计时定时器已经很常见了,但是自己亲自动手制作,把所学到的知识应用的实际操作中,通过这个过程一定会有很大的收获,巩固加深了单片机应
10、用的知识面,提高了自己的动手能力和解决问题的能力。北京工业大学耿丹学院2012届毕业设计(论文)7本课题主要研究的内容要了解电子倒计时定时器的基本结构原理,调研并查找相关资料,选择实现电子倒计时定时器的方案,进行完整的倒计时的硬件电路、系统软件以及实物结构的设计并进行电路仿真、软件编程、系统调试。北京工业大学耿丹学院2012届毕业设计(论文)8第2章倒计时定时器的结构、原理及设计方案21单片机的发展概况微型计算机的出现是电子数字计算机广泛应用到人们日常工作和生活领域中去的一个重大转折点。它已经深入应用到非微型计算机所无法应用的领域,对社会产生了极大的影响。单片微型计算机是微型计算机发展的一个重
11、要分支,它以其独特的机构和性能,越来越普遍的应用到国民经济建设的各个领域。单片机全称为单片微型计算机(SINGLECHIPMICROCOMPUTER)。因为单片机主要用于控制系统中,所以又称微控制器(MICROCONTROLLERUNIT,MCU)或嵌入式控制器(EMBEDDEDCONTROLLER)。它具有嵌入式应用系统所要求的体系结构,微处理器,指令系统,总线方式,管理模式等。他把计算机的基本部件都微型化集成到一块芯片上了,通常片内部都含有中央处理部件(CPU),数据存储器(RAM),程序存储器(ROM,EPROM,FLSHROM),定时器/计数器和各种输入/输出(I/O)接口他们之间的相
12、互连接结构2251单片机的内部结构51单片机内部有一个8位的CPU,同时CPU内部包含了运算器,控制器及若干寄存器。1、运算器(ALU)的主要功能A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。B)加、减、乘、除、加1、减1、比较等算术运算。C)与、或、异或、求补、循环等逻辑运算。D)位处理功能(即布尔处理器)。由于ALU内部没有寄存器,参加运算的操作数,必须放在累加器A中。累加器A也用于存放运算结果。例如执行指令ADDA,B执行这条指令时,累加器A中的内容通过输入口IN_1输入ALU,寄存器B通过内部数据总线北京工业大学耿丹学院2012届毕业设计(论文
13、)9经输入口IN_2输入ALU,AB的结果通过ALU的输出口OUT、内部数据总线,送回到累加器A。2、程序计数器PCPC的作用是用来存放将要执行的指令地址,共16位,可对64KROM直接寻址,PC低8位经P0口输出,高8位经P2口输出。也就是说,程序执行到什么地方,程序计数器PC就指到哪里,它始终是跟蹿着程序的执行。我们知道,用户程序是存放在内部的ROM中的,我们要执行程序就要从ROM中一个个字节的读出来,然后到CPU中去执行,那么ROM具体执行到哪一条呢这就需要我们的程序计数器PC来指示。程序计数器PC具有自动加1的功能,即从存储器中读出一个字节的指令码后,PC自动加1(指向下一个存储单元)
14、。3、指令寄存器IR指令寄存器的作用就是用来存放即将执行的指令代码。在这里我们先简单的了解下CPU执行指令的过程,首先由程序存储器(ROM)中读取指令代码送入到指令寄存器,经译码器译码后再由定时与控制电路发出相应的控制信号,从而完成指令的功能。关于指令在单片机内部的执行过程,我们在后面将会以另一节课来进行详细的讲解。4、指令译码器ID用于对送入指令寄存器中的指令进行译码,所谓译码就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进行译码,根据译码器输出的信号,CPU控制电路定时地产生执行该指令所需的各种控制信号,使单片机正确的执行程序所需要的各种操作。5、地址寄存器
15、AR(16位)AR的作用是用来存放将要寻址的外部存储器单元的地址信息,指令码所在存储单元的地址编码,由程序计数器PC产生,而指令中操作数所在的存储单元地址码,由指令的操作数给定。从上图中我们可以看到,地址寄存器AR通过地址总线AB与外部存储器相连。6、数据寄存器DR用于存放写入外部存储器或I/O端口的数据信息。可见,数据寄存器对输出数据具有锁存功能。数据寄存器与外部数据总线DB直接相连。7、程序状态字PSW北京工业大学耿丹学院2012届毕业设计(论文)10用于记录运算过程中的状态,如是否溢出、进位等。例如,累加器A的内容83H,执行ADDA,8AH;累加器A与立即数8AH相加,并把结果存放在A
16、中。指令后,将产生和的结果为10DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放结果中的最高位B8。为些,在CPU内设置一个进位标志位C,当执行加法运算出现进位时,进位标志位C为1。8、时序部件由时钟电路和脉冲分配器组成,用于产生微操作控制部件所需的定时脉冲信号。23设计要求、方案及框图211设计要求这个倒计时定时器的设计采用倒计时的方式,初始值由键盘设定,最大定时为59分59秒,4位LED显示时间,定时到进行声光报警。212设计方案(1)采用AT89C51单片机为核心,通过程序来实现时间的显示,用定时器实现闹钟功能的设定,通过LED数码管显示时间。如图21图21系统框图本设计采用
17、AT89C51单片机不如AT89S52精确高,长时间工作会导致误差很大,并且C语言设计起来相当麻烦,调整起来麻烦而且不方便实现对系统的扩展。(2)采用AT89S52单片机为核心,倒计时功能采用C语言编程利用单片机内部定时器来实现,通过时钟芯片DS1302利用LED数码管显示当前时间,并通过键盘控制模式的转换和时间的调整,键盘模块电源模块报警模块主控模块显示模块北京工业大学耿丹学院2012届毕业设计(论文)11当时间到了经行报警,这个设计使整个系统可编程,灵活性大大增加了,虽然多了个芯片但是加大了精度,因此选择这个方案。213设计框图利用单片机定时器及计数器产生定时效果通过编程形成倒计时效果,在
18、通过LED数码管显示数据。系统供电后,实现小时、分钟、秒的显示,通过按键校对时间、倒计时的设定和显示,当定时时间到的时候,单片机通过报警器实现声光报警。如图22图22系统框图时钟模块键盘模块电源模块主控模块显示模块报警模块北京工业大学耿丹学院2012届毕业设计(论文)12第3章硬件电路设计31ATS89C52单片机介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系
19、统可编程FLASH,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能8K字节FLASH,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。如图31图31AT89S52引脚图P1口P1口是一个具有内部上
20、拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P10和P11分别作定时器/计数器2的外部计数输入(P10/T2)和定时器/计数器2的北京工业大学耿丹学院2012届毕业设计(论文)13触发输入(P11/T2EX)。在FLASH编程和校验时,P1口接收低8位地址字节。引脚号第二功能P10T2(定时器/计数器T2的外部计数输入),时钟输出P11T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P15MOSI(在系统编程用)
21、P16MISO(在系统编程用)P17SCK(在系统编程用)P2口P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVXRI)访问外部数据存储器时,P2口输出P2锁存器的内容。在FLASH编程和校验时,P2口也接收高8位地址字节和一些控制信号。P
22、3口P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在FLASH编程和校验时,P3口也接收一些控制信号。端口引脚第二功能P30RXD串行输入口P31TXD串行输出口P32INTO外中断0P33INT1外中断1P34TO定时/计数器0P35T1定时/计数器1北京工业大学耿丹学院2012届毕业设计(论文)14P36WR外部数据存储器写选通P37RD外部数
23、据存储器读选通此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一
24、条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器的指令。FLASH存储器编程
25、时,该引脚加上12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1振荡器反相放大器和内部时钟发生电路的输入端。XTAL2振荡器反相放大器的输出端。32时钟模块321DS1302简介DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202北京工业大
26、学耿丹学院2012届毕业设计(论文)15兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。如图32图32DS1302引脚图DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC102V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32768KHZ晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能首先,RST接通控制逻辑,
27、允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。322DS1302电路设计本设计要求在不进行倒计时的时候可以显示一天的时间,所以采用的时钟芯片DS1302为核心来实现这个问题,DS1302的X1、X2端口连接一个32768KHZ的晶振,VCC1、VCC2连接电源,串行数据IO端口连接单片机的P15引脚,串行时钟SCLK端口连接单片机的P16引脚,复位RST端口连接单片机的P14引脚。电路图33北京工业大学耿丹学
28、院2012届毕业设计(论文)16图33DS1302电路设计323时钟电路设计时钟电路对单片机是不可缺的,单片机的每个功能都要以时钟电路为基础工作。单片机内部自带一个时钟电路,外部接入定时控制元件即可构成一个稳定的自己振荡器。其中机器周期共有12个振荡脉冲周期,因此,机器周期是时钟周期的12倍。本实验使用的晶振是12MHZ,则时钟周期为(1/12)US,机器周期为1US。两个端口分别连在单片机XLAL1、XLAL2引脚上实验图34图34时钟电路324时钟复位电路复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保
29、证复位信号高电平持续时间大于2个机器周期。电路图34北京工业大学耿丹学院2012届毕业设计(论文)17图35复位电路设计33键盘模块本设计要用数码管显示当前时间和倒计时时间,这就需要由键盘来设定,键盘分为独立连接式和矩阵式,本实验采用五个独立的键盘设计,连在单片机的P3口,第一个按键控制工作模式的选择,系统通电后显示当前时间,按下则显示倒计时状态,第二个按键为设置模式选择,不管是倒计时还是显示时间都能对当前的时间进行设置,第三、四个按键主要是对时、分、秒进行加减,第五个按键主要的功能是启动和停止倒计时。电路设计如图35北京工业大学耿丹学院2012届毕业设计(论文)18图36键盘模块设计34显示
30、模块341LED数码管介绍数码管是一种半导体发光器件,其基本元件是发光二极管。北京工业大学耿丹学院2012届毕业设计(论文)19图37LED数码管数码管的分类数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极COM的数码管。共阳数码管在应用时应将公共极COM接到5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指
31、将所有发光二极管的阴极接到一起形成公共阴极COM的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管的驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示
32、则需要5840根I/O端口来驱动,要知道一个89S521单片机可用的I/O端口才32个呢),实际应用时必须增北京工业大学耿丹学院2012届毕业设计(论文)20加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“A,B,C,D,E,F,G,DP“的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数
33、码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12MS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。342LED数码管电路设计本设计主要采用8位LED数码管显示,与单片机的IO口连接,但是单片机的IO口电流有限,只有几毫安,但是数码管的驱动电流要几十毫安到几百毫安,所以在实验中
34、选择了单片机74LS245和单片机74LS138进行驱动和段选。3421单片机74LS245介绍和电路设计74LS245是我们常用的芯片,用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据,还具有双向三态功能,既可以输出,也可以输入数据。当单片机AT89SC52单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR“0”,信号由B向A传输;(接收)DIR“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,
35、P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P01D1),其它时间处于输出(P01D1)。通过单片机74LS245来扩大电流输出来给数码管进行驱动,电路设计如图37北京工业大学耿丹学院2012届毕业设计(论文)21图3874LS245电路设计3422译码器74LS138介绍和电路设计74LS138为3线到8线译码器,共有54LS138和74LS138两种线路结构模式。当一个选通端(E1)为高电平,另两个选通端(/E2和/E3)为低电平时,可将地址端(A0、A1
36、、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如A2A1A0110时,则Y6输出端输出低电平信号。利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。可用在8086的译码电路中,扩展内存。因为本设计采用的8位数码管为共阴极数码管,单片机74LS138的IO口输出是低电平,所以单片机和数码管可以配合在一起使用,来完成数码管的段选。它的电路设计如图37图39单片机74LS138电路设计北京工业大学耿丹学院2012届毕业设计(论文)2235报警模块本设计在倒计时时间到的时候为了提醒
37、用户而采用的声光报警,电路主要有一个蜂鸣器、一个三极管组成,在倒计时完成时通过控制端口P30给三极管送入低电平使其导通,报警器报警,指示灯点亮。如图36图310声光报警电路设计北京工业大学耿丹学院2012届毕业设计(论文)23第4章软件程序设计41KEIL软件介绍图41KEIL软件2009年2月发布KEILUVISION4,KEILUVISION4引入灵活的窗口管理系统,使开发人员能够使用多台监视器。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环
38、境REALVIEWMDK开发工具中集成了最新版本的KEILUVISION4,其编译器、调试工具实现与ARM器件的最完美匹配。最新的KEILUVISION4IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。UVISION4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。UVISION4在VISION3IDE的基础上,增加了更多大众化的功能。多显示器和灵活的窗口管理系统系统浏览器窗口的显示设备外设寄存器信息调试还原视图,创建并保存多个调试窗口布局,多项目工作区简化与众多的项目42软件程序流程图北京工业大学耿丹学院2012届毕业设计(论文)24图42软件流程图
39、系统中设置了五个按键,当程序扫描到“复位”键时,单片机重新读入拨码盘数据,意即新的一轮计时开始,当程序扫描到“走”键时,若原计时停止,则启动计时,否则无效,同样,当程序扫描到“停”键时,若原计时已启动,则停止计时,否则无效。对于本系统来说,秒计时的准确性和主从机的通信的可靠性是程序的关键,以下分别对这两个程序的设计进行描述。在硬件电路中因未设计硬件计时功能,秒的产生只有依靠软件来完成。本系统中采用系统定时P计数器T0来产生。最大定时主程序开始初始化变量初始化定时器显示子函数键盘子函数判断键盘是否按下报警器报警、指示灯闪亮中断1启动停止倒计时中断2定时器中断北京工业大学耿丹学院2012届毕业设计
40、(论文)25时间计算方法如下TMAX21612FOSCS,其中FOSC为系统时钟频率,本系统中的时钟频率为1110592MHZ,经计算TMAX为7111MS,为了计算的方便,取TMAX50MS,软件计数至20次为1S。北京工业大学耿丹学院2012届毕业设计(论文)26第5章系统调试本次倒计时定时器设计包括硬件电路设计和软件设计,软件主要是通过C语言进行编程,将程序编辑编译完成后,将生成的HEX文件通过串口下载软件下载到STC89C52单片机芯片中去。通过PROTEUS软件进行仿真,实验过程中仿真可以正常运行,但是总是比现实显示的时间慢,而且报警的时候声音也是一卡一卡的,检查各个端口也没有发现问
41、题,通过与老师的沟通,觉得是PROTEUS软件的问题,结果还是很好的完成了仿真的工作。如下图所示图51时间显示模式仿真图北京工业大学耿丹学院2012届毕业设计(论文)27图52倒计时模式仿真图硬件设计首先检查印制板及焊接的质量情况,在检查无误后通电检查数码管的点亮状况。至于键盘的调试,关键是把握好按键的去抖效果。当出现按键“不灵”情况,一般是由于程序中用于按键去抖的延时时间不够。在进行LED数码管焊接的时候,也出现的点问题,因为任务书要求的是8位数码管,做板子的时候是两个四位的连在一起,数码管引脚就比较混乱,做过了一个板子但是没有正常工作,经过了一些调试还是没有显示出来时间,决定直接买了一个数
42、码管模块,直接与单片机的几个引脚连接就可以完成实验要求的功能,最后连接一起通电试了试,可以完成现在的要求,虽然板子有点简陋看起来有点省事,但是过程还是学到了不少的东西。不过现在还有个问题就是误差有点大,准备弄得更加精确。北京工业大学耿丹学院2012届毕业设计(论文)28图53硬件时间显示状态北京工业大学耿丹学院2012届毕业设计(论文)29图54硬件倒计时状态系统开始调试,通电后数码管显示时间,在通过键盘进行时间的调整和工作模式的选择,下表是对系统倒计时时间的测试结果。现实时间实验时间误差5分钟4分55秒5秒10分钟9分43秒17秒15分钟14分18秒42秒表1系统倒计时时间测试表误差分析本设
43、计的计时和倒计时功能主要是通过单片机内部的计时器来完成,而且程序设计北京工业大学耿丹学院2012届毕业设计(论文)30也使用的延时语句,不可避免的会出现一些误差。但是本设计的时间显示的误差很小,倒计时时间越长误差就越大,电路板也已经从手焊的换成印制板,还在寻找原因。结论31结论本文主要先对核心芯片做了个概述,并且简单的介绍了各个管脚的功能,阐述了设计要求、选择的方案以及最后能够完成的功能。然后通过硬件和软件部分的介绍,详细的说明了我做毕设的步骤以及各个部分的选择,如何实现的,用什么软件实现的,最后列出了实验的误差以及PCB、原理图等等的实验过程。虽然毕业设计可以完成实验要求,但是这仅仅是一小部
44、分,还有很多问题没有解决,硬件设计的过于简单,导致了误差的出现,这都是我以后要努力地方向。从这次毕业论文设计中,无论对于单片机还是定时器,都进一步清晰了设计概念、学习了专业理论、掌握了芯片知识,而且还增长了实践经验,提高了认知水平,促进了自学能力。从诸多方面获得了很大的收益。参考文献32参考文献1李群芳单片微型计算机电子工业出版社,20102孙景琪,曹小秋通信广播电路原理与应用北京工业大学出版社,20103徐士良,葛兵计算机软件技术基础清华大学出版社,20104刘明亮,郭云数字信号处理基础教程北京航空航天大学出版社,20115王划一,杨西峡自动控制原理国防工业出版社,20106郑步生,吴渭MU
45、LTISIM200L电路设计及仿真入门与应用M北京电子工业出版社,20027楼然苗,李光飞51系列单片机设计实例M北京北京航空航天大学出版社,20038梁纯,王军基于MCS一51单片机的LED点阵图文显示屏设计J工矿自动化,200569夏路易、石宗义编著电路原理图与电路板设计教程北京希望电子出版社200210吴国经主编单片机应用技术中国电力出版社200411徐泳龙主编单片机原理及应用机械工业出版社2004附录33附录附录1主程序INCLUDEINCLUDE“DS1302H“/DS1302的驱动头文件DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINT/设置模
46、式选择SBITKEY1P13/SBITKEY2P14/SBITKEY3P15/系统工作模式选择SBITKEY4P16/倒计时开始/停止SBITKEY5P17/报警SBITBEEPP37/LEDSBITLEDP34附录34UNSIGNEDCHARLL0UNSIGNEDCHARKK,I/临时变量/共阴数码管“09“,“灭“,“编码UCHARCODEDIS0X3F,0X30,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00,0X40/位选编码UCHARCODEWEI0X80,0X81,0X82,0X83,0X84,0X85,0X86,0X87/时分秒显示缓冲区
47、UCHARDATADIS10X00,0X00,0X0B,0X00,0X00,0X0B,0X00,0X00/时分秒初值UCHARDATACHUZHI0X23,0X59,0X50/送十六进制数/读取的时间值UCHARDATATIME13020X00,0X00,0X00/倒计时的分钟,秒SIGNEDCHARCOUNT_MINUTES0SIGNEDCHARCOUNT_SECONDS0/系统工作模式选择位1时间显示模式0倒计时模式附录35BITWORK_FLAG1/延时1MS子程序VOIDDELAYUINTZUINTX,YFORXZZ0ZFORY110Y0Y/显示子函数VOIDDISPLAYUCHARK
48、IFWORK_FLAG/时间模式下的显示DIS17CHUZHI210/秒的十位DIS16CHUZHI2/10/秒的个位DIS14CHUZHI110/分的十位DIS13CHUZHI1/10/分的个位DIS11CHUZHI010/时的十位DIS10CHUZHI0/10/时的个位FORK0K96/96对应16进制60TEMP0附录42WRITE13020X8E,0X00/禁止写保护WRITE13020X80,0X80|TEMP/秒初始化WRITE13020X8E,0X80/允许写保护IFKEY30/按下DELAY10/防抖IFKEY30WHILEKEY30/等待按键释放TEMPCHUZHI21/10
49、16CHUZHI2110/10进制转BCDIFCHUZHI20TEMP89WRITE13020X8E,0X00/禁止写保护WRITE13020X80,0X80|TEMP/秒初始化WRITE13020X8E,0X80/允许写保护BREAKCASE2/分设置模式IFKEY20/键按下DELAY10IFKEY20附录43WHILEKEY20TEMPCHUZHI11/1016CHUZHI1110/10进制转BCDIFTEMP96/96对应16进制60TEMP0WRITE13020X8E,0X00/禁止写保护WRITE13020X82,TEMP/分初始化WRITE13020X8E,0X80/允许写保护IFKEY30/按下DELAY10IFKEY30WHILEKEY30TEMPCHUZHI11/1016CHUZHI1110/10进制转BCDIFCHUZHI10TEMP89WRITE13020X8E,0X00/禁止写保护WRITE13020X82,TEMP/分初始化WRITE13020X8E,0X80/允许写保护BREAK附录44CASE3/时设置模式IFKEY20/按下DELAY