基于51单片机,四位共阳数码管,两位数字每秒自动加一的keil程序
时间: 2024-03-01 21:54:11 浏览: 80
好的,以下是基于51单片机,四位共阳数码管,两位数字每秒自动加一的Keil程序:
```c
#include <reg51.h>
#define DisplayPort P0 // 数码管接口
#define DelayTime 1000 // 延时时间,单位为毫秒
unsigned char code DisplayTable[] = { // 数码管显示表
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};
void main()
{
unsigned char i = 0, j = 0; // i表示十位数字,j表示个位数字
while (1) {
j++; // 每秒自动加一
if (j == 10) { // 个位数字达到10时,十位数字加一,个位数字归零
i++;
j = 0;
}
if (i == 10) { // 十位数字达到10时,十位数字归零
i = 0;
}
DisplayPort = DisplayTable[i]; // 显示十位数字
P2 = 0x01; // 选择第一位数码管
Delay(DelayTime);
DisplayPort = DisplayTable[j]; // 显示个位数字
P2 = 0x02; // 选择第二位数码管
Delay(DelayTime);
}
}
void Delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
```
程序说明:
1. `DisplayPort` 定义为 `P0`,即数码管的接口,通过 `DisplayTable` 数组来控制数码管显示不同数字;
2. `DelayTime` 定义为延时时间,单位为毫秒;
3. `i` 表示十位数字,`j` 表示个位数字,每秒自动加一;
4. 当个位数字达到10时,十位数字加一,个位数字归零,当十位数字达到10时,十位数字归零;
5. 通过 `P2` 来选择第一位或第二位数码管,从而实现显示十位数字和个位数字;
6. `Delay()` 函数用来实现延时,具体实现方式为嵌套循环。
希望能够帮助到你!
阅读全文