一:认识数码管

四位数码管是一种常见的电子显示设备,它能够显示数字0~9以及一些字母和符号。四位数码管通常由七个发光二极管(或八个,其中包括一个小数点)组成,这些发光二极管的组合可以显示不同的数字和字符。四位数码管的工作原理是基于数字电路中的七段显示译码器。当输入一个四位二进制数时,七段显示译码器会将该二进制数转换为对应的七段二进制输出,从而控制七个发光二极管的亮灭状态,显示出相应的数字或字符 数码管是一种利用LED的显示器件,普通的数码管在内部集成了八个数码管,分别组成了对应的段,由于数字只需要七个段就可以,所以有的数码管内部只有七段,称为七段数码管,八段数码管的多余的段被用在小数点上,形成了可以显示小数点数据的显示器件。

根据数码管内部的连接方式,所以数码管又分为共阳数码管(低电平点亮)与共阴数码管(高电平点亮),共阳数码管内部是将所有LED的正极接在一起组成的公共端接电源+5V,只需要控制对应的LED负极就可以显示数字, 所以共阳级低电平才能点亮,共阴极与共阳级刚好相反,共阴极数码管内部将LED的负极接在一起形成公共端接地 0V,只需要控制对应的LED正极就能够显示数字,所以共阴极数码管高电平点亮。

06019f35bac14ad8b3857a24e59b33df.jpeg

数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。

数码管内部是由多个发光二极管封装在一起组成,他们可以有很多种颜色,很多种外形,很多种样式,但是本质来说他们都是通过点亮内部的LED来显示的,只要面板做好了,理论可以显示任意的字符或者图案

        数码管可以分为共阳极和共阴极两类。共阳极中,所有的LED阳极都连接到一个公共接点(COM),而每个LED的阴极为a、b、c、d、e、f、g及dp(小数点)。对于共阴极,所有的LED阴极连接到公共接点,而每个LED的阳极为a、b、c、d、efg及dp(小数点)。显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。

         a8cd04fa3cc945e483bff34a645528ec.jpeg

二:数码管的原理

控制原理:  数码管显示有分为静态显示和动态显示,静态显示特点是在同一时间上所有位显示是相同的数值,显示单一无法满足更多的需求。往往使用更加更多的是动态显示,程序设计会更加复杂。动态显示可以实现六位数码管上内容都不一样比如显示742347这个数。首先,准备工作我们需在输入的二进制数前进行补零,补零的个数由十进制数位数决定,故234有三位数需要12个零。第一个脉冲到来进行BCD码的判断,当BCD码大于4则加3,反之BCD码保持不变。再将输入的二进制向BCD码移入一位,第二个脉冲到来又进行BCD码的判断,重复上述过程至第八个脉冲判断移位结束,第九个脉冲取出转换结果给数据驱动模块

7627874c8f6648ee8fc5535d9d5fccee.png

     上图为开发板中动态数码管模块电路图,我们可以从电路图中看出。动态数码管的上端分别为LED1-8,通过控制LED1-8的电平来控制某一位的数码管显示,称之为:位选;。上图为开发板中动态数码管模块电路图,我们可以从电路图中看出。动态数码管的上端分别为LED1-8,通过控制LED1-8的电平来控制某一位的数码管显示,称之为:位选;

   

宏观上所有的数码管都是同时亮的,所以人以为所有数码管同时工作,所以多个数码管可以合在一起来显示。微观上数码管是依次亮的,我们可以给不同的数码管送不同的段码,所以不同的数码管可以显示不同的数字。所以相当于几个数码管的显示是独立的

 

     三:前缀代码

声明一个数组meg_code,保存数字0-9的字码。并写上延时函数,如果延迟很短就还会有较严重的阴影,如果延迟很长,就会出现流水灯的现象。
f09ef17ef2744301a4eda549a3831fa6.png

       1位数码管只能显示1位数字,但是如果需要显示多位数字就需要多个数码管同时工作,这也是数码管的缺点,那就是显示的数字越多,数码管就越多,占用的端口也就越多,那么,弥补这种缺点的方法就是数码管的动态显示,所谓动态显示,就是依次向每位数码管送出字形码的同时控制公共端的电平,每一位数码管之间利用延时程序进行延时,当延时程序非常短时,由于发光管的余辉和人眼视觉暂留作用,此时我们的人眼就分辨不出位与位之间有延时存在,此时就感觉各位数码管同时都在显示。使用for循环循环10次,逐个显示0-9,这样就能 使用一个数码管显示数字0-9.

a4bbfdb40bcf4dc1b23f0deb247fcfc3.png

     四:认识74HC138译码器

显示一个数码管之后要显示8个数码管就很简单了。由于这样接线太占用IO端口了,所以我们选用一个译码器来减少IO口的使用,用3个口控制8个口,这个译码器叫74HC138。74HC138共有16个引脚,分为四个独立的部分,每个部分包含输入、输出和使能引脚。具体引脚配置如下。74HC138由四个独立的反相器组成,每个反相器具有一个输入引脚和一个输出引脚。当输入引脚接收到高电平信号时,输出引脚会输出低电平信号;反之,当输入引脚接收到低电平信号时,输出引脚会输出高电平信号。通过控制使能引脚G1、G2、G3的状态,可以选择不同的反相器路径。

755917a8c7b04018ad58850826907307.png

数码管显示电路使用74HC138译码器产生位选信号,同样,为了节省GPIO,74HC138的使能控制端在硬件上均设置为恒有效(E1、E2连接GND,恒为低电平;E3连接VCC,恒为高电平)。因此,程序中操作数码管时只需控制三个地址数据输入端(A0、A1、A2)去选中8个数码管中的待操作的数码管即可。

三个地址数据输入端(A0、A1、A2)是如何选中8个数码管中的一个的,这就要看74HC138译码器的真值表了(74HC138译码器的真值表如下图所示)。

087a37de611c4adf833ad29b8f5e2a4f.png

发送选位信号,选择指定数码管。

54e15870c1434e54aebd4226f76c9cf7.png

五:主函数代码

1a074f4b0ee94306aa4c4ef549360139.png

按照以上代码重复步骤就可以实现8个数码管显示数字了。

1.使用数据线连接开发板和电脑
2. 运行下载工具STC-ISP,主界面如图
f341133e91bb4bb9a764947fce785c5e.png

 

3. 选择单片机型号及串口号,并选择生成的hex文件,然后点击“下载
 
 
8be3e85ffdb147d69b6a6ade33d12d7d.png
 
 
 
4. 单击“下载”后,需要给单片机重新上电,即关闭电源开关然后再打开电源开关,随后就会进入下载 模式将hex程序下载到单片机中,下载成功后STC-ISP提示下载成功
 
47bd4acd198846de96f615700b2b0a03.png
 
 

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐