用c语言写一个动态数码管的程序,要求数码管有三个位选,一共7只脚
时间: 2024-02-12 12:04:56 浏览: 21
好的,以下是一个简单的用C语言编写的动态数码管程序,该程序使用3个位选和7个数字位,可以在单片机上运行:
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LSA = P2 ^ 2;
sbit LSB = P2 ^ 3;
sbit LSC = P2 ^ 4;
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void delay(uint x)
{
uint i, j;
for(i = x; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display(uchar num, uchar digit)
{
switch(digit)
{
case 1:
LSA = 0; LSB = 0; LSC = 0; break;
case 2:
LSA = 1; LSB = 0; LSC = 0; break;
case 3:
LSA = 0; LSB = 1; LSC = 0; break;
}
P0 = table[num];
delay(1);
P0 = 0x00;
}
void main()
{
uchar i = 0;
while(1)
{
display(i % 10, 1);
display(i / 10 % 10, 2);
display(i / 100 % 10, 3);
i++;
if(i == 1000) i = 0;
}
}
```
该程序中,`LSA`、`LSB`、`LSC`分别代表三个位选脚,`table`数组中存储了0~9的数码管编码。`display`函数用于在指定的数码管上显示指定的数字,`delay`函数用于控制数码管显示的时间间隔。在`main`函数中,使用一个循环不断更新数码管上的数字。