单片机实现4位一体数码管显示0000—FFFF的16进制(C语言编程)怎么编程?

2025-04-15 04:05:12
推荐回答(1个)
回答1:

//段码由P0口输出,P2.3-P2.0依次接位选的高到低
#include
typedef unsigned char u8;
typedef unsigned int u16;
void Delay(void);
void Disp(void);
u16 Cnt;
u8 code LED[]={
0x3F,// 0
0x06,// 1
0x5B,// 2
0x4F,// 3
0x66,// 4
0x6D,// 5
0x7D,// 6
0x07,// 7
0x7F,// 8
0x6F,// 9
0x77,// A
0x7C,// B
0x39,// C
0x5E,// D
0x79,// E
0x71// F
};
void Delay(void)
{
u16 i;
for(i = 0;i < 200;i ++)
;
}
void Disp(void)
{
u8 i,k = 0x01;
for(i = 0;i < 4;i ++)
{
P0 = LED[(Cnt >> (i * 4)) & 0x000f];
P2 = k | 0xf0;
k <<= 1;
Delay();
P0 = 0xff;
P2 &= 0xf0;
}
}
void main(void)
{
u8 i;
Cnt = 0;
while(1)
{
for(i = 0;i < 100;i ++)//显示100次,显示值加1
{
Disp();
}
Cnt ++;
}
}