一、数码管简介
1、数码管是一种半导体发光的一种器件,它的基本单元是发光二极管,也就是我们前面介绍的一个LED,那么数码管也称为LED,数码管,不同行业对它的称呼可能不一样,其实都是一样的东西,有的叫数码管,有的叫LED数码管都是一样的。
2、那么数码管,按照他的段数,可分为这几种,像七段还有八段数码管,那么八段数码管比七段数码管要多一个发光二极管,也就是多了一个DP,小数点的位置,那么这个小数点可以更精确地表示数码管想要显示的内容,比如说它可以显示小数,这是这个数码管按照它的一个段数来区分。
3、那么数码管还可以按照它的一个位数来区分,比如说,它可以显示多个多少个八,多少个八可以分为一位两位......六位,七位这些位数。
4、一个数码管那么按发光二极管单元连接方式呢,可分为共阳极和共阴极。那么何为共阳极和共阴极。
(1)共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V。
(2)共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上。
5、
二、数码管显示原理
1、下面我们来看一下数码管的显示原理,那么不管将几位的数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面我们来讲解一下一个数码管是如何来点亮。
2、
(1)那么从这张图我们可以看到,这是我们数码管的一个内部的一个电路图也就是结构图,从这张图中,我们可以看到以为数码管的引脚,总共是十个,上面是五个,下面是五个,显示一个八字,它需要七个小段,另外呢,还有一个小数点DP,那么所以其内部一共有八个小的发光二极管,通过这种排列,组成了我们的这种数码管,然后呢,因为我们前面介绍数码管,它有共阴和共阳。因此,这里共阴和共阳取决于我们内部结构的一个图。
(2)然后呢,它的这比如说我们的这个共阳的一个结构,它是将它的阳极全部连接在一起,引出他的公共端,那么公共端这里呢通常是在三角和八角这两个,那么共阴的话,它是将它的阴级全部连接在了一起,也是在第三个和第八个引脚。阳极呢,分别引出他们的一个段,分别引出他们的段,那对共阴极数码管来说,那么它八个发光二极管,它的内部全部连接在了一起,所以我们也称为共阴。而它们的阳极是独立的,可以看到ABCDEFGDP,这是它八个段组成的这个八字的一个段和这个小数点。
(3)那么通常呢,我们在对这个共阴极的数码管进行一个电路设计的时候,一般把它的阴级,就是共阴的这个公共端接地,那么阳极呢,就可以通过它的一个高电平来进行控制,那么对应的发光二极管就能点亮了。
(4)如果要想显示出一个八,并且把右下角的小数点也点亮,那么可以把这八个阳极全部送高电平。如果想要显示一个零,那我们可以将ABCDEFGDP,只要将这些段点亮,基段是熄灭的,然后DB也是熄灭的。所以我们可以给ABCDEF这几段分别送高电平,对于基段和DB段可以给高电平,这样一来,就可以显示一个数字零了。同理显示数字一也是一样的,所以你要显示那个数字,你就可以对对应的这个段来点亮,那怎么来点亮取决于我们的这个数码管的一个结构,你是共阴,那么对应的段是高电平才会点亮。如果是共阳,那么对应的段时低电平才会点亮。所以这个取决于我们数码管的一个使用的一个结构。
(5)那对于我们A2到A4这些系列的,它是共阴的一个数码管,也就是我们刚刚描述的。如果是A5到A7系列的,那我们这个产品,有单独使用了单个的一个数码管,体积比较大一点的,这个数码管采用的是共阳的一个结构。
(6)其实你学会了共阴极的这个数码管的一个使用,那么共阳极是完全一样的,只要对它的电平变化一下就可以了,是高电平点亮还是低电平点亮,你会高电平的,取反一下不就变成了低电平。
(7)如果使用共阴数码管,我们需要增加单片机IO口的一个驱动电流,前面我们在介绍共阴数码管,我们需要给它什么高电平,它才能点亮,假设我要把这个数码管的所有的段都点亮,那是不是把单片机I口全部输出高电平,这样一来,它会消耗我们单片机I口的一个整个的电流,对于其他的IO口,它的驱动电流就非常弱了,所以我们前面就说过了单片机,它主要是用来做控制,如果是要驱动一些外部的设备,我们通常会加一些专门的驱动电路,同理,我们要驱动这么一个数码管或者是多个数码管,那么从共阴极建议使用驱动电路。比如说我们开发板上使用714HC245芯片或者是714HC573芯片等等,这样就可以将我们的单片机的一个电输出电流呢进行放大,来驱动我们对应的一些数码管,那么共阳极数码管,它的内部八个发光二极管,它是阳极全部连在一起公共端,这个我们刚才也说了,那么要使一个发光二极管点亮就对应的那个段为低电平就可以了。那么这种共阳极和共阴极的差别,它的编码方式就是取反的一个。
(8)通常,我们在一些实际的一些应用产品当中,一般共阳极的数码管更为常用。这是因为数码管非公共端往往接在IC芯片的I口,而IC芯片的驱动能力往往是比较小的,所以采用共阴极数码管,它的驱动端是在非公共端,就可能受限于IC芯片输出的电流不够而显示昏暗,需要外加一些上拉电阻,或者是增加三极管加大我们的驱动电流,但是IC芯片的惯电流及输入电流的一个范围比较大,所以使用共阳极的数码管好处是将我们的驱动数码管的工作交到我们的这个公共端这里。因为我们公共端如果接了这个VCC,那我只需要给这个对应的一些段给它一个低电平,这样它的电流就依靠外部的我们的这个电源进来就可以驱动它的一些对应的一些段了。这样就减轻了我们的这个芯片的这个驱动电流的一个负担。
(9)在我们的开发板,因为是学习板,我们就使用的是共阴极的一个数码管的一个结构,对于我们的A5到A7的这些产品,也单个的使用了单个的一个共阳数码管,大家就可以共阳和共阴都可以学习到。对于我们的A2到A4的这些产品,我们学习的是共阴。那么工阴学会了,共阳也是一样的道理。那我们开发板使用的是两数码管,是两个四位一体,这个在我们的前面看这个图的时候,我们可以看到四位一体,那我们开发板使用了两个四位一体,那么相当于我们开发板可以显示什么八个八,两个四位一体就是八个数码管,八个数码管可以显示八个八。
三、数码管静态显示原理
1、静态显示的特点是每个数码管的段选必须接一个8位数数据线来保持显示的字形码。当送入一次字形码后。当送入一次字形码后,显示字形可一直保持,直到送入新字形码。
(1)段选:就是上面的ABCDEFGDP这些段。你要让数码管显示对应的一个数值,那你就给段选提供一些对应的值,比如我们前面共阴数码管0X3F,对它一个,这就是断码值,也叫断码,段选。
(2)未选:就是它对应的共阴或者共阳引出来的这个,有的时候我们不是说直接接这个GND,或者是VCC,它有的时候是接我们的这个控制芯片,比如我们开发板上使用的是两个四位一体,也就是八个数码管,那八个数码管,它有对应的全部的这个八段选。
2、那我们开发板选用的是动态的一个显示方式来连接的。所以我们的这个实验静态显示我们,只是用来在动态数码管里面进行一个操作来讲解这个静态的一个显示原理,实际上,我们开发板这里的一个数码管连接依然是采用动态显示的一个硬件的一个连接方式。就是将他们所有的数码管的段选,也就是A到DP这八个段全部连接在一起,然后是不是每一个数码管,还有一个公共端,也就是位,公共端就是一个位选,八个数码管就有八个位选,八个位选我们还会用一个芯片,因为我们这里如果全部用单片机IO口,假设我这个段选,现在假设是用了P0口,0.0到P0.7,这里是不是占用了八个,而我们的单片机IO口资源本身就很有限,你这里位选是有八个,如果我在用单片机的八个IO口,我这里就光数码管,就占用了16个,所以是非常占用IO口,这里我们会介绍一种芯片,就是三八译码器。三八译码器,它输入只要三个管脚,输出对应的是八个,所以我们通过三个IO口就可以控制八个,这八个就是对这位选的一个控制,你要让哪一个显示是不是将对应的位选假设是共阴数码管,我就将它输出低电平,这样一来,我对其他的输出高电平,你不管段选是什么值,对应的这些数码管都是不显示的。
3、关于静态显示这种方法的优点,它是占用CPU的时间非常少,你只要给它一个数据,它就得显示,而且它显示的亮度也比较亮,缺点是硬件电路比较复杂,成本较高。比如我们使用了四个静态数码管,那么就得32个口,根据我们静态显示的一个特点,它是把数码管的这些段选数据口,它是每个段选数据口必须接一个八位的数据线.。
4、我们开发板上介绍的像A2到A4开发板,因为没有单独的这个静态数码管,就是没有单独的一个进行IO口的一个连接的这种数码管,所以我们再介绍静态数码管实验的时候,我们依然采用在动态数码管上面进行一个讲解。
5、所以我们A2到A4的一个静态数码管的接法,依然是在动态数码管里面,它全部是绑定在一起的,就是八个数码管全部是段选在一起的,而不像我们现在介绍的这个原理。我们静态数码管的原理是它的接线方式正确是应该每个单独的数码管都要八段接一组端口。
6、所以三个三个数码管就接了24个IO口,我一个单片机才32个IO口,光接一个数码管,我就占去这么多,所以它对于电路设计的一个硬件设计,一个是比较复杂,而且对我们的一个单片机的一个IO口资源消耗是非常大的,所以我们在实际应用当中,这种静态数码管的接线方式基本上很少用到,我们大多数采用动态的一个显示,一个接线,也就是对应的八个段。我不管后面几个数码管,我只要是它的段选数据,我通通连在一起A跟A连,B跟B连,C跟C连,以此类推,这样组成的,是一种动态的显示的一个硬件电路,只需要八个IO口,我可以控制所有的数码管的段。我再用一种alco来控制对应的位,这是我们后面介绍动态数码管的时候会介绍,大家只要,记住一下,我们现在A2到A4这种产品,我们没有单独的静态数码管,我们采用的是通过动态数码管的这种方式来讲解我们的静态的一个显示。然后呢,我们对于A5到A7的这种产品,我们板载有一个单独的一个数码管,这种数码管我们把它的段选引出来,这样就可以通过我们单独的一个端口来进行控制,这是所谓的一个静态数码管,然后这是我们的一个静态显示。
7、那么动态显示的特点,就是将所有的数码管的段选并联在一起,就是A跟A接,比如说我这里有三个数码管,第一个数码管的A端跟第二个数码管的A端,第三个数码管的A端连在一起引出来。然后第一个数码管的B端跟第二个数码管的B端以及第三个数码管的B端连在一起引出来。以此类推,这样就将所有的数码管的段选并联在一起,然后它要显示由位选信号来控制哪一个数码管进行显示。我如果是共阴数码管,我们前面就介绍了相当于这样一个类似共阴数码管,我要让它进行显示,我假设第一个数码管让它显示,这里就给它低电平,是不是就能显示。如果其他的不显示,那我就给它高电平,是不是类似于我们的共阴数码管,是不是就高电平的话,这里是不管你段选是什么数字,它都不显示。所谓动态扫描,那么显示呢,就是轮流向各个数码管输出一个字形码也就断码和相应的位选,那么利用发光管的移灰和人眼视觉占流作用使人的感觉好像各个数码管同时在显示。动态显示亮度是要比静态显示亮度要稍微差一些,所以在显示限流电阻的时候,应小于电路当中的一个阻值。这是我们介绍的一个静态显示的一个原理。
8、静态显示,它非常占用IO口,因为每一个数码管的段选都要单独接一组I口,所以静态显示,是不推荐大家在电路搭建的时候使用这种方式来连接。我们通常采用的是动态显示的一个方式来连接它的电路,这个在后面具体动态数码管的一个实验的时候,我们还会强调
三、硬件设计
1、
2、首先介绍上面这一部分,是针对A2到A4的产品,有前面可知,我们A2到A4的产品是没有单独的一个静态数码管,所以我们在A2到A4的这个产品,我们是利用了这种动态数码管的电路,在这个电路上面,实现静态的一个显示。
(1)我们就模拟一个静态数码管,然后呢我们看一下,在我们的A2到A4的这个产品当中,我们这个电路实际上是一个动态数码管的一个显示电路,根据我们前面的介绍,动态数码管,它是将所有的数码管段选并联在一起。
(2)比如说因为我们现在使用的这个数码管使四位一体的,用了两个四位一体,四位一体的数码管它的内部构造,其实就是将这个单个的数码管,它的A到DP,全部在内部连接好了,引出来就是ABCDEFGDP。
(3)同样这里也是我根据动态数码管的一个显示原理,我们前面介绍A段,跟A段连接在一起,引出来,这里使用的是一个74HC245的一个芯片,用来对我们的这个数码管进行一个驱动,前面我们说了共阴极数码管,它完全要让它显示,依靠的是我们的外部的这个驱动管脚来进行点亮的,而我们的单片机的IO口的输出电流是比较小的,要让它驱动这么多数码管,它的可能不够,怎么办,就增加了驱动芯片25就是将我们的这个比较小的电流经过放大,输出一个驱动能力比较大的一个电流来给数码管进行一个供电,驱动芯片的使用一般都是这样,输入是什么,输出就是什么,因此我们可以把它看成P0.0是控制我们的A的P0.1就是控制我们的B,所以根据这个,其他的角也是一样的。这里增加了一个限流的电阻,这是我们的排阻,防止因为电流过大,把我们的数码管内部的一些二极管给击穿,烧坏。
(4)然后是八个段选,然后对应到的位选,因为这里有八个数码管,每一个数码管都有公共端,所以引出来了,那么公共端我们接在,可以根据我们的这个网络的一个标号来查找,可以看得到,这里有个三八译码器,三八译码器是根据前面我们也介绍了,如果不用三八译码器, 我这里又接八个IO口,那这样占据的IO口资源是比较多,我们觉得对于51单片机,本身IO资源就很少 ,在数码管这一块就占据了16个是比较浪费的,我们就要想办法减少IO口的一个占用,这里呢,我们使用的是74HC138这么一个芯片,这个芯片呢其实就是输入时三个引脚,那么输出就可以控制八个,所以呢我们可以利用三个引脚来控制八个这么一个数码管,这个三八译码器,具体的我们会在动态数码管实验章节会介绍它的一个使用。
(5)因为我们单片机IO口,默认都有上拉电阻,所以对于P22,P23,P24,就相当于默认输出,就是高电平,这里高电平,那对应的就是Y7是输出有效的,Y7输出有效,它的有效电平就是低电平,因此对应到LED8,LED8呢就是这个数码管,也就是这个,所以我们把这个数码管当成我们静态数码管来使用,我就不需要对这个三八译码器来了解,我只要对这个P0口,控制它的段就可以了,那么我刚才说了默认我们的P22,P23,P24,就是高电平,那么对应的这里就是低电平,那其他的呢,就是高电平,因为其他的该没有输出有效,有效电平是低电平,没有效那就是高电平。
(6)所以这里简单的只要对P0口进行控制,输入它的一个数码管的一个断码数据就可以点亮对应的这个数码管来显示对应的数值。
3、那么下面这一块是我们的这个A5到A7,我们的产品所使用的单个的数码管,那么这单个的数码管,我们可以从图中看到,它是一个共阳数码管,那么它的阳极是可以直接接到VCC,那么各个段的阴级引出来,通过这个排阻,相当于我们的一个限流电阻,然后引出来,通过我们的这个排针引出来,这样一来,就可以任意组合了。
(1)我们可以通过P0口,P0口假设P0.0直接在这个脚,P0.1接到这个脚,以此类推P0.7接到这个脚这样一来是不是跟我们的这个静态数码管的一个显示是不是一样的,所以也可以控制它,通过它控制P0口。
(2)当然因为这个A5到A7的开发板,它的各个模块都是独立的,你不使用P0口,也可以使用P1,P2,P3等等,这个都是可以自由搭配的。
(3)当然为了跟我们的这个教程通用,我们可以使用这种跟我们的A2到A4的这个控制管脚相同,保持相同,这样一个程序可以兼容了。
(4)当然,这里是共阳数码管,我们这里是共阴的
四、软件设计
1、本章所实现的功能是:控制静态数码管显示数字0,即让P0端口输出数字0的段码0x3f(共阴)
2、