at89c51led数码管秒表的制作1到99秒
时间: 2023-11-18 09:05:34 浏览: 102
制作一个基于AT89C51单片机的LED数码管秒表,可以通过按键实现计时和复位功能。以下是制作步骤:
1. 硬件准备:AT89C51单片机、LED数码管、按键、电阻、电容、晶振、电源等。
2. 连接硬件:将LED数码管的七个数码管引脚分别连接到单片机的7个输出口,将按键引脚连接到单片机的2个输入口,并连接合适的电阻和电容以及晶振和电源。
3. 编写程序:使用汇编语言编写程序,实现计时和复位功能。具体实现过程可以参考以下代码:
```
ORG 0H
MOV TMOD, 01H ; 定时器0工作方式1,计时器
MOV TH0, 0 ; 定时器0高位计数器清零
MOV TL0, 0 ; 定时器0低位计数器清零
MOV P0, #0FFH ; 数码管全部关闭
MOV P2, #0FFH ; 按键全部上拉
MOV IE, #81H ; 开启定时器0中断和外部中断0
SETB TR0 ; 启动定时器0
SETB EA ; 开启总中断
SJMP $
TIMER0_ISR:
CLR TR0 ; 关闭定时器0
MOV TH0, 0 ; 定时器0高位计数器清零
MOV TL0, 0 ; 定时器0低位计数器清零
INC COUNT ; 计数器加1
CPL P0.7 ; 数码管最高位取反
JB COUNT.6, SKIP ; 判断计数器是否为偶数,是则跳过
MOV A, COUNT ; 将计数器值存入累加器A
DIV AB, #10 ; 累加器A除以10,商在A,余数在B
MOV P0, #0FFH ; 数码管全部关闭
MOV P0, DIGIT_TBL+B ; 根据余数显示数码管
MOV A, C ; 将商存入累加器A
MOV P0, #0FEH ; 打开数码管第二位
MOV P0, DIGIT_TBL+A ; 根据商显示数码管
SKIP:
SETB TR0 ; 启动定时器0
RETI
EXTERNAL0_ISR:
MOV COUNT, #0 ; 计数器清零
MOV P0, #0FFH ; 数码管全部关闭
SETB TR0 ; 启动定时器0
RETI
COUNT EQU 30H ; 计数器变量地址
DIGIT_TBL DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ; 数码管显示表
END
```
4. 烧录程序:将编写好的程序通过编程器烧录到单片机中。
5. 测试:连接电源后,按下启动按键即可开始计时,再次按下可复位计时器。
通过这样的步骤,就可以制作一个简单的LED数码管秒表,实现1到99秒的计时功能。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)