51单片机静态数码管显示

51单片机静态数码管显示

数码管分为共阴极和共阳极数码管,以上是单个数码管,数码管的每段都是由一个LED灯构成,引脚与数码段就近相连。其中第3、8引脚是公共端(或者是位选段)。

51单片机静态数码管显示51单片机静态数码管显示

                           共阴                                                     共阳

51单片机开发板采用的共阴极数码管。

二、

51单片机静态数码管显示51单片机静态数码管显示

 

这是四个连在一起的四位数码管 ,同样有共阴和共阳极,四个数码管段选连接在一起,位选都是独立的。

三、

共阴极数码管的段码表

0          1       2      3       4       5       6       7       8      9   

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,

A         B        C      D       E      F     空

0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,

四、数码管驱动电路详解

51单片机静态数码管显示

采用74LS138译码器对多位数码管的位选

C B A Y
0 0 0 Y0有效,输出低电平,其他引脚为高电平
0 0 1 Y1有效,输出低电平,其他引脚为高电平
0 1 0 Y2有效,输出低电平,其他引脚为高电平
0 1 1 Y3有效,输出低电平,其他引脚为高电平
1 0 0 Y4有效,输出低电平,其他引脚为高电平
1 0 1 Y5有效,输出低电平,其他引脚为高电平
1 1 0 Y6有效,输出低电平,其他引脚为高电平
1 1 1 Y7有效,输出低电平,其他引脚为高电平

 通过控制三个引脚来控制8个端口,节约了MCU的引脚数量。

51单片机静态数码管显示

 采用74HC245芯片双向数据缓冲器驱动数码管。其中DIR表示方向,接高电平数据从左向右传输,接低电平数据从右向左传输。而A0.....与B0相当于可以看成是直接相连的。

为什么采用74HC245?

如果LED灯直接接IO口的话用低电平驱动更亮,这是因为单片机所发出的是控制信号,高电平的控制信号驱动能力弱,点亮LED亮度太暗。一般都是低电平驱动。

51单片机静态数码管显示

因此采用74HC245,提高高电平驱动能力,左端的控制信号通过该芯片,该芯片另外接电源,右端的输出引脚通过吸取该芯片的电源VCC能量因此驱动能力增强,可以用高电平驱动数码管。

电容104表示 10 0000pF                  pF     nF   uF  mF   F

四、代码

#include <REGX52.H>

unsigned char shumatable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
                    //数组表示0 1 2 3 4 5 6 7 8 9
void Shuma(unsigned char Location,Number)
{
		switch(Location)
		{
			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=shumatable[Number];
}

void main()
{
		Shuma(7,4);//第7个数码管显示数字4
		while(1)
		{
			
		}
}

 

 

上一篇:kubernetes新手篇-pod删除失败


下一篇:EOJ_1063_树的双亲存储法