毕业论文基于单片机数字式电子秒表电路设计_第1页
毕业论文基于单片机数字式电子秒表电路设计_第2页
毕业论文基于单片机数字式电子秒表电路设计_第3页
毕业论文基于单片机数字式电子秒表电路设计_第4页
毕业论文基于单片机数字式电子秒表电路设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机数字式电子秒表电路设计摘要时间是工农业生产,国防,人民生活等领域不可缺少的。它涉及到我们工作,生活的各个方面。没有时间人们的一切行为都无法进行。本篇论文是利用单片机(SinglechipMicrocomputer)AT89C51和接口外围电路8279芯片等组成的时钟和秒表双重功能的电子秒表电路。整个电路由硬件电路和软件程序两部分组成。硬件电路由单片机AT89C51接口芯片8279等元件组成,它使用元件少,电路结构简单,功能强;软件程序采用汇编语言进行设计,它结构合理,思路清晰,利用中断服务程序对各种事件进行处理,提高微处理器的工作效率。关键词:微处理器中断接口电路数码显示按键电路AbstractTimeistheindustryandagricultureproduction,nationaldefense,andpeople'slivingareassuchasindispensable.Itinvolvesourwork,allaspectsoflife.Notallthetimepeopleareunabletoact.Thispaperisusingsingle-chipMicrocomputerchip(your)AT89C51andinterfacecircuit8279peripheralcomponents,suchaschipclocksandstopwatchfunctionofelectronicstopwatchcircuit.Thecircuithardwarecircuitandsoftwareprogrambytwoparts.ThehardwarecircuitofmicrocomputerAT89C51,interfacechip8279etc,itUSEScomponentscomponents,suchassimplestructure,thefunctionisstrong,Softwaredesignusingassemblylanguage,itsstructureisreasonable,clarity,usinganinterruptserviceroutinetreatmentofvariousevents,improveworkefficiencyofmicroprocessors.Keywords:Microcomputer,interrupt,interfacecircuit,digitaldisplay,switchcircuit目录TOC\o"1-5"\h\z\o"CurrentDocument"摘要 I\o"CurrentDocument"Abstract n\o"CurrentDocument"目录 III\o"CurrentDocument"前言 1\o"CurrentDocument"设计功能与要求 2\o"CurrentDocument"1.1系统功能 2\o"CurrentDocument"1.2设计要求 2\o"CurrentDocument"设计构思 3\o"CurrentDocument"硬件电路原理框图 4\o"CurrentDocument"硬件电路的设计与实现 5\o"CurrentDocument"AT89C51微处理器介绍 5\o"CurrentDocument"AT89C51微处理器的背景 5\o"CurrentDocument"AT89C51单片机的功能结构 5\o"CurrentDocument"AT89C51单片机的应用 6\o"CurrentDocument"4.2接口芯片的介绍 7\o"CurrentDocument"芯片8279的背景 7\o"CurrentDocument"4.2.2芯片8279的功能结构 7\o"CurrentDocument"4.2.3芯片8279的应用 8\o"CurrentDocument"4.3译码器74LS138功能结构 9\o"CurrentDocument"4.4总线锁存器74LS373功能结构 11\o"CurrentDocument"4.5按键电路的实现 12\o"CurrentDocument"4.6LED数码显示电路的实现 12\o"CurrentDocument"4.7硬件电路的实现 13\o"CurrentDocument"总电路图 13\o"CurrentDocument"硬件电路的工作过程 13\o"CurrentDocument"软件程序的设计与实现 15\o"CurrentDocument"5.1电子秒表主程序设计 15\o"CurrentDocument"主程序的设计构思 15主程序的流程框图 18\o"CurrentDocument"5.1.3主程序的实现 19\o"CurrentDocument"5.1.4键扫描子程序 225.1.58位LED数码管显示子程序 23\o"CurrentDocument"5.2中断服务程序设计 24\o"CurrentDocument"5.2.1中断的概念 24\o"CurrentDocument"中断服务程序的设计构思 25中断服务程序流程框图 26\o"CurrentDocument"中断服务程序实现 26285.3软件程序的调试与运行 28\o"CurrentDocument"直流电源 29\o"CurrentDocument"总结 31\o"CurrentDocument"致 32\o"CurrentDocument"参考文献 33\o"CurrentDocument"附图 34前言时间是工农业生产,国防,人民生活等领域不可缺少的。它涉及到我们工作,生活的各个方面。没有时间人们的一切行为都无法进行。本电路是利用单片机和外围接口电路组成的时钟和秒表双重功能的电子秒表电路。它比仅用分立元件构成的电子秒表电路结构更合理、使用元件少、功能更强大等很多优点。整个电路设计分为硬件电路和软件程序两大部分组成。硬件电路由单片机AT89C51微处理器CPU)接口芯片8279、8位LED数码管显示电路、按键电路等构成。软件程序由主程序和中断服务程序组成。主程序包括主程序初始化设置、键扫描子程序、8位LED数码管显示子程序等。中断服务程序的主要作用是时钟累计和判别时钟是否已运行带到24小时。利用汇编语言实现软件程序,它与硬件电路的关系最直接。设计功能与要求系统功能数字式电子秒表系统具有毫秒、秒、分、时的累进显示功能(到24小时后自动复零),并可以任意设置时钟初值,即可以在任意时刻开机运行。作为秒表,系统可通过按键开始记录时间,在某一事件结束时,又通过按键使秒表停止运行,并显示该事件经历的时间,要求精确到0.01s(即10ms)。设计要求(1) 采用单片机(AT89C51为核心器件,构成数字式电子秒表系统。(2) 用8位LED数码管分别显示时、分、秒、毫秒(显示格式要求为XX、XX、XX、XX)。(3)通过按键,实现下列人机对话功能:①按A键,电子秒表开始计时;②按B键,输入时钟初值;③按C键,时钟清零;④按D键,电子秒表停止计时。(4) 利用定时器/计数器/作10ms的定时,当定时时间到后,进入中断服务程序,在中断服务程序中实现时钟累进。(5)通过4个按键实现时钟运行,停止等人机对话功能,利用8279芯片连接按键盘和LED数码管,实现时钟的显示。设计构思首先,以微处理器AT89C5伪核心,禾I」用微处理器的P0端口和P2端口实现数据、地址的传送。由于P0端口无锁存功能,所以P0端在进行地址传送时需加锁存器。因微处理器 AT89C51芯片有程序存储器EPROM81和数据存储器RAM256字节,所以微处理器没有进行外存储器的扩展,直接禾用微处理器部的程序存储器和数据存储器。其次,禾用8279是一种通用的可编程的键盘/显示器接口芯片,将8279的8个显示器刷新寄存器输出与8个LED数码显示管的八个引脚a、b、c、d、e、f、g、dp经驱动器74LS244相连。由于是8个LED数码管将8279的SL0-SL3扫描线中三根线SL0-SL2经74LS138译码器产生8个扫描线分别接到八个数码管共阴极控制端。禾I」用经74LS138译码后的8个扫描信号与8279的4个回扫信号RL0-RL3组成具有32个键的键盘。再次,系统软件的主程序,它包括三个部分:第一部分为初始化设置,包括设置堆栈指针、8279初始化、定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。第二部分是对键盘进行扫描,判断是否键按下,按的是哪一个键,根据不同的按键实现各种人机对话功能;第三部分是实现电子秒表的显示。最后,中断服务程序,它的主要功能是实现时钟累进,以及如何判断是否已到24小时。硬件电路原理框图硬件电路由微处理器AT89C51锁存器、接口电路、LED数码管、按键电路等组成图3-1硬件电路原理框图硬件电路的设计与实现AT89C51微处理器介绍AT89C51微处理器的背景AT89C系列单片机(微处理器)是ATME公司1993年开始研制生产的,优越的性能价格比使其成为颇受欢迎的8位单片机。AT89C系列与MC—51系列单片机在软、硬件上相互兼容,但AT89C系列与MC—51系列单片机相比有两大优势:第一,片程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整个硬件电路的体积更小。AT89C系列单片机有四种型号:AT89C51AT89C52AT89C1051AT89C2051其中AT89C2051/1051是ATME公司AT89C系列的新成员。它的较小的体积、良好的性能价格比倍受青睐,在家电产品、工业控制、计算机产品、医疗器械等应用方面成为用户降低成本的首选器件。AT89C51单片机的功能结构AT89C51单片机芯片为40个引脚,HMO工艺制造的芯片采用双列直插(DIP)方式,其引脚示意及功能分类如图4.1所示。它具有如下主要特性:AT89C51与MCS-51兼容;部带4KB可编程闪速存储器;寿命为1000次擦/写循环;数据保留时间为10年;工作电压围为2.7V—6V;令静态工作频率为0Hz—24Hz;128X8位部RAM;32条可编程I/O线;2个16位定时器/计数器;

5个两级中断源;可编程全双工串行UARTS道;P:.LP-.1IX.l<.bPl,7Rsr78丄2P:.LP-.1IX.l<.bPl,7Rsr78丄23454Q10

~[F^13■:ADLJPU.L[畑)pru〔临问2IA34.PL..4U-A^'PU.t14TIPJ.iiTKDjf0;2(f«TO}w.Mnni)00(ALb;P2./i:AL4;l;J.'.4L_PSlfj3015n15n1819(All;l-J.2护丄「:1:丄』E>S,6[WR)PJ.71RD)XTAL2XIALL20图4.1AT89C51弓I脚图AT89C51单片机的应用在本电路中AT89C5单片机只用到了P0端口和P2端口的一部分,以及中断INT1(P3.3)、定时器/计数器(P3.5)、读/写状态线(P3.6、P3.7)、复位端RST/VP0(9脚)、ALE/PROG(30脚)允许地址锁存信号端。PSEN(29脚)片外程序存储器读选通信号输出端,按高电平;EA/vpp为访问外部程序存储器控制信号端,按高电平;中断0lNT0(P3.2)按高电平;将P0端口与接口芯片8279的8位数据线DB0-DB7相连,读/写状态线(RD/WR)与接口芯片8279的读/写状态线(RD/WR)相连。XTAL1XTAL2(18、19脚)外接12MHZ勺晶体振荡器。4.2接口芯片的介绍芯片8279的背景8279是一种通用的可编程键盘/显示器接口芯片。它能接收与识别来自键盘列的输入数据并完成预处理,还能显示数据和对数码显示器进行自动扫描控制,是实现CPU与键盘、LED数码显示器之间进行信息交换的1种专用接口芯片。8279与MC—51单片机、AT89C51单片机的接口非常简单,因而在单片机应用系统中得到了广泛的应用。4.2.2芯片8279的功能结构8279芯片有40条引脚,由单一+5V电源供电。它主要由以下几部分组成:I/O控制和数据缓冲器;控制和定时寄存器及定时控制部分;扫描计数器;回送缓冲器与键盘去抖动控制电路;F1F0(先进先出)寄存器和状态电路;显示器地址寄存器及显示RAM8279的引脚如图4.2所示,下面对引脚名称作简要说明:DB0—DB:双向数据总线。A°:命令状态或数据选择线。A)=1,表示从DB—DB线上传送的命令或状态字;Ad=0表示为数据。RD、WR:读、写信号线。IRQ:中断请求线。SL。一SL3:扫描线。若用3—8译码器的话,则扫描线为8选1。RL0—RO:回送线。部有上拉电阻,从此线上得到键盘的回扫信号。outAo—outA3、outBo—outB3:显示器刷新寄存器输出,与扫描线同步。图4.28279引脚图芯片8279的应用在本电路中8279接口芯片管理32个键的键盘和8个LED数码显示器,以及8279芯片与AT89C51单片机相连。作为一个外设接口芯片,8279的片选信号CS由AT89C51的P^、B.6、P2.7这3条地址线经地址译码器译码后得到的(B.7、P2.6、P2.5=111)。其片寻址线A与AT89C5係统的地址线A相连,此时8279数据口的地址号为FF80H命令/状态口的地址号为FF82H8279向AT89C51申请中断的信号,IRQ经反向后与AT89C51的外部中断1的输入端INT1相连。利用扫描线SJSLi、Sb再经3—8译码器74LS138后得到Y0、Y1、…Y78个扫描线与8个LED数码管共阴极端相连。Y0、Y1、…Y78个扫描线与RL、RORL、RL)四个回送线组成32个键编码扫描式工作方式。这种连接方式,10个数字键0—9与编码相一致,而且功能键的编码也是连续的。这给编制键命令分析程序带来了方便。4.3译码器74LS138功能结构3—8译码器74LS138为一种常用的地址译码器芯片,其管脚图如图4.3所示。其中,G、G2A、g2B为3个控制端,只有当G为“1”且G2A、G2B均为“0”时,译码器才能进行译码输出。否则译码器的8个输出端全为高阻状态。译码输入端与输出端之间的译码关系表4.1所示。(PDFSOIC)

TOPVIEW图4.374LS138引脚图图4.374LS138引脚图J-fcjnif—J匚M(Y1冈网w_{Y5丙cQ12345&VYYYYY¥¥F1Z123^F1F113I]AQA1A2ETE2E3Y7NDgG表4.174LS138的译码关系A2A1A0输出有效000Y0001Y010Y2011Y3100Y4101丫5110Y6111丫74.4总线锁存器74LS373功能结构74LS373是一种带输出三态门的8D锁存器,其结构示意图如图4.4所示,其引脚示意图如图4.5所示▼3图4.774LS373结构图4.574LS373引脚其中:1D-8D为8个输入端。1Q-8Q为8个输出端。G为数据打入端:当G为“T时,锁存器输出状态(1Q-8Q)同输入状态(1D-8D);当G由“1”变为“0”时,数据打入锁存器中。为输出允许端:当°E=0时,三态门打开;当°E=1时,三态门关闭,输出呈高阻。4.5按键电路的实现对于键的识别,采用专用的可编程键盘显示器接口 8279,该器件能对数码显示器自动扫描,并能自动识别键盘上闭合键的键号,还能消除键的抖动。这些工作都是由8279自动完成的,并不需要依靠程序来实现。利用扫描线SL2、SL1、SLO再经3—8译码器74LS138后得到丫0、Y1、…Y7的行信号与RL3RL2RL1、RLO回送线组成32个键编码扫描式工作方式。每当按下一个键,8279会自动识别键号,产生相应的键编码自动送入先进先出寄存器FIFO中,同时产生中断请求信号IRQ,向CPU(AT89C51请求中断。当CPU相应中断,执行中断服务程序,并从FIFO寄存器中读取编码数据之后,则IRQ中断信号将自动撤销。如果上一个键的编码数据尚未取走,下一个键又被按下,则新的键码会自动进入FIF0由8个存储单元组成,故最多可依次暂存8个键码。只有在读所有数据时,IRQ中断请求信号才会撤销。在中断服务程序中,CPU是用片外取数指令从FIF0中读取数据。4.6LED数码显示电路的实现由于LED数码显示器为多位,采用动态显示扫描显示方式,即逐个地循环地点亮各位显示器。这样虽然在任一时刻只有 1位显示器被点亮,但是由于人眼具有视觉残觉效益,看起来与全部显示器持续点亮的效果基本一样。为了实现8个LED显示器的动态扫描显示,段码控制信号由8279芯片的outA0—outA3、outB0—outB3显示器刷新寄存器输出。而位控制信号由8279芯片的扫描线SL0SL1、SL2经译码器74LS138输出丫。、Y1、…丫7共8个扫描线与LED显示器数码管共阴极相连。8279芯片数据口首地址为FF80H8位LED显示器的每位显示段码通过显示字符子程序以查看方式(MOVCA,A+DPTR进行确定和输出显示子程序(Display),显示缓冲区的首地址为50耳4.7硬件电路的实现4.7.1总电路图将微处理器AT89C51接口芯片8279,以及各个功能元件按要求进行线路连接,所得电路图见附录。4.7.2硬件电路的工作过程首先,软件程序已固化在程序存储器FLASHRO中。开启直流电源+5V,经R2C3组成的微分电路将微处理器AT89C518279接口芯片进行清零。按C键,时钟清零;按B键,输入时钟初始值,并按时间要求把时、分依次通过0—9和0.—9.数字键将时钟设定;然后,按A键,时钟开始计时。其次,电子秒表功能,按D键将时钟停止计时;通过按C键,时钟清零;按A键,启动电子秒表开始计时;按D键,电子秒表停止计时。再次,为保证处理器AT89C51接口芯片8279可靠工作,外加手动复位功能SW1软件程序的设计与实现5.1电子秒表主程序设计5.1.1主程序的设计构思主程序包括三个部分:第一部分为初始化设置,包括设置堆栈指针、8279初始化、定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。定时器/计数器初始化就是选择定时器/寄存器TMO的工作方式,它的高4位控制定时器T1,低4位控制定时器TO。TMO中各位的定义如下:T1 TOGATECF1M1M0GATECF1M1M000010000TMOD其中:CF1:T/C功能选择位,当CF1=1时为计数方式;当CF1=O时为定时方式。M1M0:T/C工作方式定义位,M1M0=0时为工作方式,16位定时/计数器。TMOD=10H设置定时/计数器初始值,定时 10ms,计数初值X=DC00(MOVTL1,#00HMOVTH1,#0DCH。显示缓冲区初始化,其显示缓冲区的首地址(最低位)为50H共送入8个字符(MOVR0,#50HMOVR2,#08H。二部分主要是通过键扫描实现各种人机对话功能。核心部分是键扫描子程序GETKEYGETKE的主要功能是先通过读8279的状态字,判断是否有键按下,如有键按下则通过读FIFORAM命令,读得键值,通过查表得到相应的键号(0〜F号键相应的键号分别为30H-3FHoGETKEY子程序的出口条件是:如无键按下,A累加器的值为00H;如有键按下,A累加器的值为FFHB寄存器中的容则为键号。通过按键识别实现相应的人机对话功能。各项人机对话功能如下:按“C'键,秒表清零功能:在主程序中将键号和 3CH比较,如相等,则调用时钟清零子程序(CLEA—T)。该子程序功能是将显示缓冲区50H〜57H(分别存放十时、时、十分、分、十秒、秒、百毫秒、十毫秒的数值)全部清零,显示全零。按“A”键,时钟启动计时功能:在主程序中将键盘扫描所得键号和3AH比较,如相等,则调用时钟启动计时子程序(STAR—T)o该子程序的功能是将TR1置1,启动定时器/计数器1工作。按“D”键,时钟停止计时功能:在主程序中将键盘扫描所得序号和3DH比较,如相等,则调用时钟停止计时子程序(STOP_T°该子程序的功能是将TR1置0,关闭定时器/计数器1°按“B”键,设置时钟初值功能:在主程序中将键盘扫描所得键号和3BH比较,如相等,贝U调用设置时钟初值子程序(SET_T。该子程序的功能是通过按8个数字键,设置时钟各位(十时、时、十分、分、十秒、秒、百毫秒和十毫秒)的初值。程序的设计思路是:先通过键扫描确认是否有键按下,然判断键值是否在0〜9之间(即键号是否在30H〜39H之间),以排除非数字键。后将键值(0〜9)依次送入显示缓冲区50H〜57HDANYUAN再调显示子程序实现显示。其中调用了GETWORD程序。该子程序的功能是在键扫描判断出有键按下后,再判断是否按的是0〜9数字键(键号为30H-39H)。判断方法是将键号与C6H相加,如有进位,则表示非0〜9数字键。若在8次键入过程中任何一次输入了非数字键,则8位LED数码管全部显示为零,要求重新输入。 SET_T子程序用一个循环程序实现上述8次键入的功能。第三部分是实现电子秒表的显示。主要调用显示子程序 DISP。该显示子程序与以前所述子程序不同之处是其中某些位要显示小数点。按照课题要求,为区分时、分、秒、毫秒,要求时钟显示格式为XX.XX.XX.XX.,即8位数据显示中每间隔一位要显示一个小数点。 为能显示小数点,本显示子程序中的DISLED子程序与以往有所不同,在以LEDSE为起始地址的段码表中,增加了16个能显示小数点的段码值,如显示“3”的段码为3FH而显示“3.”的段码为BFH这段码的变化在懂得LED数码管工作原理的基础上应不难理解。当在DISLED子程序的段码表中加入16个带小数点的段码后,为实现预定的显示格式,只要在原显示子程序中加上一条ADDA,#10H指令即可。这样,当要求显示数据为“3”时,原通过查表得到的段码应为4FH而现为CFH即显示“3.”,从而使6#、4#、2#、0#LED数码管上显示的数据均带有小数点。5.1.2主程序的流程框图Y键号送A累加器Y判是否为C键Y判是否为A键Y判是否为D键Y调设置时钟初值子程序判是否为调时钟清零子程序调启动计时子程序调停止计时子程序N显示B键图5.1主程序框图主程序的实现ORG0000H;主程序起始地址LJMPSTART;转主程序ORG001BH;定时器T1中断入口地;址LJMPCTC_T1;转中断服务程序ORG0040HSTART:MOVSP,#5FH;设置堆栈指针初始化;程序LCALLP8279;8279初始化MOVTMOD,#10H;设定时器/计数器1为;定时方式,工作方式MOVTL1,00H;定时10msMOVTH1,#0DCHMOVR0,#50H;时钟缓冲区清零MOVR2,#08HCLRALOOP0:MOVR0,AINCR0DJNZR2,LOOP0SETBEA;允许中断SETBET1WAIT:LCALLGETKEY;读键盘CJNEA,#0FFH,CONT;判断是否有键输入MOVA,B;键号送ACJNEA,#3CH,KEY_A;输入键是“C”键,转;CLEAR_TLCALLCLEAR_TSJMPWAITKEY_A:CJNEA,#3AH,KEY_D;输入键是“A”键,;转START_T

LCALLSTART_TSJMPWAITKEY_D:CJNEA,#3DH,KEY_B;输入键是“D”键,;转STOP_TLCALLSTOP_DSJMPWAITKEY_B:CJNEA,#3BH,CONTLCALLSET_TSJMPWAITCONT:LCALLDISPLAYSJMPWAITCLEAR_T:CLRTR1MOVR0,#50HMOVR2,#08HCLRALOOP:MOVR0,AINCR0DJNZR2,LOOPLCALLDISPLAYRETSTART_T:SETBTR1RETSTOP_T:CLRTR1RETSET_T:CLRTR1MOVR1,#50HMOVR2,#08HLOOP1:LCALLGETWORD;输入键是“B”键,;转;输入键是“B”键,;转SET_T;显示时间;循环;时钟清零子程序,关;计数器;时钟缓冲区清零;显示;电子钟开始计时子程序;电子钟停止计时子程序;关计数器,设置时钟初;值子程序;若为非法输入,则转时;钟清零MOVA,BMOVR1,ALCALLDISPLAYINCR1DJNZR2,LOOP1RETINVALID:LCALLCLEAR_T;时钟清零(刚才输入;无效,重新输入)LCALLDISPLAYRETP8279:PUSHDHP;8279初始化子程序PUSHDPL;保护现场PUSHACCMOVDTPR,#0FF82H;FF82H为8179命令/;状态口地址MOVA,#00H;置8279工作方式;(8个字符显示,左;入口,编码扫描键盘,;双键锁定)MOVXDPTR,AMOVA,#2FH;置键盘扫描速率MOVXDPTR,AMOVA,#0C1H;清除LED显示MOVXDPTR,APOPACC;恢复现场POPDPLPOPDPHRETGETWORD:;判有效按键子程序WKEY1:LCALLGETKEY;读键盘CJNEA,#0FFH,WKEY1;无键输入,则再读

MOVA,BADDA,#0C6HJCERROR39HMOVA,BSUBBA,#30HJCERRORMOVB,AMOVA,#0FFHRETERROR:MOVA,#00HRET键扫描子程序GETKEY:PUSHDPHPUSHDPLPUSHPSWMOVDPTR,#0FF82H口地址MOVXA,DPTRANLA,#07HJNZGETVALMOVA,#00HSJMPNKBHITGETVAL:MOVA,#40HMOVXDPTR,AMOVDPTR,#0FF80H;判断输入键号是否大于;判断输入键号是否小;于39H;键号值存B;判断输入键号是否大于;判断输入键号是否小;于39H;键号值存B;置合法输入标志;置非法输入标志;读取键值子程序;保护现场;FF82H为8279命令/状态;读8279状态;屏蔽D7-D3;判断是否有键输入;置标志(无键输入);读FIFORAM命令;FF80H为8279数据口;地址;读键值;屏蔽SHIFT和CTRL键;置键码表起始地址MOVDPTR,#KEYCODEMOVCA,A+DPTR;查表MOVB,A;置键值MOVA,#0FFH;置标志(有键输入)NKBHIT:POPPSWPOPDPLPOPDPHRETKEYCODE:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,3AH,3BH,3CH,3DH,3EH,3FH5.1.58位LED数码管显示子程序DISPLAY:MOVR0,#50H;8个数码管显示子程序MOVR4,#07HLOOP2:MOVA,R0MOVR5,ALCALLDISPLAYINCR0MOVA,R0ADDA,#10HMOVR5,ADECR4LCALLDISLEDINCR0DECR4CJNER4,#0FFH,LOOP2RETDISLED:PUSHDPH;显示字符子程序PUSHDPL;保护现场PUSHACCMOVA,#80H;置显示起始地址ADDA,R4;加位置偏移量MOVDPTR,#0FF82H;FF82H为8279命令状;态口地址MOVXDPTR,A;设置显示位置MOVDPTR,#LEDSEG;置显示常数表起始位置MOVA,R5MOVCA,A+DPTR;查表MOVDPTR,#0FF80H;FF80H为8279数据口地址MOVDPTR,A;显示数据POPACCPOPDPLPOPDPHRETLEDSEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;‘0,1,3,4,5,6,7'DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;‘8,9,A,B,C,D,E,F'DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,OFDH,87H;‘0,1.,2.,3.,4.,5.,6.,7.'DB0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H;‘8.,9.,A.,B.,C.,D.,E.,F. '5.2中断服务程序设计中断服务程序主要的功能是实现时钟累进,以及如何判别是否到24小时。中断的概念中断是单片机实时地处理部或外部事件的一种部机制。当某种部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。中断服务程序的设计构思1)所谓“时钟累进”,是指时钟显示缓冲区的8位数值按一定规律逐位递进。由于定时时间为10ms故每进一次中断,显示缓冲区的十毫秒位(57H单元)容应加1,后判断是否已加到OAH(即已加了10次),如不是,则马上跳出时钟累进程序;但如是,则需先将本单元容清零,后使百毫秒位(56H单元)容加1。此时,又需判断百毫秒位是否加到OAH如不是,则又跳出时钟累进程序。但如是,则又需将56H单元容清零,而使上一位(55H单元)容加1。以此推,实现十毫秒、百毫秒、秒、十秒、分、十分、时、十时的逐位递进。由于逐位递进的进位制不全相同,如十秒位进分位及十分位进时位均为六进制(即60秒为1分,60分为1小时),故给程序的编写带来一些麻烦。在时钟累进程序段的设计中采用查表的方法来解决此问题。在程序中设置 8次循环,自57H单元开始逐位递进。先将57H单元容加1,后将该单元容暂存于B,再通过查表找到该位的进位制,与该位的容进行比较,如不等,则直接跳出时钟累进程序;如相等,则本位清零,上一位容加1,以此类推,最终实现时钟累进。2)判时钟是否已运行到24小时。事实上,每天只有一个瞬间,即在23.59.59.59时,如再进行一次中断,时钟便会累进到24.00.00.00。此时,只要判50H和51H单元容是否为02H04H即可。在具体程序设计中,当每次时钟实现累进后,先将50H单元的容OXH用SWAPA旨令将之变为X0H后与51H容(0XH相加,再跟24H相比较,如不等,表示时钟还没运行到24小时,则跳至恢复现场后返主;如相等,表示时钟已运行到24小时,此时,只需将50H51H单元容清零即可(因52HH57H单元容已为零),时钟又从00.00.00.00重新开始运行523中断服务程序流程框图图5.2中断服务程序框图524中断服务程序实现CTC_T1:CTC_T1:PUSHDPHPUSHDPLPUSHACCPUSHPSWMOVTL1,#00HMOVTH1,#0DCHMOVR0,#57H;中断服务程序;保护现场;定时10ms;时钟累进程序MOVDPTR,#TABMOVR2,#08HLOOP3:INCR0MOVA,R0MOVB,ACLRAMOVCA,A+DPTRCJNEA,B,NEXTMOVR0,#00HDECR0INCDPTRDJNZR2,LOOP3NEXT:MOVR0,#50HMOVA,R0SWAPAINCR0ADDA,R0CJNEA,#24H,NEXTMOV50H,#00HMOV51H,#00HEXIT:POPPSWPOPACCPOPDPLPOPDPHRETI;判是否到24小时;恢复现场5.3软件程序的调试与运行首先对软件程序进行编译,看是否有语法上的错误,在这里是借助WAV软件进行检查。其次在完成编译的情况下,打开菜单上的CPU窗口及数据窗口,在软件上模拟,并且观察各个窗口中数据的变化,该过程可以检查所编译的程序是否是自己所要的显示值。最后,由于无单片机实验开发及仿真硬件系统,无法知道软件调试成功后硬件的运行情况,今后在此方面进行改进和加强。直流电源图6.1直流电源电路图首先,通过变压器T进行交流变压为交流12V,再经过桥式整流VD1-VD铲生脉动10.8V的单向的直流信号,其计算公式为UC1=0.9U其次,通过RC滤波,产生直流15.1V的直流电压,其计算公式为UC1=1.4UI经过三端稳压器LM7805和LM7810产生稳定的直流输出电压+5V。为保证输出电压的稳定和减小交流波纹系数,增加滤波电容C2和输出电阻R2=200K以保证输出直流电压的稳定。直流电源元件选择如表 直流电源元件选择如表 6.1序号名称型号单位数量说明1变压器TRANS1个1进行交流变压2桥式整流器IN4007个4产生单向直流信号3电解电容1000UF/15V个1产生直流电压4三端稳压器7805个1产生稳定的直流输出电压5滤波电容470FU/15V个1滤波6电阻R2个1分压总结本篇论文是利用单片机(SinglechipMicrocomputer)和接口外围电路组成的时钟和秒表双重功能的电子秒表电路。整个电路由硬件电路和软件程序两部分组成。硬件电路使用元件少,电路结构简单,功能强;软件程序设计结构合理,思路清晰,利用中断服务程序对各种事件进行处理,提高微处理器的工作效率。硬件电路由单片机AT89C51微处理器CPU)接口芯片8279、8位LED数码管显示电路、按键电路等构成。软件程

温馨提示

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

评论

0/150

提交评论