IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机零基础入门(8-1)学会单片机数码管,这篇文章就够了,一文吃透数码管---数码管如何定义引脚?数码管如何驱动?驱动方式有哪些?单片机中的译码器和缓冲器又是什么?数码管段码表 -> 正文阅读

[嵌入式]单片机零基础入门(8-1)学会单片机数码管,这篇文章就够了,一文吃透数码管---数码管如何定义引脚?数码管如何驱动?驱动方式有哪些?单片机中的译码器和缓冲器又是什么?数码管段码表

一、回顾

上篇文章,我写了:单片机零基础入门(7):解决独立按键抖动的问题,单片机零基础入门(8-1)学会单片机数码管,这篇文章就够了,一文吃透数码管—数码管如何定义引脚?数码管如何驱动?驱动方式有哪些?单片机中的译码器和缓冲器又是什么?。
为什么要写(8-1),因为还有(8-2),(8-3)等,后面的文章写用数码管实现的小项目。


声明:本文为原创内容,转载需声明来源,地址。
声明:本文为原创内容,转载需声明来源,地址。


二、本章知识点

1、什么是数码管?

百度百科如下:(截取部分)

数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。

可以这样理解:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。
生活中常见的数码管,例如:红绿灯。
在这里插入图片描述


2、数码管引脚的定义?

(1)数码管的形状:

在这里插入图片描述


(2)数码管的引脚定义:

图1:数码管的笔端
在这里插入图片描述
图1为一个数码管的笔端图,笔端分为A、B、C、D、E、F、G、DP 8段,也就是由8个LED组成的,点亮前7段既可点亮一个数字,DP一般用于表示小数点。


图2:单个数码管的连接方式
在这里插入图片描述
图2为一个数码管的连接方式,图2中,上面一个为共阴极连接,下面一个为共阳极连接。
(PS:上图为个人手工绘制,略丑,勿嫌弃!)


三、数码管的连接方式:

1、什么是共阴极,什么是共阳极?

百度百科:

按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
1、 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。


2、共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

PS:百度百科解释的很详细了,我上面分段,很清晰,这里我就不再赘述!


2、四位一体的数码管:

(1)四位一体数码管的形状:

个人开始刚开始写单片机文章时,说的开发板上的数码管就是下图这种,两个四位一体的数码管。
在这里插入图片描述
(PS:上图为个人手工绘制,略丑,勿嫌弃!)


(2)四位一体数码管的连接方式:
下图为数码管在我单片机开发板中的连接方式,为共阳极连接方式。

在这里插入图片描述
注:四位一体的数码管在我的单片机开发板中的连接方式是共阳极。
图中:上面的COM为公共端,数字 11、7、4、2、1、10、5、3为位选端。

重点: 共阳极就是把二极管的正极连接在一起,那么共阴极就是把二极管负极连接在一起;共阳极数码管,要点亮LED就需要输入端信号为低电平,反之共阴极就需要输入高电平信号;


四、如何驱动数码管?

1、数码管的驱动方式有哪些?

数码管的驱动方式有静态驱动和动态驱动两种,具体的,(PS:这里偷个懒,百度百科扒过来,如下)
百度百科:

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
1、静态显示驱动
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性

2、动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一。
动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。


2、数码管如何驱动?

数码管的驱动还需要两个芯片,一个是 138译码器,另一个是 双向数据缓冲器。


四、数码管的驱动核心:

1、什么是138译码器?

74LS138又称138译码器。

百度百科:

74LS138 为3 线-8线译码器,共有 54LS138和 74LS138 两种线路结构型式。54LS138为军用,74LS138为民用。

2、74LS138译码器的原理图:

在这里插入图片描述
注:138译码器,也就是通过3个IO控制8个输出端。
(1)图中(P22、P23、P24)A、B、C是输入端,Y0、Y1、Y2…Y7为输出端。A为低位,C为高位。
(2)VCC和GND是电源,VCC为高电平,GND为低电平。
(3)左下角G1、G2A、G2B为使能端。使能有效工作,无效就不工作。
G1接上高电平,G2接低电平,译码器才可以工作。个人使用的这个单片机,从原理图中已经看出,G1已经接上VCC,G2接上GND,所以无需管这里。


138译码器中,ABC按照高低顺序排序,分别为CBA(P24,P23,P22),如果我们三位都分别给一个数字(此时为二进制),转化为十进制后,对应的就是输出端的编号。例如:CBA分别赋值为0,此时:P2_4 = 0,P2_3= 0,P2_2 = 0。得出:Y0。此时Y0低电平有效(为0)。其他输出端无效(为1)。那么:0111 1111


3、双向数据缓冲器?

作用:双向数据缓冲器用来提高单片机的驱动能力的。
在这里插入图片描述
解读:
(1)数据缓冲器中,A0与B0,A1与B1,A2与B2…A7与B7是一一对应的关系。
(2)OE:芯片的使能,如果图中OE接低电平,芯片就工作,接高电平,芯片就不工作。
(3)DIR(英文名direction),方向。数据发出去还是读回来,就是DIR决定。 如果DIR接高电平,就把左边数据发送到右边去(A0–>B0…);如果接低电平,则接收右边发回来的数据(B0–>A0…)。


五、数码管段码:

1、笔段:

1、一个数码管的驱动,主要就是通过数码管点亮笔段实现,例如:在第3个数码管上显示6。分别点亮笔段:A、C、D、E、F、G既可。
在这里插入图片描述
(PS:上图为个人绘制,非专业,略丑!)

如上图: 笔段A、C、D、E、F、G为1,其他的为0既可。二进制表示:1011 1110。转化为十六进制赋值:0x7D
解:动态数码管模块中显示,第3个数码管为LED6,LED6在138译码器中为Y5。Y5为138译码器中A、B、C的对应二进制值转化后的十进制(此处在第四节中第2小段:74LS138译码器的原理图下的注释中写得很详细)。

注意: 数据的高位对端口的高位。


2、笔段赋值原理:

在这里插入图片描述
注: 根据数码管笔段赋值,得到P0 = 0x7D。
解释: 根据右边笔段赋值,得到双向数据缓冲器右边的数据为段码赋值的值:1011 1110。再根据双向数据缓冲器的原理,得出右边数据也为1011 1110。最后根据从高位到低位转化,再转化为16进制赋值既可。


代码如下:

//------源代码-------
#include <REGX52.H>

/*
----需求:
在第3个数目管显示6
*/

int main()
{
	/************************************
	* 第3个数码管为138译码器中的LED6,
	* LED6为138译码器中的Y5,
	* 下面给二进制ABC赋值转为Y5既可。0101 = 5
	*************************************/
	
	/*Y5赋值*/
	P2_2=1;
	P2_3=0;
	P2_4=1;
	
	/*******************************
	* LED6赋值
	* a,b,c,d,e,f,g,dp显示数字6,笔段A、C、
	* D、E、F、G为1,其他的为0既可。
	* 0100 0001,由高位到低位为:1000 0010=0x82
	* 1011 1110                 0111 1101=0x7D
	********************************/
	
	P0 = 0x7D;		//LED6赋值

	return 0;
}

3、数码管段码表

(1)当我们需要表达数码管中的某某数字时,需要对其数码管进行赋值某某。因此,整理出数码管段码表,对其快速赋值,提高工作效率。
从1到F到空的数码管段码表如下图:
在这里插入图片描述
(2)共阳极数码管段码表:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e。

(3)共阴极数码管段码表:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71。


六、数码管小项目的实现:

1、小项目1:在数码管中实现显示一个数字。
2、小项目2:在数码管中任意位置显示一个数字----(1)的进阶。
3、小项目3:动态数码管的小项目实现。


以上内容,就是咱们本篇文章关于数码管的讲解,下篇文章,将写第五点小项目。


声明:本文为原创内容,转载需声明来源,地址。
声明:本文为原创内容,转载需声明来源,地址。


-----------------人生在勤,不索何获!-------------

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:27:52  更:2021-07-16 11:30:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 8:17:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码