用C51写个代码,使一个共阳极的七段数码管始终显示03.08.12.并且cpu是AT89C51.
时间: 2024-05-09 21:19:56 浏览: 163
下面是使用AT89C51控制七段数码管显示03.08.12的代码:
```c
#include <regx51.h>
// 数码管对应的引脚
sbit dig1 = P2^0;
sbit dig2 = P2^1;
sbit dig3 = P2^2;
sbit dig4 = P2^3;
sbit segA = P1^0;
sbit segB = P1^1;
sbit segC = P1^2;
sbit segD = P1^3;
sbit segE = P1^4;
sbit segF = P1^5;
sbit segG = P1^6;
sbit segDP = P1^7;
// 数码管显示的数字和对应的段码
unsigned char num[16] = {
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 delay(unsigned int t)
{
while (t--);
}
// 数码管显示函数
void display(unsigned char d1, unsigned char d2, unsigned char d3, unsigned char d4)
{
dig1 = 1; dig2 = 0; dig3 = 0; dig4 = 0;
P1 = num[d1];
delay(1000);
dig1 = 0; dig2 = 1; dig3 = 0; dig4 = 0;
P1 = num[d2];
delay(1000);
dig1 = 0; dig2 = 0; dig3 = 1; dig4 = 0;
P1 = num[d3];
delay(1000);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 1;
P1 = num[d4];
delay(1000);
}
// 主函数
void main()
{
while (1) {
display(0, 3, 0, 8);
display(0, 3, 1, 2);
}
}
```
在这个代码中,我们使用了AT89C51的P1口和P2口来控制共阳极的七段数码管。首先定义了数码管对应的引脚,然后定义了显示数字和对应的段码的数组。接着定义了一个延时函数和一个数码管显示函数。在主函数中,我们不停地调用数码管显示函数,使其显示03.08.12。其中,数码管显示函数中的四个参数分别代表四个数码管显示的数字。我们通过依次控制四个数码管的选通引脚,来实现让它们依次显示数字的效果。
阅读全文