产品概述

单片机静态显示 单片机开发——数码管的静态显示

小编 2024-11-25 产品概述 23 0

单片机开发——数码管的静态显示

在第三章我们学习了 74HC138,了解到 74HC138 在同一时刻只能让一个输出口为低电平,也就是说在一个时刻内,我们只能使能一个数码管,并根据我们给出的 P0 的值来改变这个数码管的显示字符,我们可以将此理解为数码管的静态显示。数码管静态显示是对应动态显示而言的,静态显示对于一两个数码管还行,多个数码管,静态显示实现的意义就没有了。(不习惯看文字?登录乐搏学院官网,在那里有海量免费的视频教学资源,有大牛名师在线辅导,有千万小伙伴一起爱智求真,快快关注我们吧)这节课我们先用一个数码管的静态显示来实现一个简单的秒表,为下节课的动态显示打下基础。我们前边课程定义变量的时候,一般用到unsigned char或者unsigned int这两个关键字,这样定义的变量都是放在我们的单片机的RAM中,我们在程序中可以随意去改变这些变量的值。但是还有一种数据,我们在程序中要使用,但是却不会改变它的值,定义这种数据时可以加一个 code 关键字修饰一下,这个数据就会存储到我们的程序空间 Flash 中,这样可以大大节省单片机的 RAM 的使用量,毕竟我们的单片机 RAM 空间比较小,而程序空间则大的多。那么现在要使用的数码管真值表,我们只会使用它们的值,而不需要改变它们,就可以用 code 关键字把它放入 Flash 中了,具体程序代码如下。

详解数码管显示控制

数码管种类繁多,按外观来划分,可以分为七段数码管、米字型数码管、点阵块等。图8-5所示为各种不同形状的数码管。

图8-5 各种不同形状的数码管

LED数码管结构与工作原理

单片机系统中常用的是七段数码管,它由8个发光二极管(以下简称字段)构成,如图8-6(a)图所示(注:由于小数点字段不常用,所以一般称为七段),通过不同的组合可以显示数字0~9、字符A~F、H、L、P、U、符号“-”及小数点“.”。

根据发光二极管物理连接的不同,七段数码管可以分为共阴极和共阳极两种结构。共阴极型数码管如图8-6(b)所示,所有字段的阴极均连接低电平,因此在使用共阴极数码时,需要在相应字段上加高电平,才会使其发光。共阳极数码管如图8-6(c)所示,所有字段的阳极均连接高电平,在使用时,需要在相应字段上加低电平。

图8-6 7段数码管结构

LED数码管字型编码

在单片机与数码管组成的应用系统中,一般将单片机的一个并口与数码管的8个段控制引脚连接,且按照口线位的顺序由低到高与a、b、c、d、e、f、g、h连接,这样,若要显示不同字符,只需应用单片机的口线输出相应的控制的电平就可以实现。向口线送的数据就是LED的字型编码。共阴和共阳的字型编码如表8-2所示。

表8-2 共阴和共阳的字型编码表

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态显式和动态显式两类。

LED数码管静态显示

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口线进行驱动,或者使用如BCD码、二–十进位解码器解码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口较多,如驱动5个数码管静态显示则需要5×8=40根I/O口线来驱动,而1个89S51单片机可用的I/O口线才32个。

2位共阳极数码管的静态显示电路如图8-7所示。

图8-7 2位共阳极数码管的静态显示电路原理图

显示数字12的C51程序如下:

LED数码管动态显示

数码管动态显示是单片机中应用最为广泛的显示方式,动态驱动是将所有数码管的8个同名端“a,b,c,d,e,f,g,h”连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。

当单片机输出字形码时,所有数码管都接收到相同的字形码,究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示,不会有闪烁感,动态显示的效果和静态显示相同,并且能够节省大量的I/O口线,降低功耗。

2位共阳极数码管动态显示电路如图8-8所示。

显示数字12的C51程序如下:

图8-8 2位共阳极数码管动态显示电路原理图

相关问答

请问 单片机 休眠后,为降低 静态 电流要将IO口设置为输入还是输...

对静态电流有什么不同。讨论回答(6)之所以要让单片机进入休眠状态,目的是要把整个电路都带入低功耗状态。这就具体到每根口线与周边电路的连接关系,不能凭空...

单片机 C语言如何查表(将 静态 的表写在程序存储器中)?

c语言中用CODE修饰就是把大数组存于程序存储中,运行中不能修改,相当于常量c语言中用CODE修饰就是把大数组存于程序存储中,运行中不能修改,相当于常量

简述7段数码动态管动态 显示 方式的工作原理?与 静态 方式相比有哪些优缺点?

(1)静态显示方式:静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进...

led 静态 和动态的接线区别?

一个是分时显示,一个是同时显示动态显示是指几块LED分时显示,静态显示是指几块LED同时显示,动态显示,可以节省硬件资源即I/O口,但占用较多CPU时间,静态显...

msp430 单片机 led灯循环 显示 0到9程序怎么写?

您说的显示0到9是数码管还是9个LED指示灯,若是数码管,可以动态扫描或者静态驱动。若是9个LED,可以使用9个io驱动,定时依次给io有效电平即可。您说的显示0到9...

单片机 .速度来回答(43)在共阳极数码管使用中,若要仅 显示 ...

[最佳回答](45)C.模拟量到数字量的转换和采样/保持

水温控制系统中动态误差 静态 误差还有怎么实现 单片机 与加热设...

[最佳回答]静态误差:水温达到稳态时与设定值的误差.可以用PID控制(增量PID)——加温、制冷参数要分开调.单片机与加热器用光耦隔离驱动固态继电器或可控硅来控...

51 单片机 是不是不支持malloc?

是的,51单片机通常不支持动态内存分配函数malloc。这是因为51单片机的内存资源有限,没有内存管理单元来支持动态内存分配。相反,51单片机通常使用静态内存分配...

三极管的三个引脚是什么意思?

在我看来,提问者提出的问题是根据元器件外观来提出的,其实三极管总的来说有两种类型三极管,一种是电流控制型三极管,我们根据它的特性又给起了个名字叫双极结...

单片机 串行程序不工作?

单片机不工作,稍微有点基础的人都会去查电源、晶振等硬件及源代码,关键是具体到一个特定项目(系统)怎么去查,就此做一些个人经验介绍。1.单片机本身就是集...

猜你喜欢