想要运用数码管首先需要了解其构造
一个数码管是由a、b、c、d、e、f、g、dp八个二极管组成,八个LED一端接在一起,另一端引脚引出来。二极管如果阳极连在一起,就是共阳极数码管,阴极连在一起,就是共阴极数码管。
上面的图是一个共阴极数码管,要使数码管显示不同的数字,只需点亮对应LED即可。如:数码管显示“0”,则a、b、c、d、e、f六个LED亮,g、dp这俩个LED灭,即可显示“0”。
上图为多个数码管,一般单片机中有八个数码管组成的数码管板块,图中数码管均为共阴极,并且另一端八个接口均一起连接。
代码展示:
#include <REGX52.H>
unsigned char szdx[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void smg(unsigned char wz,sz)
{
switch(wz)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=szdx[sz];
}
void main()
{
smg(1,6);
while(1)
{
}
}
此代码可以实现任意一个位置点亮0-9中任意一位数,目前是在第一个数码管点亮一个数字六
效果图: