编写 0~59 的计时程序,时间间隔1S自动加1,通过数码管动态显示出来,当计时 数加到 60 时数值变为 00,从头从 0 加到 59 循环显示。 2. 实验程序要求秒计数单元中的数据,要把十位和个位分开来显示,方法采用对 10 整除和对 10 求余。
时间: 2024-03-24 21:39:15 浏览: 45
以下是基于STC89C52单片机的示例代码:
```c
#include <reg52.h>
unsigned char second = 0; //计时器,初始值为0
unsigned char ten = 0; //十位数码管显示值
unsigned char one = 0; //个位数码管显示值
void delay() { //1秒延时函数
unsigned int i,j;
for(i=0;i<20;i++)
for(j=0;j<1000;j++);
}
void display() { //数码管显示函数
P2 = 0x00; //关闭所有数码管
switch(ten) { //显示十位数码管
case 0: P0 = 0xC0; break;
case 1: P0 = 0xF9; break;
case 2: P0 = 0xA4; break;
case 3: P0 = 0xB0; break;
case 4: P0 = 0x99; break;
case 5: P0 = 0x92; break;
case 6: P0 = 0x82; break;
case 7: P0 = 0xF8; break;
case 8: P0 = 0x80; break;
case 9: P0 = 0x90; break;
}
P2 = 0x01 << 7; //打开第一个数码管
delay(); //延时一段时间
P2 = 0x00; //关闭所有数码管
switch(one) { //显示个位数码管
case 0: P0 = 0xC0; break;
case 1: P0 = 0xF9; break;
case 2: P0 = 0xA4; break;
case 3: P0 = 0xB0; break;
case 4: P0 = 0x99; break;
case 5: P0 = 0x92; break;
case 6: P0 = 0x82; break;
case 7: P0 = 0xF8; break;
case 8: P0 = 0x80; break;
case 9: P0 = 0x90; break;
}
P2 = 0x01 << 6; //打开第二个数码管
delay(); //延时一段时间
}
void main() {
while(1) {
ten = second / 10; //计算十位数码管显示值
one = second % 10; //计算个位数码管显示值
display(); //数码管显示
second++; //计时器加1
if(second >= 60) //计时器归零
second = 0;
}
}
```
在该示例代码中,使用一个计时器变量`second`记录计时器的值,初始值为0。在每次循环中,通过计算`second`的十位和个位分别将其赋值给`ten`和`one`,并调用`display()`函数将其显示在数码管上。同时,`second`自加1,并在`second`达到60时将其归零,从而实现循环计时。在`display()`函数中,根据`ten`和`one`的值将对应的数码管段选值赋值给`P0`,并打开对应的数码管。由于数码管显示需要一定的时间延迟,因此在打开数码管后延时一段时间再关闭所有数码管,以避免闪烁。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![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)
![](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)