单片机点亮一个数码管代码显示任意数字代码
时间: 2024-02-03 20:15:37 浏览: 94
假设使用的是4位共阳数码管,以下是基于51单片机的代码示例:
```c
#include <reg52.h>
sbit dig1 = P2^4; //第一位数码管
sbit dig2 = P2^5; //第二位数码管
sbit dig3 = P2^6; //第三位数码管
sbit dig4 = P2^7; //第四位数码管
unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //数码管显示字符表
void delay(unsigned int i) //延时函数
{
unsigned int j;
while(i--)
{
for(j=0;j<125;j++);
}
}
void main()
{
unsigned int num = 1234; //要显示的数字
unsigned char i = 0;
unsigned char code dis[] = {0, 0, 0, 0}; //每位数码管要显示的字符
dis[0] = table[num/1000]; //千位
dis[1] = table[num%1000/100]; //百位
dis[2] = table[num%100/10]; //十位
dis[3] = table[num%10]; //个位
while(1)
{
dig1 = 1; //选中第一位数码管
P0 = dis[0]; //在第一位数码管上显示对应字符
delay(1); //延时
dig1 = 0;
dig2 = 1; //选中第二位数码管
P0 = dis[1]; //在第二位数码管上显示对应字符
delay(1); //延时
dig2 = 0;
dig3 = 1; //选中第三位数码管
P0 = dis[2]; //在第三位数码管上显示对应字符
delay(1); //延时
dig3 = 0;
dig4 = 1; //选中第四位数码管
P0 = dis[3]; //在第四位数码管上显示对应字符
delay(1); //延时
dig4 = 0;
}
}
```
需要注意的是,以上代码只是一个简单的示例,实际应用中需要根据具体情况进行修改。另外,数码管的接口和显示表可能因型号不同而有所区别,需要根据实际情况进行调整。
阅读全文