设计题目电子跑表_第1页
设计题目电子跑表_第2页
设计题目电子跑表_第3页
设计题目电子跑表_第4页
设计题目电子跑表_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、设计题目:电子跑表设计要求:利用8031作为主控制器组成一个电子跑表,采用4位LED显示器。上电或RESET后能启动显示当前(时:分):首次上电复位显示为0时0分,以后各次RESET均显示正确的当前时间。当按下START键时,作为跑表使用,显示范围是:000.0-999.9秒,当按下STOP键时,跑表停止运行,并保留所停位置的时间显示不变。利用H键作为时钟校正,即当按下H键时,显示的当前小时值以每秒加一的速度递增(24点即为0点),利用N键作为分校正,使用方法同H键,但60分钟即为0分。设计的作用及目的:1、利用单片机定时器中断和定时器计数方式实现跑表和时钟功能。2、通过该次课程设计熟悉803

2、1、CD4511与LED的接口技术。3、熟悉LED功能显示的控制过程。4、熟悉键盘扫描原理。5、熟悉8031定时器中断和定时器计数方式的功能使用,为以后的工作和学习打下坚实的基础。6、学会如何编制含定时器中断、键盘扫描和LED静态显示等多种功能的综合程序初步体会大型程序的编制和调试技巧。所用仪器设备: 单片机(8031)、PROM(2764)、锁存器(74LS373)、锁存/译码/驱动块(CD4511)、LED数码管(四个)、按键(4个)具体设计:(1)、设计原理:在讲设计原理之前我们先来介绍一下8031。8031是INTEL公司MCS-51系列单片机中最基本的产品,它采用INTEL公司可靠的

3、CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,标准MCS-51单片机的体系结构和指令系统。8031内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。但8031片内并无程序存储器,需外接ROM。 主要功能特性:标准MCS-51内核和指令系统 外部程序存储器ROM地址空间64kB 32个可编程双向I/O口 1288 bit内部RAM(可扩充64kB外部存储器) 2个16位可编程定时/计数器

4、 时钟频率3.5-16MHz 5个中断源 5.0V工作电压 全双工串行通信口 布尔处理器 2层优先级中断结构 兼容TTL和CMOS逻辑电平 PDIP(40)和PLCC(44)封装形式8031芯片引脚图本系统是利用8031的定时/记数器T0/T1的定时和记数功能来实现跑表和时钟功能的。首先为完成时钟的功能,需要使用定时器T0产生一秒的中断,并在中断程序中完成每一秒数字的变化,并在主程序中显示该字符。其次是实现秒表的功能,在实现跑表的功能时,时钟是不能停止的,否则显示的时间就会不正确。因此我们使时钟的中断优先级高于秒表的优先级,在执行跑表程序时,会被时间中断,从而消除时钟的误差。但这会使跑表的时间

5、产生误差,这是不可避免的,因为单片机每次只能执行一个任务,所以我们只能尽量减少误差。如果我们使时钟的中断周期大于跑表的中断周期,这样误差会相对减少些。(2)、硬件电路设计及总电路图:1、ROM的选择:本系统要求采用8031,但是由于8031中没有存储器所以我们采用8K8位的EPROM2764作为片外程序存储器,2764是28引脚的可用紫外线擦除的可编程只读存储器,可以让用户擦写上千次,非常适合于廉价的开发。它是由NMOS工艺制成的,其读写访问时间根据不同的型号可从200nS到500nS,它采用单一电源+5V,三态输出,与TTL电平兼容。商业品工作温度范围是0+70,工业品温度范围是-25+85

6、。2764的引脚图2、LED静态显示接口电路:LED静态显示接口电路由笔段代码锁存器、笔段译码器(由软件译码的LED静态显示驱动电路不需要笔段译码器)等部分组成,本次设计采用的是4位LED静态显示接口电路,该电路使用具有锁存、译码、驱动功能的CD4511作为锁存译码驱动电路,笔段测试输入LT及消隐输入BI接高电平(无效),锁存输入端LE 分别接P1.7、P1.6、P1.5、P1.4。当LE由低电平变为高电平时,锁存了输入端ABCD的状态,译码输出也相应地保持不变,即CD4511为上升沿锁存。本设计之所以采用CD4511,是因为它自带了锁存功能,不需要另外接锁存器了,因此缓解了单片机口线紧张的问

7、题。 具体电路图如下: 字型与字段关系显示字符gfedcba字型码共阴极共阳极001111113FHC0H1000011006HF9H210110115BHA4H310011114FHB0H4110011066H99H511011016DH92H611111017DH82H7000011107HF8H811111117FH80H911011116FH90HA111011177H88HB11111007CH83HC011100139HC6HD10111105EHA1HE111100179H86HF111000171H8EH3、系统的完整硬件电路图如附图所示:(3)系统软件设计基于单片机的电子跑表

8、在设计时要解决3个方面的主要问题:一是LED显示模块的驱动和编程,二是有关单片机中定时器的使用,三是如何利用单片机的外中断实现时钟功能和运行模块的转化。采用8031的T0以工作方式1产生125ms的定时,并且系统的时钟频率为6MHz,显然需要记数62500个机器周期才可获得125ms的定时。设定时器T0的记数初值为X,则X+62500= X=65536-62500 X=3036其对应的十六进制为0BDCH,将其存入T0计数器:(TH0)=0BH,(TL0)=0DCH采用中断方式记数定时器T0溢出的次数,连续记数8次即为1秒。由于课题只要求时钟显示分位和时位,所以我们得连续记数8x60次以构成一

9、分钟。在实现跑表程序时我们采用8031的T1以工作方式1产生100ms的定时。以同样的计算方法可得到秒表的记数初值为?由于课题要求跑表的时间精度为0.1秒,所以只需中断方式记数定时器T1只需溢出1次就可以了。3、按键去抖动问题当扫描表明有键被按下后,紧接着应进行去抖处理程序;因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如下图所示。抖动时间长短与键的机械特性有关,一般为5-10ms,而键的稳定闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。为了保证键扫描的正确,需进行去抖处理。去抖有硬件和软件两种方法

10、。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,而软件方法则是采用时间延迟以躲过抖动,待按键上的状态稳定之后,再进行状态输入。为简单起见我采用了软件去抖处理。键按下键稳定前沿抖动后沿抖动 键闭合和断开时的电压抖动4、程序流程图设计设置记数初值START按下否调用跑表程序设置堆栈显示缓冲区清零否是执行调时程序调用时钟程序调用显示子 程 序调用显示子 程 序 3、编写程序:主程序: ORG 00H ;主程序起始地址 JMP START ;跳到主程序ORG 0BH ;定时/记数器T0的地址 JMP TIM0 ;跳到T0中断子程序(时钟子程序) ORG 1BH ;定时/记数器T1的

11、地址 JMP TIM1 ;跳到T1中断子程序(跑表子程序)START: MOV SP,#70H ;设置堆栈在70H MOV R0,#79H ;显示缓冲区首地址 MOV R7,#04H ;显示位数 ML1: MOV RO,#00H ;显示缓冲单元清0 INC R0DJNZ R7,ML1 MOV TMOD,#11H;设置 T0 、T1 MOV TL0,#0DCH ;时钟的定时初值 每中断一次为125mS MOV TH0,#0BH MOV TH1,#3CH ; 跑表的定时初值 每中断一次为100mS MOV TL1,#0B0H MOV IE,#10001010B ;T0,T1中断使能 也使T0的优先

12、级大于T1 MOV P3,0FFH ;使用P3口的I/O口功能,使P3口置1MOV R4,#480; 中断860次 以构成1分钟 JNB P3.2,LOOP ;START键没有按下?没有就跳到LOOP ACALL DELAY ;消除抖动ACALL TIM1 ;START键按下则调用跑表子程序LOOP: JB P3.3,N2 ;H键按下没有?没有则跳到N2检查N ACALL DELAY ;消除抖动 MOV R0,#7AH ;将分寄存器的值载入M1: ACALL DAAD1 ; 调用加1子程序 ACALL DISP ; 调用显示子程序MOV A,R2 ;将分寄存器的值载入A中CJNE A,#60H

13、,N3 ;判断是否等于60分?不是则跳到N2 MOV 7AH,#00H ;是则清除分寄存器的为00ACALL DISP ; 调用显示子程序N1: JNB P3.3,M1 ;P3.3放开了没有?没有放开继续返回加1ACALL DELAY ; 消除抖动N2: JB P3.4,LOOP ; N键按下没有?没有则跳到LOOP检查H键ACALL DELAY ; 消除抖动MOV R0,7CH ; 将时寄存器的值载入R0M2: ACALL DADD1 ; R0的内容加1ACALL DISP ; 调用显示子程序MOV A,R2 ;CJNE A,#24H,N3 ; 判断是否等于24小时?不是则跳到LOOPMOV

14、 7CH,#00H ;等于24小时,则将时寄存器清0ACALL DISP ; 调用显示子程序N3: JNB P3.4,M2 ;判断H键放开没有?没有则跳到M2继续加1ACALL DELAY;时钟中断子程序TIM0: PUSH PSW ;中断服务程序现场保护PUSH ACCPUSH R0PUSH R2MOV TL0,#0DCH ;重载记数初值MOV TH0,#0BHMOV A,R4 ;将循环次序存入A中DEC AMOV R4,A;JNZ RET0 ;不满860次则转RET0返回MOV R4,#480 ;满860次,开始记时操作MOVR0,#7AH ;分显示缓冲单元地址ACALL DAAD1 ;调

15、用加1子程序ACALL DISP ; 调用显示子程序MOV A,R2 ;加1后分值存在R2中XRL A,#60H ;判断是否到60分JNZ RET0 ;不到 则转RET0返回ACALL CLR0 ;到60分显示缓冲单元清0MOV R0,#7CH ;时显示缓冲单元地址ACALL DAAD1 ;时加1ACALL DISP ; 调用显示子程序MOV A,R2 ; 加1后时值存在R2中XRL A,#24H ;判断是否满24JNZ RET0 ;没有,则转RET0返回ACALL CLR0 ; 到24小时显示缓冲单元清0RET0: POP ACC ;现场恢复 POP PSW POP R0 POP R2 RE

16、TI;跑表中断子程序TIM1: PUSH PSW ; 中断服务程序现场保护PUSH ACCMOV TL1,#3CH ; 重载入记数初值MOV TH1,#0B0HMOV R0,#7DH ;将显示缓冲单元地址送R0中ACALL DAAD1 ;调用加1子程序MOV A,R2 ;将秒值送A中XRL A,#00H ;判断是否为0JNZ RET MOV R0,7FH ;将显示缓冲单元地址送R0中ACALL DAAD1 ;调用加1子程序MOV A,R2 ;将秒值送A中XRL A,#10HJNZ RET1RET1: POP ACCPOP PSWRETI;加1子程序DAAD1: MOV A,R0 ;加1子程序,

17、十位数送ADEC R0 SWAP A ;十位数占高4位 ORL A,R0 ;个位数占低4位 ADD A,#01H ;加1 DA A ;十进制调整 MOV R2,A ;全值暂时寸R2中 ANL A,#0FH ;屏蔽十位数,取出个位数 MOV R0,A ;个位数送显示缓冲单元 MOV A,R2 INC R0 ANL A,0F0H ; 屏蔽个位数,取出十位数 SWAP A ;使个位数占低四位 MOV R0,A ; 十位数送显示缓冲单元 RET ;返回;清缓冲单元子程序CLR0: CLR A ;清缓冲单元子程序 MOV R,A ; 十位清缓冲单元清零 DEC R0 MOV R0,A ; 个位清缓冲单元

18、清零 RET ;返回 ;延时子程序DELAY: MOV R6,#60 ;5毫秒D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET ;返回;显示子程序MOV R0,#30H ;取显示缓冲区首地址;显示个位MOV A,R0 ORL A,#1110000B ;屏蔽千、百、十位ANL A,#11101111B MOV P1,A ;将个位显示信息送P1SETB Acc.4 ;使P1.4为高电平MOV P1,A ;显示十位INC R0 MOV A,R0 ORL A,#11010000B ;屏蔽千、百、个位ANL A,#11011111B MOV P1,A ; 将十位显示信息送

19、P1SETB Acc5 ; 使P1.5为高电平,数码不变,送P1口MOV P1,A ;显示百位 INC R0MOV A,R0 ORL A,#10110000B ;屏蔽千、十、个位ANL A,#1011111BMOV P1,A ;将百位显示信息送P1SETB Acc.6 ; 使P1.6为高电平,数码不变,送P1口;显示千位INC R0MOV A,R0ORL A,#01110000B ;屏蔽十、百、个位ANL A,#01111111BMOV P1,A ;将千位显示信息送P1SETB Acc.7 ; 使P1.7为高电平,数码不变,再送P1口MOV P1,ARET ;返回调试过程及现象程序编写完毕,就

20、可开始系统的仿真调试,应该先采取软件仿真,确保整个程序无语法错误,然后开始硬件仿真,排除逻辑错误及其他错误。本设计采用8031单片机,并扩展了EPROM2764,故采用。完成了硬件的设计,制作和软件的编程之后,要使系统能够沿设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过作为一个计算机系统,其运行是软硬件相结合的,因此,软硬件的调试也是绝对不能分开的,硬件的调试常常要利用调试软件,而软件的调试也可能需要通过对硬件的测试和控制来进行。1、硬件调试硬件调试的主要任务是排除硬件故障,其中也包括了设计错误和工艺性故障。(1)脱机检查:用万用表逐步按照电路原理图检查印制电

21、路板中所有器件的各引脚,尤其是电源的接线检查,看其接线是否正确;检查数据总线,地址总线和控制总线是否有短路等故障,顺序是否正确;检查各个开关按键是否能够正常打开,是否连线正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定无误后在插入芯片检查。(2)联机检查 暂时拔掉芯片,将仿真器的40芯片仿真插头插入8031的芯片插座进行仿真,检验显示电路是否满足设计要求。可以通过一些简单的测试软件来查看接口是否正常。2、软件调试 软件调试的任务是利用软件的开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。 程序的调试应该一个模块接一个模块地进行,首先

22、单独调试各共能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正确等;最后是逐步将各个子程序连接起来总调试。联调需要注意的是:各个子程序间能否正确传递参数,特别需要注意各个子程序的现场保护与恢复,调试的基本步骤如下:(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。(2)运行主程序,调试计时模块,不接任何键.3、脱机运行 软硬件调试成功后,可以将程序固化到2764中去了,插入89C51芯片,接上电源脱机运行。既然软硬件都已调试成功,脱机运行似乎肯定成功,然而事实往往并非如此,仍有可能有故障:系统不工作:其原因有晶振不起振(晶振已经损坏,晶振电路不正常,导致晶振信号微弱等),或没有接高点平(接地或悬空);系统工作时好时坏: 这主要是由于电路干扰引起的,由于本系统没有控制输出通道,干扰源相对比较少且简单,应此,在电源,总线对地接滤波电容一般可以解决问题。调试过程中出现的问题及解决方法LED显示的时间与发光二极管的变化不符?将LED显示管字型码更换一下,即可。心得体会为期一周的单片机课程设计已经接近尾声了。记得刚拿到设计课题时,觉得这个题目太简单了,不就是一个电子跑表吗!非常熟悉的东西啊。可是当真正投入设计时,很多问题出来了。在这次设计中遇到的问题及解决方

温馨提示

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

评论

0/150

提交评论