51单片机四段共阳数码管显示2313
时间: 2023-07-02 10:19:39 浏览: 102
以下是51单片机的程序示例,用于将数字2313在四段共阳数码管上显示:
```
#include <reg51.h>
// 数码管段选控制端口定义
sbit SEG_A = P2^2;
sbit SEG_B = P2^3;
sbit SEG_C = P2^4;
sbit SEG_D = P2^5;
// 数码管位选控制端口定义
sbit DIGIT_1 = P2^6;
sbit DIGIT_2 = P2^7;
// 数码管段选码表
unsigned char SEG_TABLE[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
void delay(unsigned int x) {
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main() {
unsigned int num = 2313;
unsigned int digit_1, digit_2, digit_3, digit_4;
while (1) {
digit_1 = num / 1000; // 千位
digit_2 = num % 1000 / 100; // 百位
digit_3 = num % 100 / 10; // 十位
digit_4 = num % 10; // 个位
// 显示千位
SEG_A = SEG_TABLE[digit_1];
SEG_B = SEG_C = SEG_D = 1;
DIGIT_1 = 0;
delay(1);
DIGIT_1 = 1;
SEG_A = SEG_B = SEG_C = SEG_D = 1;
// 显示百位
SEG_B = SEG_TABLE[digit_2];
SEG_A = SEG_C = SEG_D = 1;
DIGIT_2 = 0;
delay(1);
DIGIT_2 = 1;
SEG_A = SEG_B = SEG_C = SEG_D = 1;
// 显示十位
SEG_C = SEG_TABLE[digit_3];
SEG_A = SEG_B = SEG_D = 1;
DIGIT_1 = 0;
delay(1);
DIGIT_1 = 1;
SEG_A = SEG_B = SEG_C = SEG_D = 1;
// 显示个位
SEG_D = SEG_TABLE[digit_4];
SEG_A = SEG_B = SEG_C = 1;
DIGIT_2 = 0;
delay(1);
DIGIT_2 = 1;
SEG_A = SEG_B = SEG_C = SEG_D = 1;
}
}
```
上述程序中使用了一个数码管段选码表,将数字0~9对应的段选控制码存储在数组SEG_TABLE中,方便程序中的显示操作。程序中通过除法和模运算操作,将数字2313拆分为千位、百位、十位和个位四个数字,分别在四个循环中显示在数码管上。其中,使用了延时函数delay()来控制数码管的刷新速度。
阅读全文
相关推荐















