嵌入式硬件入门——LED数码管(工作原理+静态驱动)
LED数码管是一种半导体发光器件,其基本单元是发光二极管(LED)
文章目录
- 数码管介绍
- 1.数码管的分类
- 2.数码管内部构造及原理
- 数码管硬件知识
- 1.数码管电压与电流
- 2.数码管典型电路
- 数码管的应用
- 使用51单片机控制数码管
数码管介绍
led数码管
(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型
的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极
。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp
来表示。 ——百度百科
LED数码管在生活中随处可见,洗衣机、电饭煲、热水器、微波炉、冰箱、这些最基本的家用电器上基本都用到了这种7段LED数码管(段
为LED灯的个数)。
下图为某洗衣机控制主板:
1.数码管的分类
按显示段数分:分为
七段
、八段
、九段
、十四段
和十六段
七段:七段数码管由7个LED构成
八段:八段数码管比七段多了一个小数点
九段:九段数码管由9个LED构成
十四段:十四段数码管由14个LED构成
十六段:十六段数码管由16个LED构成按显示位数分:分为
1位
、2位
、3位
及多位数码管
(大于1位)
按内部发光二极管单元的连接方式分:分为
共阳极
和共阴极
共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。(内部构造见下节内容)
按显示颜色分:分为红色、橙色、黄色、绿色和蓝色等等
2.数码管内部构造及原理
内部构造
下图是数码管的引脚定义和内部构造,可以看到其实数码管内部只有LED一种元件,图(a)中的COM
就是数码管的公共端,数码管只能是共阳极(公共端为VCC)和共阴极(公共端接地)中的一种。
显示原理
从上面的内容我们可以得知LED数码管其实就是由多个LED组成的,那它是如何显示数字的呢?
原来数码管的8个LED都已经被命好名了:它们分别叫a,b,c,d,e,f,g,dp
,只要点亮这8个LED中的其中几个,就能达到显示数字的目的,那我们怎么知道显示的数字和LED编号之间的对应关系呢?
这个其实也很简单,不用我们死记硬背,可以直接查表,下图是共阴极数码管显示0-F
对应的编码:
如果是共阳极数码管,只需将上图对应的编码按位取反即可。
下表同样为数码管显示字段对照表:
显示的数字 | 点亮的LED | 十六进制 (共阳极) | 十六进制 (共阴极) |
---|---|---|---|
0 | abcdef | 0xC0 | 0x3F |
1 | bc | 0xF9 | 0x06 |
2 | abdeg | 0xA4 | 0x5B |
3 | abcdg | 0xb0 | 0x4F |
4 | bcfg | 0x99 | 0x66 |
5 | acdfg | 0x92 | 0x6D |
6 | acdefg | 0x82 | 0x7D |
7 | abc | 0xF8 | 0x07 |
8 | abcdefg | 0x80 | 0x7F |
9 | abcdfg | 0x90 | 0x6F |
A | abcefg | 0x88 | 0x77 |
B | cdefg | 0x83 | 0x7C |
C | adef | 0xC6 | 0x39 |
D | bcdeg | 0xA1 | 0x5E |
E | adefg | 0x86 | 0x79 |
F | aefg | 0x8E | 0x71 |
数码管硬件知识
1.数码管电压与电流
- 同样型号下,不同颜色的LED数码管
红色的LED数码管电压一般在1.7~2.5Ⅴ左右,绿色的LED数码管电压一般在2.0~2.4Ⅴ左右,黄色的LED数码管电压一般在1.9~2.4Ⅴ左右,蓝/白色的LED数码管电压一般在3.0~3.8v左右。- 同样颜色,不同功率的LED数码管
1/6W的LED数码管的电压2.5V~3.5V之间,电流是0.02A左右;1/2W的LED数码管的电压2.5V~3.77V之间,电流是0.15A左右;1W的LED数码管的电压2.79V~3.99V之间,电流是0.35A左右;3W的LED数码管的电压3.05V~4.47V之间,电流是0.7A左右;5W的LED数码管的电压3.16V~4.88V之间,电流是1A左右。- 来源——http://www.dg8.com.cn/jishu/13458.html
由于LED数码管由LED组成,所以以上参数其实和LED的电压和电流参数相同,这些内容也在我之前的发光二极管介绍篇里有所提及。
2.数码管典型电路
由于不同规格型号的LED数码管对应的正向导通电压和额定电流不同,所以我这里以Proteus
器件库的数码管默认参数作为参考,如下图所示,即现在我们要使用的数码管正向导通电压为1.5V
,额定电流为10mA
。
单片机的VCC
通常为3.3V或5V,它们都达到了数码管的1.5V正向导通电压(电压超过一点没关系,主要是电流不能太大)。
假如我们现在用单片机控制数码管,由于单片机的IO电流一般为10mA~20mA
,驱动单个LED是足够的,但是如果有多个数码管并联(多位数码管),单片机的IO电流就不足以驱动所有的数码管,这时就会出现数码管亮度变暗或不亮的现象。
所以,在用单片机控制多位数码管时(动态驱动数码管),我们需要使用驱动电路。
首先让我看看动态数码管的电路原理图,可以看到8个数码管的8个引脚是和单片机IO并联的,如果8个数码管同时亮或者快速扫描时(扫描的意思是多个数码管片选,即在一个较短的时间内单片机只操作一个数码管,然后不断循环切换数码管进行显示),单片机的IO驱动能力不足以维持数码管的正常显示,所以我们需要在单片机IO和多位数码管之间增加驱动电路。
通常可以使用三极管实现驱动功能,这里的三极管起到开关作用。当IO端(电阻R3左侧)为低电平时,三极管不导通,4个LED不亮;当IO端为高电平时,三极管导通,4个LED被点亮。这时单片机就是起到控制作用(控制三极管的集电极和发射极是否导通),而不是驱动作用。
除了用三极管,我们还可以使用一些驱动芯片,比如74HC245,74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动。
其内部构造如下图所示,里面相当于有8个开关电路,正好数码管也有8个信号引脚。此外,74HC245支持三态输出(输入、输出、高阻),也就是说它能反向驱动,即驱动共阳极数码管,可以说用74HC245来驱动数码管堪称完美(纯个人观点——我见识短)。
- 用74HC245驱动单个共阴极数码管
- 用74HC245驱动单个共阳极数码管
据说还有一种数码管译码器74LS47,它能将BCD码(用4位二进制数来表示1位十进制数中的0~9这10个数码)转换成数码管对应的数字的显示信号,这个芯片我在学单片机之前用过,不过现在忘了。
74LS47是 BCD-7段数码管译码器驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它来进行解码,可以直接把数字转换为数码管的数字,从而简化了程序,节约了单片机的IO开销。因此是一个非常好的芯片!但是由于目前从节约成本的角度考虑,此类芯片已经少用,大部分情况下都是用动态扫描数码管的形式来实现数码管显示。
.
由于BCD码只能表示0~9,所以它也只能翻译0~9对应的数码管显示信号。具体使用这里就不作介绍了。
下面展示百度百科的图:(当然,如果用单片机,我们就没必要用BCD码编码器)
数码管的应用
使用51单片机控制数码管
这里仅介绍单个数码管的操作(1位数码管),又称静态驱动数码管显示
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
.
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
——百度百科
直接上代码,实现功能:让数码管循环显示0-F
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器unsigned char code coding[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0-F的值#define LED_TUBE P2 //P2的8个IO端口对应数码管的8个信号引脚/******************************************************************************* @ 函数名 : Delay_10us* @ 功 能 : 10us粗略延时* @ 参 数 : 延时时间--单位10us* @ 返回值 : 无******************************************************************************/
void Delay_10us(unsigned int time)
{while(time--);
}/******************************************************************************* @ 函数名 : main* @ 功 能 : 主函数* @ 参 数 : 无* @ 返回值 : 无******************************************************************************/int main()
{ unsigned char i = 0;while(1){/* 显示0-F */for(i = 0; i < 16; i++){LED_TUBE = coding[i]; //设置8个IO的电平Delay_10us(50000); //延时约500ms} }
}
Proteus仿真:
实现功能:让数码管循环显示0-F
下图中串联电阻阻值为470欧姆
嵌入式硬件入门——LED数码管(工作原理+静态驱动)相关推荐
- STM32 嵌入式学习入门(4)——PWM原理
STM32 嵌入式学习入门(4)--PWM原理 本文先对STM32F103的通用定时器作一简单介绍,然后详细介绍通用定时器的一个应用--输出PWM波形的原理.整个文章以介绍"怎么用" ...
- 嵌入式硬件开发工程师涉及哪些工作内容?
相信很多人都了解嵌入式工程师需要掌握的内容非常广泛,学习嵌入式又分为软件和硬件两种不同的发展方向,而它们学习的侧重点也是不一样的.但都有一个特点就是踏入这个行业的难度比较大,相对应的,嵌入式人才也更稀 ...
- STM51嵌入式开发入门软件安装-Keil、stc、驱动
STM51嵌入式开发入门软件安装-Keil.stc.驱动 STM51嵌入式开发入门软件安装-Keil.stc.驱动 1 Keil安装 1.1 百度进入官网 1.2 选择C51,点击后需要填的信息随便填 ...
- ARKit从入门到精通-ARKit工作原理及流程介绍
2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1.2-ARKit与SceneKit ...
- 跟涛哥一起学嵌入式 31:深入浅出CPU流水线工作原理
现在的CPU处理器一般都是超流水线工作,动不动就是10级以上流水线,超高主频,这两者之间有什么关系呢?今天就跟大家科普下CPU流水线的工作原理,以及他们之间的关系. 说到流水线,很多人会想到富士康:说 ...
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
上篇博文,我们简单的介绍了什么是SpringMVC,这篇博文,我们搭建一个简单SpringMVC的环境,使用非注解形式实现一个HelloWorld实例,从简单入手,逐步深入. 环境准备 我们需要有基本 ...
- 继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析
继电器是具有隔离功能的自动开关元件,广泛应用于遥控.遥测.通讯.自动控制.机电一体化及电力电了设备中,是最重要的控制元件之一.继电器实际上是用较小的电流去控制较大电流的一种"自动开关&quo ...
- 继电器rc吸收电路取值_一文读懂继电器的工作原理以及驱动电路
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种"自动开关".故在电路中起 ...
- 步进电机的工作原理及驱动方法
一.步进电机的工作原理 (一)反应式步进电机的结构 暂不更新 (二)反应式步进电机的工作原理 磁力线优先走磁阻最小的路径,从而产生反应力矩; 各项定子尺之间彼此错开1/m齿距,m为相数. 1.通电方式 ...
最新文章
- hdu 1421 搬寝室 (dp)
- android告别篇-对于源码我的一些看法
- 【采用】智能反欺诈算法概览及典型应用案例
- 浅谈C++对象内存布局
- 【Alpha版本】十天冲刺集结令
- [bzoj1566][NOI2009]管道取珠
- javaio流_Java IO流
- 表格文字超数量就竖排_干货 |超实用Word、Excel、PPT软件技能
- 【NFC】 NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/Mifare/Felica/Pboc/ISOxxxx 都是些什么鸟玩意?
- 电力线通信技术的发展
- selenium+python爬取京东评论最多的计算机配置信息
- 生活-痘痘告诉你,身体哪里生病了
- 在win10中查看plt文件
- 优化vue打包chunk-vendors.js 过大
- eclipse一些有用的技巧总结
- 使用java将多种类型的文件如Word、PDF、JPG汇总到一个文档中(Word或者PDF)
- 少年五年升阿里 P8,他如何从低谷登上“光明顶”?
- 威力导演注册机|威力导演(Cyberlink PowerDirector)15破解工具下载
- SuperMap iDesktop 之 BIM优化流程——建筑篇
- TensorRT量化-FP16和INT8
热门文章
- 照片简单处理的ps技巧(影楼绝密哦)
- 2-7 微信小程序计算器
- DenseASPP for Semantic Segmentation in Street Scenes
- 边缘计算企业20强榜单评选倒计时
- 金海通上交所上市:年营收4亿募资8.8亿 市值51亿
- 所有网络协议(已知汇总)
- 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:11 如何提高你的NLP技能
- WORD设置节起始页码后出现诡异隐藏页/跳页、节首页页面边框丢失
- RPG游戏《黑暗之光》流程介绍与代码分析之(十):主角状态信息界面与小地图的实现
- ipa如何安装到iphone