定时器数码管0到99计数
时间: 2023-08-05 20:40:09 浏览: 53
好的,这是一个简单的计数器程序,使用了一个定时器和一个数码管。下面是代码示例:
```c
#include <reg51.h>
sbit DIO = P1^0; // 数码管 DIO 引脚连接到 P1.0
sbit CLK = P1^1; // 数码管 CLK 引脚连接到 P1.1
unsigned char code table[] = { // 数码管显示数字表
0xc0, // 0
0xf9, // 1
0xa4, // 2
0xb0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xf8, // 7
0x80, // 8
0x90, // 9
};
void delay(unsigned int xms) { // 延时函数
unsigned int i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void display(unsigned char num) { // 数码管显示函数
unsigned char i;
for (i = 0; i < 8; i++) {
DIO = (table[num] & 0x80) >> 7;
table[num] <<= 1;
CLK = 1;
CLK = 0;
}
}
void main() {
unsigned char i, j;
TMOD = 0x01; // 设置定时器为模式1
TH0 = 0x3c; // 设置定时器初始值
TL0 = 0xb0;
TR0 = 1; // 启动定时器
while (1) {
if (TF0 == 1) { // 定时器溢出时
TF0 = 0; // 清除溢出标志
TH0 = 0x3c; // 重新设置定时器初始值
TL0 = 0xb0;
i++; // 计数器加1
if (i >= 100) i = 0; // 如果计数器溢出,则从0开始
display(i / 10); // 显示十位数字
delay(5);
display(i % 10); // 显示个位数字
delay(5);
}
}
}
```
这个程序使用了定时器模式1,定时器的溢出时间为1ms,所以每1ms会进入一次中断,计数器加1,然后显示计数器的值。因为使用了延时函数,所以数字显示的时间并不精准。如果要精确控制显示时间,可以使用定时器的输出比较功能来触发中断,然后在中断中控制数码管的显示。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](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)