用一片3线8线译码器来选择4个数码管,其中有四个输出端不用。
原理图如下:
讲解注释我都写到程序里了,直接上程序:
#include<reg51.h>
#define uchar unsigned char
unsigned char code LED[10]= //0-9的数码管字形数组
{
0x3F,
0x06,
0x5B,
0x4F,
0x66,
0x6D,
0x7D,
0x07,
0x7F,
0x6F,
};
sbit A0 = P1^0;
sbit A1 = P1^1;
sbit A2 = P1^2;
void main(void){
uchar c=0; //用于做延时
uchar d=3; //用作控制显示的位置
while (1){
for (c=0;c<80;c++); //这个for循环用于延时
P2=0; //由于单片机复位时所有端口输出都为1,为了不产生鬼影,所以将P2口先置0
if (++d>3) d=0;
if (d==0) //前面说了,d是用作索引,选择数码管显示的位置
{
P1=0x03; //选通千位数码管进行显示
P2=LED[0]; //千位显示0
}
else if (d==1)
{
P1=0x02;
P2=LED[1];
}
else if (d==2)
{
P1=0x01;
P2=LED[2];
}
else
{
P1=0x00;
P2=LED[3];
}
}
}
以上便是四位数码管显示0123的方法。待续。