51单片机四位共阳数码管显示2313
时间: 2023-07-02 11:19:39 浏览: 173
好的,下面是51单片机的代码实现:
```c
#include <reg51.h>
// 数码管共阳极连接,定义数码管显示0~9的段码值
unsigned char code numTable[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
unsigned char i = 0;
while (1)
{
P0 = numTable[i % 10]; // 显示个位数
P2 = 0x7f; // 选择第一位数码管
delay(1); // 延时
P2 = 0xff; // 关闭所有数码管
P0 = numTable[i / 10]; // 显示十位数
P2 = 0xbf; // 选择第二位数码管
delay(1); // 延时
P2 = 0xff; // 关闭所有数码管
i++; // 循环显示
}
}
```
其中,`numTable`数组是用来存储显示0~9的数码管段码值的。`delay`函数是为了让数码管显示出来的数字能够被人眼识别,因为人眼对数字的刷新频率有限制。在`main`函数中,先显示个位数,然后选择第一位数码管,延时一段时间,再关闭所有数码管;然后显示十位数,选择第二位数码管,延时一段时间,再关闭所有数码管;最后循环显示。
阅读全文