四位数码管可调定时器设计与实现
需积分: 7 3 浏览量
更新于2024-09-16
收藏 907KB DOC 举报
本文档介绍了一个基于四位数码管的可调定时器的设计项目,其核心功能是实现一个简易秒表。该秒表采用了8051单片机(如80C51或兼容型号)作为控制单元,使用了4M晶振提供稳定的时钟,并配置了两个按键(key1和key2)进行操作。
1. **硬件连接**:
- 数码管P07至P00连接到单片机的A~DP口,用于显示数字。
- 按键key1(P3^2)用于设置秒表的最大范围,key2(P3^3)用于启动和暂停秒表。
- P1^0、P1^1和P1^2用于控制按键状态的标志位。
2. **软件结构**:
- **定义**部分包含了宏定义和变量声明,如无符号整型、字符型以及按键标志位sbit key1、key2。
- **函数**部分:
- `chu()`:定时器中断初始化子函数,负责设置定时器的工作模式和中断处理程序。
- `sao()`:数码管显示扫描子函数,负责驱动数码管显示数字。
- `clk()`:数码管恢复服务子函数,处理数码管段选信号。
- `delay_5ms(del)`:延时函数,用于控制程序执行速度。
- `key_1()`:按键设置器,处理按键key1的输入并进行相应操作。
3. **操作流程**:
- **功能描述**:
- 主函数`main()`是程序的核心,用于整个系统的初始化、按键处理和秒表控制。
- 设定秒表最大值:通过按键key1触发,将设置的值保存在累加器fm_s中。
- 启动和暂停秒表:按键key2负责开始和暂停秒表的计时,暂停状态下才能使用key1进行设置。
- 显示控制:秒表计数器i增加时,秒位显示用临时数组temp_d,分和秒的累加器fm和m通过临时缓存m_g和fm_g更新,然后通过sao()函数驱动数码管显示。
4. **设计背景与时间**:
- 本项目于2011年12月5日设计完成,显示了当时的编程技术和硬件配置,适用于教学、实验或简单的嵌入式系统应用。
5. **总结**:
这个可调定时器设计利用了8051单片机的中断机制,结合按键控制,实现了四位数码管显示的简单秒表功能。通过调整按键设置,用户可以灵活设定秒表范围,而按键操作则方便控制秒表的运行和暂停。整体设计考虑了基本的交互和实时性要求,适合初学者了解单片机定时器和数码管显示的应用。
138 浏览量
2020-07-30 上传
116 浏览量
2021-02-03 上传
194 浏览量
2021-01-19 上传
120 浏览量
点击了解资源详情
点击了解资源详情