历史上的今天
今天是:2025年04月03日(星期四)
2020年04月03日 | 51单片机之静态数码管显示
2020-04-03 来源:eefocus
数码管的物理实物图:

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,中间图为共阳极内部原理图,右图为共阴极内部原理图。

上图展出了常用的两种数码管的引脚排列和内部结构。总所周知,点亮发光二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。
对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。想让它显示几,就给相对应的发光二极管送高电平,因此我们在显示数字的时候首先做的就是给0-9十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的阳极就行了。
共阳极数码管其内部8个发光二极管的所有阳极全部连接在一起,电路连接时,公共端接高电平,因此我们要点亮的那个发光管二极管就需要给阴极送低电平,此时显示数字的编码与共阳极编码是相反的关系,数码管内部发光二极管点亮时,也需要5mA以上的电流,而且电流不可过大,否则会烧毁发光二极管。由于单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,本实验板上使用的是74HC573锁存器,其输出电流较大,电路接口简单,可借鉴使用。
一般共阳极数码管更为常用,为什么呢?这是因为数码管的非公共端往往接在IC 芯片的IO上,而IC 芯片的驱动能力往往是比较小的,如果采用共阴极数码管,它的驱动端在非公共端,就有可能受限于IC芯片输出电流不够而显示昏暗(比如51单片机),要外加上拉电阻或者是三极管加大驱动能力。所以使用共阳数码管的好处是:将驱动数码管的工作交到公共端(一般接驱动电源),加大驱动电源的功率自然要比加大IC芯片IO口的驱动电流简单许多。另一方面,这样也能减轻MCU的负担。
当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。
一般单位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12个引脚,关于具体的引脚及段、位标号大家可以查询相关资料,最简单的办法就是用数字万用表测量,若没有数字万用表也可用5V直流电源串接1k电阻后测量,将测量结果记录,通过统计便可绘制出引脚标号。
数码管静态显示
当多位数码管应用于某一系统时,它们的“位选”是可独立控制的,而“段选”是连接在一起的,我们可以通过位选信号控制哪几个数码管亮,而在同一时刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的段选是连接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们显示的数字必定一样,数码管的这种显示方法叫做静态显示。

从电路图可以看出,本开发板使用的是共阳极数码管,在每段数码管端加上一个470R的限流电阻。
单片机静态数码管显示实验连线图如下:

示例程序如下:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[16]= {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71}; // 0~f 16个数字
u8 k = 0;
void delay1s(u8 x) //延时函数
{
u16 i=0;
u16 j=0;
for(;i < x*14665; i++)
for(;j < 10000; j++)
;
}
void main()
{
P0 = ~smgduan[0]; //显示0
while(1)
{
for(;k < 16; k++)
{
P0 = ~smgduan[k]; //显示0~f 16个数
delay1s(1); //延时
}
k = 0;
}
}
上一篇:51单片机——数码管驱动
下一篇:51单片机之动态数码管显示
史海拾趣
|
如何改进VRLA蓄电池 铅酸蓄电池研究和发展的主要目的: ——取得最大的放电容量和深放电的运用; ——经历多次充、放电循环后,尽可能能维持最大容量。 铅酸蓄电池的放电反应表述如下: 正极:PbO2+3H++HSO4-+2e→PbSO4+2H2O(1) 负极:Pb+ ...… 查看全部问答> |
|
赛普拉斯日前针对通过现有电力线进行数据通讯的应用,推出灵活的基于PSoC的可编程解决方案。新型赛普拉斯电力线通讯(PLC)解决方案利用赛普拉斯的 PSoC®可编程片上系统所具有的模拟和数字资源,除通讯功能外还集成了许多功能,例如电源管理、 ...… 查看全部问答> |
|
最近发现一些id在各个板块刷分,虽然分数并没有很大用处,但这种行为破坏了论坛公平的原则,给软件农民工们幼小的心灵造成了伤害,不利于河蟹社会,希望大家回帖时能关注一下,并举报出这些id。 刷粪的家伙们,别以为我会嫌删贴麻烦,只要批量搜索 ...… 查看全部问答> |
|
求救:调试flash读写保护程序,JLINK不能下载程序了? 运行了一段写 flash读保护和写保护 程序后,jLink不能在下载调试(这个预料中). 但当我运行"J-link stm32 unlock"程序去保护,结果提示:"Unlocking flash...ERROR: Flash memory is still read-protected.". 难道不能用此 ...… 查看全部问答> |
|
针对现有励磁方式的缺陷, 提出了一种新型的三值正弦矩形波励磁方式, 采用具有 1 6位 A D C采集模块的MS P 4 3 0 F 4 7 9 3单片机作为 MC U, 构建了电磁流量计样机。论文详细地分析了新型励磁方式的特点并介绍了软、 硬件设计。试验结果表明, 新 ...… 查看全部问答> |
|
硝烟弥漫:固态硬盘该如何寻找出路?2012年06月11日 CBSi中国 固态硬盘的出路在哪里,我们要弄清楚存储的首要任务。存储顾名思义是存放视频、资料文件的地方,首先强调容量。其次才是速度,速度是为了更好为存储空间服务,缩短拷贝时 ...… 查看全部问答> |




