一.硬件知识。
首先,我们要理解数码管亮灭的原理。如图所示:
如图,a——g和.DP为一个数码管”8“的一部分。数码管分为共阴极(上)和共阳极接法(下),无论是哪种接法,要让二极管导通,即某一段led亮,都要使阴极为0,阳极为一。
下面以共阴极接法为例,原理图如下:
74HC138译码器控制哪个数码管亮(C为最高位),译码的结果直接是低电平0。
74HC245则控制某一数码管哪段亮
二.代码实现解析。
1.简单使某个数码管亮。
#include <REGX52.H>
void main()
{
P2_2=1;
P2_3=1;
P2_4=0;//使CAB=011,即Y3’=LED4=0,使LED4亮
P0=0x4F;//使LED4显示3,P2=01001111。
while(1)
{
}
}
结果:
LED灯也会亮是因为P2口也是接LED的模块的,无关紧要。
2.小练习:用独立按键控制LED7,按下K1时,LED4显示3,松开K1时,LED4显示8。
代码实现:
#include <REGX52.H>
void main()
{
while(1)
{
if(P3_1==0)
{P2_2=1;
P2_3=1;
P2_4=0;
P0=0x4F;
}
else
{
P2_2=1;
P2_3=1;
P2_4=0;
P0=0xFF;
}
}
}
结果展示:
松开K1时:
按下 K1时: