基于51单片机,四位共阳数码管,两位数字每秒自动加一,的keil程序
时间: 2024-03-01 09:55:01 浏览: 25
以下是基于51单片机的Keil程序,实现四位共阳数码管,两位数字每秒自动加一的功能:
```c
#include <reg51.h>
#define LED P2
#define DIG P0
unsigned char code LED_TBL[16] = { // 共阳数码管0-F编码表
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71
};
void delay(unsigned int i) { // 延时函数
unsigned int j;
while(i--) {
for(j=0;j<100;j++);
}
}
void display(unsigned char dat) { // 数码管显示函数
DIG = 0x00; // 数码管位选清零
LED = LED_TBL[dat%16]; // 显示个位
DIG = 0x01; // 数码管位选置1,显示十位
LED = LED_TBL[dat/16];
delay(5); // 延时5ms
}
void main() {
unsigned char num = 0; // 数字初始值为0
while(1) {
display(num); // 显示数字
delay(1000); // 延时1s
num++; // 数字加1
if(num > 99) {
num = 0; // 数字归零
}
}
}
```
程序的具体实现思路是:先定义一个共阳数码管0-F的编码表,然后定义延时函数和数码管显示函数,最后在主函数中循环调用数码管显示函数,每隔1秒数字加1,当数字达到99时,数字归零重新开始。注意,程序中使用了P0口控制数码管的位选,P2口控制数码管的段选,LED_TBL数组中的元素对应数码管显示的数字。