51单片机动态数码管0-999999
时间: 2023-08-23 12:04:55 浏览: 56
动态数码管可以通过循环扫描的方式实现数字显示。以下是一个基本的代码框架:
```c
#include <reg51.h>
unsigned char code t[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // 数码管0~9的编码
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void main()
{
unsigned int num = 12345; // 要显示的数字
unsigned int i = 0;
unsigned char dis[6]; // 数码管每一位的值
while(1)
{
dis[0] = num / 100000; // 分解每一位的值
dis[1] = num % 100000 / 10000;
dis[2] = num % 10000 / 1000;
dis[3] = num % 1000 / 100;
dis[4] = num % 100 / 10;
dis[5] = num % 10;
for(i = 0; i < 6; i++) // 依次显示每一位
{
P2 = 0x7f; // 选择数码管
P0 = t[dis[i]]; // 显示数字
delay(100); // 延时
P0 = 0x00; // 关闭数码管
P2 = 0xff; // 取消选择
}
}
}
```
在这个例子中,使用了51单片机的P0口控制数码管的显示,使用P2口选择要显示的数码管。同时,通过循环扫描的方式依次显示数字的每一位。这个例子中显示的数字为12345,可以根据需要修改。