51单片机数码管循环显示0-9
时间: 2023-05-27 10:05:22 浏览: 64
以下是使用51单片机循环显示0-9的代码:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1 = P2^0;
sbit D2 = P2^1;
sbit D3 = P2^2;
sbit D4 = P2^3;
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void delay(uint t)
{
uint i, j;
for(i=0; i<t; i++)
{
for(j=0; j<120; j++);
}
}
void main()
{
uchar i = 0;
while(1)
{
D4 = 1;
P0 = table[i%10];
delay(10);
D4 = 0;
D3 = 1;
P0 = table[i/10];
delay(10);
D3 = 0;
i++;
if(i>=100)
{
i = 0;
}
}
}
```
在这个代码中,我们先定义了数码管的引脚,然后定义了一个表格,用来存储0-9的码值。
在主函数中,我们使用一个循环来不断更新数码管的显示。首先,我们将D4引脚置为高电平,然后通过P0口输出i%10对应的码值,即个位数的码值。然后延时一段时间,再将D4引脚置为低电平,显示就会停止。接下来,我们将D3引脚置为高电平,通过P0口输出i/10对应的码值,即十位数的码值。同样延时一段时间,再将D3引脚置为低电平,显示就会停止。
最后,我们将i的值加1,并检查是否达到了100。如果是,就将i重置为0,重新开始循环。这样,我们就能够不断地循环显示0-9了。
相关推荐














