6位时钟数码管单片机程序
时间: 2023-08-09 20:12:15 浏览: 40
以下是基于51单片机的6位时钟数码管程序,使用的是共阳极数码管:
```
#include <reg52.h>
sbit dig1 = P2^0; // 数码管段选控制IO
sbit dig2 = P2^1;
sbit dig3 = P2^2;
sbit dig4 = P2^3;
sbit dig5 = P2^4;
sbit dig6 = P2^5;
sbit dula = P2^6; // 数码管位选控制IO
sbit wela = P2^7;
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void main()
{
unsigned char num[6] = {1, 2, 3, 4, 5, 6}; // 数码管显示的初始数字
unsigned char code table[] = { // 共阳极数码管的字码表
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
while(1)
{
for(int i = 0; i < 6; i++)
{
switch(i)
{
case 0:
dula = 1; // 数码管位选
wela = 0;
break;
case 1:
dula = 0;
dig1 = 1; // 数码管段选
dig2 = dig3 = dig4 = dig5 = dig6 = 0;
break;
case 2:
dig2 = 1;
dig1 = dig3 = dig4 = dig5 = dig6 = 0;
break;
case 3:
dig3 = 1;
dig1 = dig2 = dig4 = dig5 = dig6 = 0;
break;
case 4:
dig4 = 1;
dig1 = dig2 = dig3 = dig5 = dig6 = 0;
break;
case 5:
dig5 = 1;
dig1 = dig2 = dig3 = dig4 = dig6 = 0;
break;
}
P0 = table[num[i]]; // 数码管显示数字
delay(1000); // 延时一段时间
}
}
}
```
需要注意的是,这个程序只是一个简单的示例,实际上可以根据具体需求进行修改和优化。同时,也需要根据使用的数码管类型和连接方式进行相应的引脚设置和字码表修改。