51单片机学习篇-- --静态数码管的显示(74HC138译码器,74HC245锁存器,74HC573锁存器)

本文介绍了数码管的工作原理,包括共阴极和共阳极接法,并详细解析了74HC138译码器和74HC245锁存器在数码管控制中的作用。通过实例代码展示了如何用单片机控制数码管显示数字0,帮助初学者理解数码管显示的电路设计和编程实现。
摘要由CSDN通过智能技术生成

开篇先说一句废话····
本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛!

数码管的介绍

啥是个数码管呢?先来看一些数码管的照片。
在这里插入图片描述

其实数码管就是通过点亮里面的发光二极管来发光的。接着来看看数码管的电路图。
图片来自百度根据上图,我们想要用数码管来显示内容,就是点亮对应的发光二极管,比如想要让数码管显示一个数字0,那么我们只需要点亮发光二极管ABCDEF即可。 而这八个二极管的连接方式有两种:共阴极接法和共阳极接法

共阴极接法:顾名思义就是把这几个二极管的阴极连接在一起,通常情况下,连接在一起接地(低电平)。所以我们想要点亮那个二极管只需要在对应二极管的阳极接上高电平即可点亮。

共阳极接法:同样,这就是把这几个二极管的阳极连接在一起,通常情况下,连接在一起之后一起接VCC(高电平)。所以我们要想点亮那个二极管就需要在对应二极管的阴极接上低电平即可。

每个人的板子不一样,所以共阴极还是共阳极请自行判断。比如我的就是共阴极接法。 这两个接法刚好相反,后面的高低电平应该是相反的。

接下来先看看在实际电路中数码管。
51单片机
乍一看,这点路对于像我这样的新手是有点复杂的,而且还出现一个之前没有见过的一个芯片 74HC245锁存器.还另外有一个芯片是74HC138译码器

有两个词,就是位选和段选
位选:其实就是控制哪一个数码管显示
段选:其实就是控制数码管显示的内容

74HC138译码器和74HC245锁存器

74HC138译码器也叫3-8译码器,简单来说就是三通道输入,八通道输出,通过对三通道的操作实现对八通道的控制。看原理图。
74HC138译码器在上面的原理图中,
左边的输入通道有六个,上面的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锁存器原理图如下
74HC245其实看这个电路图不能很好的表述锁存器的作用。应该这个电路图里1接高电平,19接低电平 锁存器是直接打开的,只需要把对应的数据从P0口输入就好。

这里有74HC573芯片的在单片机的原理图作为对锁存器的一种学习。

图片是从郭天祥的 新概念51单片机教程,入门,提高,开发。这本书的P58截图这本书作为对51单片机讲解非常好,我也下载了电子版作为一种辅助学习,有兴趣的可也以下载使用。
74HC573锁存器
根据上面的原理图,可以看出在这里,锁存器有两部分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);
}

仿真电路
在这里插入图片描述

  • 28
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值