51单片机实现数码管交替闪烁
时间: 2023-12-06 12:44:51 浏览: 103
下面是51单片机实现数码管交替闪烁的代码:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
// 数码管位选信号编码
uchar code table[] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
// 数码管位选信号控制端口
sbit LED1 = P2^2;
sbit LED2 = P2^3;
void delay(uint xms) {
uint i, j;
for(i=xms; i>0; i--) {
for(j=110; j>0; j--);
}
}
void main() {
uchar i = 0;
while(1) {
LED1 = 0;
LED2 = 1;
P0 = table[i];
delay(500);
i++;
if(i > 9) {
i = 0;
}
LED1 = 1;
LED2 = 0;
P0 = table[i];
delay(500);
i++;
if(i > 9) {
i = 0;
}
}
}
```
该代码使用了两个数码管,通过控制位选信号的高低电平来实现交替闪烁。其中使用了延时函数来控制闪烁的频率。代码中的 `table` 数组定义了数码管的编码,通过循环将不同的编码输出到 P0 端口,即可实现数码管的显示。
阅读全文