利用中断写一个七段数码管静态显示0—9
时间: 2024-03-14 22:43:37 浏览: 26
好的,以下是示例代码:
```c
#include <reg52.h>
// 定义数码管显示的数字
unsigned char code num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
// 中断服务函数
void timer0_isr() interrupt 1
{
static unsigned char i = 0; // 静态变量,用于记录当前要显示的数字
P0 = num[i]; // 在P0口输出当前数字对应的编码
i++; // 更新i的值,为下一次显示做准备
if (i > 9) // 如果i超出了数字的范围,重置为0
i = 0;
}
void main()
{
TMOD = 0x01; // 定时器0工作在模式1(16位定时器)下
TH0 = 0xfc; // 定时器0重载初值,100us定时
TL0 = 0x67;
ET0 = 1; // 开启定时器0中断允许位
EA = 1; // 开启总中断允许位
TR0 = 1; // 开启定时器0计数
while (1); // 主循环,不断地在数码管上显示数字
}
```
其中,`num`数组中存储了0~9这几个数字在数码管上对应的编码,`timer0_isr()`函数是定时器0的中断服务函数,每次中断时会在P0口输出一个数字,通过不断地更新`i`变量的值,实现数字的循环显示。在`main()`函数中,先初始化定时器0的工作模式和初值,并开启中断允许位和定时器计数,然后进入主循环,不断地在数码管上显示数字。
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.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)