一、设计题目和要求:
题目三:秒表
应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
二、设计目的:
1.进一步掌握AT89C51单片机的结构和工作原理;
2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;
3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法; 4.掌握PROTEUS仿真软件的使用方法; 5.掌握LED数码管原理及使用方法。
6.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 7.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、系统总体设计框图
四、器件介绍
1.AT89C51
AT89C51单片机的主要工作特性:
·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器;
·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR;
·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位;
2.共阳极7段数码管
LED数码管根据LED的接法不同分为共阴和共阳两类,图1是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将\"b\"和\"c\"段接上正电源,其它端接地或悬空,那么\"b\"和\"c\"段发光,此时,数码管显示将显示数字“1”。而将\"a\"、\"b\"、\"d\"、\"e\"和\"g\"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。
3.74LS47译码器
译码器的逻辑功能是将每个输入的二进制代码译成对应的输出的高、低电平信号。常用的译码器电路有二进制译码器、二--十进制译码器和显示译码器。译码为编码的逆过程。它将编码时赋予代码的含义“翻译”过来。实现译码的逻辑电路成为译码器。译码器输出与输入代码有唯一的对应关系。74LS47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用,
五、程序(汇编语言) ORG 00H
START:
MOV P0,#00H MOV R1,#99 JNB
P3.4,PRESS
JNB P3.5,CLEAR
AJMP CLEAR: MOV p0,#00H JNB P3.4,PRESS
AJMP CLEAR
PRESS: MOV A,#00H; PRES: MOV P0,A; MOV R5,#10;
JNB P3.5,CLEAR
ADD_1: CALL DELAY DJNZ R5,ADD_1; ADD A,#01H; DA A ; DJNZ R1,PRES;
AJMP CLEAR; DELAY: MOV R6,#200 ; 0.10D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END
START
从0开始 送显 为延时1秒设定的寄存器初始值 循环一次完成一秒延时 计时值加一 十进制调整 判断是不是到99秒
计时到99后跳转到CLEAR持续显示00
秒延时子程序 六、课程设计心得体会
本文主要从软硬件两方面说明设计的总体思路和设计的实现过程,预期的设计目的是:能够实现时钟的基本功能,正常显示秒.在设计过程中,曾经遇到很多的障碍,设计图经过许多次的修改最后才定下来,但在调试的过程中又出现了问题,需要修改原理图;比如硬件的布局,要作到使连接的线路最短,并不没有想象中的那么容易;并且对汇编语言有了进一步的了解。
不足之处是追求简单,未用到计时器,中断的知识,导致复位反应时间长短不一。
七、Protues软件仿真截图
因篇幅问题不能全部显示,请点此查看更多更全内容