编写程序让单片机的8只共阴极数码管初始显示0,每隔大约1s加1显示(用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复
时间: 2024-05-08 19:18:38 浏览: 90
您可以尝试使用以下的代码实现该功能:
```
#include <reg51.h>
unsigned char code Display[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 数码管的0~9对应的编码
void delay(unsigned int ms) // 自定义延时函数
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 125; j++);
}
void main(void)
{
unsigned char i, j; // i用于控制位选,j用于循环计数
while(1)
{
for(i = 0; i < 8; i++) // 共阴极数码管的8位控制
{
P2 = ~(0x01 << i); // 设置当前位为低电平,其余为高电平(P2口控制数码管的位选)
for(j = 0; j < 10; j++) // 刷新数码管
{
P1 = Display[j]; // 设置要显示的数字对应的编码(P1口控制数码管的段选)
delay(100); // 延时约1s
}
}
}
}
```
您可以将此代码下载到单片机中运行,即可实现单片机的8只共阴极数码管初始显示0,每隔大约1s加1显示,到数码管显示9后,再从0开始显示,如此循环反复的功能。
阅读全文