七段数码管显示原理研究

Posted luffy5459

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七段数码管显示原理研究相关的知识,希望对你有一定的参考价值。

    在51单片机学习过程中,相对基础的一个实验就是利用七段数码管依次显示数字0-9。很多时候,我们按照要求,搭建了电路,编写了对应的显示控制程序,最后运行,可能对于七段数码管显示数字的原理并没有进行深入的研究。今天结合自己的理解,给出七段数码管显示的原理。

     七段数码管,本身利用发光二极管的原理,组成一个'8'的形状,这个'8'正好是七段组成,所以一般称为七段数码管。

     组成这个7段数码管的每个部分又分为a,b,c,d,e,f,g部分,分别对应如下所示:

    七段数码管的连接方式,根据现实布线的方式,可以组成共阳数码管和共阴数码管,所谓共阳,就是数码管的一极全部接电源,而二极管根据发光原理,只能是正极接电源,负极接地,所以数码管一级全部接电源的情况,称为共阳数码管,如下所示:

 

     在proteus元器件库中,共阳数码管名称是:7SEG-COM-AN-[COLOR] 

     共阴数码管,就是公共一极全部接地,如下所示:

     在proteus元器件库中,共阳数码管名称是:7SEG-COM-CAT-[COLOR] 

    上面的两个图形,可能看不出问题所在,主要区别在于电路图中的电源和接地图标不同:

     电源vcc:

     接地vss: 

    在实际编程中,基本采用一种类型数码管显示即可,默认都是选择共阴数码管,也就是我们需要让开发板输出电压为高电平,点亮对应的数码管。

    在上面的字母对应的七段数码管中,要显示0-9,需要的电平如下所示:

abcdefg字形所需字母数码段
11111100abcdef
01100001bc
11011012abdeg
11110013abcdg
01100114bcfg
10110115acdfg
10111116acdefg
11100007abc
11111118abcdefg
11110119abcdfg

    光这个表,看不出要怎么设置引脚的电平高低,但是我们可以通过代码中的值来反推这个表,一般我们的代码中可能有这样一个表示显示数字的数组:

unsigned char led[] = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; 

    这一组数据,其实对应上面共阴数码管表,可以这么理解,把数码管的g,f,e,d,c,b,a七个段,外加一个0位,正好组成八位二进制,其中0对应0x3f,就是0011 1111,正好对应上面表格中的按照顺序1111 110反过来的表示。1对应0x06,也就是0000 0110,同样对应上面表格0110 000反过来的表示。后面都是类似的规律。显示数字8,全部点亮,也就是1111 111,反过来二进制表示就是0111 1111,正好对应十六进制0x7f。

    理解了这些规律,再反过来理解数码管的显示,其实就不难了。

    以上是对七段数码管显示数字0-9的研究,其实数码管还可以显示很多其他字母,至少大写的E,F,L都是可以模拟显示的,规律也一样,点亮七段数码光的某一些段,就可以显示对应的字形,其实并不是真正的显示某一个字形,而是用了拼凑形状让二极管发光的办法。

以上是关于七段数码管显示原理研究的主要内容,如果未能解决你的问题,请参考以下文章

Arduino:数码管显示原理详解和Proteus仿真实验

python turtle 绘制七段数码管以及14段数码管显示字母和时间

Python七段数码显示管

Logisim之4位全加器实现以及七段数码管显示

基于turtle库的七段数码管绘制

用PROTEUS仿真单片机与七段数码管