本文档详细介绍了基于单片机技术实现的电子秒表的设计过程,包括硬件选型、电路设计和软件编程等方面的内容。
基于单片机的电子秒表设计
1. 控制器的选择:
选用AT89C52单片机作为控制器是因为它具有强大的算术运算功能、灵活自由度大的软件编程能力,能够实现各种算法及逻辑控制。此外,由于其低功耗、体积小、技术成熟且成本低廉等优点,在各个领域广泛应用。
2. 数码管的选择:
本实验采用共阳极数码管进行LED显示。
字形码表的产生:
以共阳极为例,当每一段接收到低电平时会亮起。不同的组合可以显示出不同的数字,具有一定的对应关系。
具体的对应关系如下:
0: dgfedcba, 80H
1: dgfedcba, C0H
2: dgfedcba, A4H
3: dgfedcba, B0H
4: dgfedcba, 99H
5: dgfedcba, 92H
6: dgfedcba, 82H
7: dgfedcba, F8H
8: dgfedcba, 80H
9: dgfedcba, 90H
静态显示:
在静态显示方式下,每一位显示器的字段控制线是独立的。当显示某一字时,该位的各字段线和字位线电平不变,即各字段亮灭状态不变。
动态显示:
利用人眼视觉暂留效应通过分时选择不同的数码管实现正常显示效果。本实验采用动态设计方式,P0口与数码管相连,P0.0—P0.7分别对应数码管的dgfedcba位,而P2.0—P2.2作为数码管的位控制线,在高电平时对应的数码管会亮起;同时通过按键检测来启动和停止秒表计时功能。
3. 设计说明:
当打开电源进入待机状态后程序开始运行。此时向P0口发送80H,给p2.0送入高电平选择数码管最低位,数码管显示数字8,经过一秒延时后再将位控制线左移一位并选中P2.1继续循环。检测到第四位为高电平时程序返回至初始状态重新开始计数。
在初始化阶段清空缓存区71H, 72H, 73H,并开启中断及T1定时器的计时功能,按下启动键后电子秒表将进入工作模式。采用方式1进行50ms延时设计,在两次中断后使毫秒位加一;当该位置数满十次则字形码向前移动一位并累加秒位数值。
若秒位记满十个单位,则再次向前进位至“十分”计数器,并显示当前数字,直至十进制计数完毕重新开始。按下停止键时可中断整个计时过程。
4. 程序流程图:
略(原文未提供具体程序流程图)
5. 程序清单:
```
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP START
ORG 0013H
LJMP STOP
ORG 001BH
LJMP BRT1
MAIN:
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB EX0
SETB EX1
SETB ET1
SETB IT0
SETB IT1
SETB EA
SETB PT1
SETB PX1
MOV R4,#2
MOV 71H,#00H
MOV 72H,#00H
MOV 73H,#00H
LOOP1:
MOV P0,#80H
LOOP2:
MOV A,#01H
ACALL DEL
RL A
JB ACC.3 , LOOP1
SJMP LOOP2
DEL:
MOV R7,#10
DEL1:
MOV R6,#200
DEL2:
MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
START:
SETB TR1
ACALL DISP
RETI
STOP:
CPL TR1
RETI
DISP:
MOV R0,#71H
MOV R1,#01H
DISP1:
MOV A,R1
MOV P2,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
```