开篇先说一句废话····
本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛!
数码管的介绍
啥是个数码管呢?先来看一些数码管的照片。
其实数码管就是通过点亮里面的发光二极管来发光的。接着来看看数码管的电路图。
根据上图,我们想要用数码管来显示内容,就是点亮对应的发光二极管,比如想要让数码管显示一个数字0,那么我们只需要点亮发光二极管ABCDEF即可。而这八个二极管的连接方式有两种:共阴极接法和共阳极接法。
共阴极接法:顾名思义就是把这几个二极管的阴极连接在一起,通常情况下,连接在一起接地(低电平)。所以我们想要点亮那个二极管只需要在对应二极管的阳极接上高电平即可点亮。
共阳极接法:同样,这就是把这几个二极管的阳极连接在一起,通常情况下,连接在一起之后一起接VCC(高电平)。所以我们要想点亮那个二极管就需要在对应二极管的阴极接上低电平即可。
每个人的板子不一样,所以共阴极还是共阳极请自行判断。比如我的就是共阴极接法。这两个接法刚好相反,后面的高低电平应该是相反的。
接下来先看看在实际电路中数码管。
乍一看,这点路对于像我这样的新手是有点复杂的,而且还出现一个之前没有见过的一个芯片74HC245锁存器.还另外有一个芯片是74HC138译码器。
有两个词,就是位选和段选。
位选:其实就是控制哪一个数码管显示
段选:其实就是控制数码管显示的内容
74HC138译码器和74HC245锁存器
74HC138译码器也叫3-8译码器,简单来说就是三通道输入,八通道输出,通过对三通道的操作实现对八通道的控制。看原理图。
在上面的原理图中,
左边的输入通道有六个,上面的ABC分别接P2.2口,P2.3口,P2.4口,下面的G1接VCC,G2A和G2B接GND.
右边的输出通道有八个,Y0–Y7。
所以通过对左边ABC的输入来控制右边Y0–Y7的输出。
重要的一点,就是这些Y0–Y7上面都有一个杠,就是Y0非,为什么要专门说一下,就是因为加个非意思就是只对低电平有效,对于高电平是截至。说这些的目的就是在位选的时候想点亮哪个数码管就必须译码器对应的输出口是低电平。
接下来就有了真值表。
而在我们单片机里面G1接VCC,G2A和G2B接GND,所以我们能用到的真值就是上表里的下面的八组数据。
比如只想右边Y0输出低电平,其余输出高电平,则左边ABC必须输入低电平(见真值表数据第四行)
74HC245锁存器原理图如下
其实看这个电路图不能很好的表述锁存器的作用。应该这个电路图里1接高电平,19接低电平锁存器是直接打开的,只需要把对应的数据从P0口输入就好。
这里有74HC573芯片的在单片机的原理图作为对锁存器的一种学习。
图片是从郭天祥的新概念51单片机教程,入门,提高,开发。这本书的P58截图这本书作为对51单片机讲解非常好,我也下载了电子版作为一种辅助学习,有兴趣的可也以下载使用。
根据上面的原理图,可以看出在这里,锁存器有两部分U1和U2,。而这两部分也很相似,
对于左边,1口都接地,下面的D0–D7都接P0口,11口U1接MCU的P2^6,U2接P2 ^7.
对于右边,U1的Q0–Q7接数码管里面的发光二极管(段选),U2的Q0–Q5接数码管(位选)。
首先先位选,控制哪个数码管来显示,接着段选,控制数码管显示的内容。要想先位选,必须打开U2锁存端,然后把位选信号送入端口,然后关闭U2。同理,接着段选,先必须打开U1锁存端,然后把段选信号送入端口,然后关闭U1。而打开和关闭锁存器的锁存端,因为两个元件的1端口都接地,则打开就是在11端口接高电平,关闭就是接低电平。
上代码方便理解。
#include "reg52.h"sbit dula = P2^6; //声明U1锁存器的锁存端 段选sbit wela = P2^7; //声明U2锁存器的锁存端 位选void main(){wela = 1; //打开U2锁存端P0 = 0xfe;//送入位选信号wela = 0; //关闭U2锁存端dula = 1; //打开U2锁存端P0 = 0x3f;//送入段选信号dula = 0; //关闭U2锁存端while(1);}
这三个芯片在百度搜也有简介,单片机芯片资料里面也有,有兴趣的可以去看看呢。
让最后面的数码管显示数字0
了解了上面的内容,接下来写一个小程序,就是让最后的数码管显示数字0.
首先找到原理图中最后一个数码管就是LED1,而LED1对应74HC138译码器里面右边得Y0口,所以位选时必须让LED1对应的Y0口输出低电平。而显示0,则让数码管里的abcdef发光二极管亮,g,dp不亮,所以让P0口输出0x3f即可。
#include "reg52.h"//段选#define DULA P0//位选sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;void main(){LSA = 0;LSB = 0;LSC = 0;DULA = 0x3f;while(1);}
仿真电路
如果觉得《51单片机学习篇-- --静态数码管的显示(74HC138译码器 74HC245锁存器 74HC573锁存器)》对你有帮助,请点赞、收藏,并留下你的观点哦!