c语言51单片机6位数码管清晰显示一下内容:a、16.12.13;
时间: 2024-02-17 10:04:47 浏览: 94
51单片机 数码管显示
好的,以下是使用C语言编写的51单片机6位数码管显示16.12.13的示例代码:
```c
#include <reg52.h>
// 定义数码管段选IO口
sbit LED_A = P1^0;
sbit LED_B = P1^1;
sbit LED_C = P1^2;
sbit LED_D = P1^3;
sbit LED_E = P1^4;
sbit LED_F = P1^5;
sbit LED_G = P1^6;
sbit LED_DP = P1^7;
// 定义数码管位选IO口
sbit DIG_1 = P2^0;
sbit DIG_2 = P2^1;
sbit DIG_3 = P2^2;
sbit DIG_4 = P2^3;
sbit DIG_5 = P2^4;
sbit DIG_6 = P2^5;
// 定义数码管显示字符数组
unsigned char LED_CHAR[] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f, // 9
0x77, // A
0x7c, // b
0x39, // C
0x5e, // d
0x79, // E
0x71 // F
};
// 主函数
void main()
{
unsigned char i;
unsigned char LED_NUM[] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; // 数码管显示数组,初始化为0
unsigned char LED_POS[] = {DIG_1, DIG_2, DIG_3, DIG_4, DIG_5, DIG_6}; // 数码管位选数组
unsigned char LED_VALUE[] = {0x1, 0x6, 0x1, 0x2, 0x1, 0x3}; // 数码管显示的值
while (1)
{
// 将要显示的值转换为数码管显示字符
for (i = 0; i < 6; i++)
{
LED_NUM[i] = LED_CHAR[LED_VALUE[i]];
}
// 循环显示数码管
for (i = 0; i < 6; i++)
{
// 打开当前位选
LED_POS[i] = 0;
// 设置当前位的数码管的值
LED_A = LED_NUM[i] & 0x01;
LED_B = LED_NUM[i] & 0x02;
LED_C = LED_NUM[i] & 0x04;
LED_D = LED_NUM[i] & 0x08;
LED_E = LED_NUM[i] & 0x10;
LED_F = LED_NUM[i] & 0x20;
LED_G = LED_NUM[i] & 0x40;
LED_DP = 0;
// 延时一段时间,使数码管显示出来
delay_ms(2);
// 关闭当前位选
LED_POS[i] = 1;
}
}
}
```
以上代码可以实现将16.12.13显示在6位数码管上,每个数字分别显示在不同的位上。
阅读全文