51单片机8位数码管顺时针显示一圈间隔100ms代码
时间: 2023-10-29 09:28:09 浏览: 36
以下是基于STC89C52单片机的代码:
```
#include <reg52.h>
sbit D1 = P1^0;
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
sbit D5 = P1^4;
sbit D6 = P1^5;
sbit D7 = P1^6;
sbit D8 = P1^7;
void delay_ms(unsigned int ms) // 延时函数
{
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 110; j++);
}
void main()
{
unsigned char i = 1; // 数码管显示的数字
while (1)
{
D1 = 1; D2 = D3 = D4 = D5 = D6 = D7 = D8 = 0; // 显示第一个数码管
P0 = i; // 设置数码管显示的数字
delay_ms(100);
D2 = 1; D1 = D3 = D4 = D5 = D6 = D7 = D8 = 0; // 显示第二个数码管
P0 = i + 1;
delay_ms(100);
D3 = 1; D1 = D2 = D4 = D5 = D6 = D7 = D8 = 0; // 显示第三个数码管
P0 = i + 2;
delay_ms(100);
D4 = 1; D1 = D2 = D3 = D5 = D6 = D7 = D8 = 0; // 显示第四个数码管
P0 = i + 3;
delay_ms(100);
D5 = 1; D1 = D2 = D3 = D4 = D6 = D7 = D8 = 0; // 显示第五个数码管
P0 = i + 4;
delay_ms(100);
D6 = 1; D1 = D2 = D3 = D4 = D5 = D7 = D8 = 0; // 显示第六个数码管
P0 = i + 5;
delay_ms(100);
D7 = 1; D1 = D2 = D3 = D4 = D5 = D6 = D8 = 0; // 显示第七个数码管
P0 = i + 6;
delay_ms(100);
D8 = 1; D1 = D2 = D3 = D4 = D5 = D6 = D7 = 0; // 显示第八个数码管
P0 = i + 7;
delay_ms(100);
i++; // 数码管显示的数字递增
if (i > 9) i = 0; // 当数字大于9时,从0开始重新显示
}
}
```
该代码将显示从1到8的数字,每个数字显示100ms,显示完8后再从1开始重新显示。