任务引入
在公共场所我们常常看到单个数码管显示数字,它是如何控制显示的?本任务中通过编程控制单个数码管静态显示任意数字。
任务目标
知识目标:1.掌握数码管的结构和工作原理。
2.掌握单片机控制单个数码管静态显示电路中各元器件的作用。
3.能独立编写单片机控制单个数码管的流程图及程序。
4.能掌握编程所需的指令的意义。
技能目标:1.能独立完成单个数码管显示仿真电路绘制。
2.会使用Keil和Proteus两大软件进行仿真调试。
2.培养学生团队意识和集体荣誉感。
任务描述
1.利用Proteus软件绘制单个数码管静态显示仿真电路,如图4-2所示。
图4-2 单个数码管静态显示仿真电路
2.通过编写程序调试,完成单个数码管静态显示0~9循环数字,如图4-3所示。
图4-3 单个数码管静态显示效果
任务实施
一、任务分析
任务中通过仿真电路显示0~9循环数字,首先在Proteus绘制仿真电路,P2口输出数字编码,在显示每一个数字之间加以延时,达到显示任务要求。
二、绘制仿真电路图
1)单个数码管静态显示仿真电路元器件,如表4-1所示。
表4-1 单个数码管静态显示仿真电路元器件
2)绘制单片机最小系统单元,如图4-4所示。
图4-4 单片机最小系统单元
3)绘制单片机单个数码管静态显示单元,如图4-5所示。
三、画程序流程图
根据任务控制描述知道,要求通过P2口输出数字对应的字码到数码管上,显示规定的循环数字,例如在共阳极数码管上显示0~9时,程序流程图如图4-6所示。
图4-5 单片机单个数码管静态显示单元
图4-6 程序流程图
四、编写程序
根据流程图和相关指令编写程序。
五、仿真调试
1)打开Keil软件,输入调试程序并编译生成hex文件。
2)打开单个数码管静态显示仿真电路,导入hex文件调试。
知识链接
一、相关指令学习
定义字节伪指令:【标号:】DBn1,n2,…,nN
表示把指令右边的单字节数据依次存放到以左边标号为起始地址的连续存储单元中,通常用于定义常数表格,指令中标号段为任选项。例如:(www.daowen.com)
设TAB标号地址为1000H,则该程序汇编时,自动把18H存入1000H单元,27H存入1031H单元……,汇编后结果为:
二、相关硬件学习
1.LED数码管结构特点
最常见LED数码管为七段数码管,其内部结构实际上由8个LED组合而成,如图4-7a所示。七段数码管包括7个笔段(A、B、C、D、E、F、G)与一个小数点DP。当某个发光二极管导通时,相应的一个笔段或小数点就发光。控制不同的发光二极管导通,就能显示出对应的字符。数码管共有10个引脚,其中8个引脚为笔段引脚,另外两个引脚(3、8)为数码管的公共端,在数码管内部是相互连通的。如图4-7b所示。
七段LED数码管的引脚顺序:从数码管的正面观看,以左侧第一脚为起点,按逆时针方向排序。
2.LED数码管分类
根据LED数码管内LED的连接方式,可将LED数码管分为共阴极与共阳极两大类。将8个LED的阴极连在一起即为共阴极LED数码管,如图4-7c所示。而将8个LED的阳极连在一起即为共阳极LED数码管,如图4-7d所示。以共阳极LED数码管为例,如把公共端接高电平,在相应笔段的阴极接上低电平,该段即会发光。当然,LED的电流通常较小(5~20mA),一般均需在回路中接限流电阻,串接限流电阻时应分别串在每一段段码上,不能串接在公共端,如图4-8所示。
图4-7 LED数码管外形与结构图
图4-8 数码管共阳极连接应用
LED数码管限流电阻一般取220~330Ω,电阻越大亮度越弱。例如我们将共阳极数码管B和C段接上低电平,其他端接高电平或悬空,那么B和C段发光,此时,LED数码管将显示数字1。而将A、B、D、E和G段都接上低电平,其他引脚悬空,此时LED数码管将显示2,其他字符的显示原理类同。数码管数显编码见表4-2。
3.LED数码管静态显示接口
LED数码管的显示方法有静态显示和动态显示两种。所谓静态显示就是显示器的每一个字段都要独占一条I/O口,当CPU将要显示的字(经硬件译码)或字段码(经软件译码)送到输出口上,LED数码管就可以显示出所要显示的字符,如果CPU不去改写它,它将一直保持下去。
静态显示的优点是显示程序简单,亮度高,由于在不改变显示内容时不用CPU去干预,所以节约了CPU的时间。但静态显示也有它的缺点,主要是显示位数较多时占用I/O口较多,硬件较复杂、成本高。静态显示一般用于显示位数较少的系统中。
(1)单片机直接连接法
表4-2 LED数码管数显编码
图4-9所示为一个AT89S52直接与LED数码管连接的电路。图中LED数码管为共阳极结构,每一段都接有限流电阻通过单片机并行口直接与共阳极数码管连接。如果我们要将数字显示在LED数码管上,该怎样做呢?
共阳极数码管段码发光,在公共端接上电源正极后,另一端接上电源地,段码就发光,当接上单片机并行口,就需要单片机输出低电平信号(0)。需要显示数字,就输出对应的字形码就行了。
图4-9 AT89S52直接与LED数码管连接电路
例如:将数字5显示在LED数码管上,编写的程序与流程图(图4-10)如下。
(2)硬件译码静态LED数码管接口
图4-10 程序流程图
常用的七段LED数码管硬件译码电路芯片一般除具有译码功能外还有驱动功能,有的芯片还具有锁存功能,从驱动功能来看还有用于共阳极和用于共阴极之分。例如译码驱动二合一芯片74LS47(适用于共阳极),74LS49(适用于共阴极),又如锁存译码驱动三合一芯片MC14495(适用于共阴极)。
1)74LS47功能介绍。译码器的逻辑功能是将每个输入的二进制代码译成对应的输出的高、低电平信号。常用的译码器电路有二进制译码器、二—十进制译码器和显示译码器。译码为编码的逆过程。它将编码时赋予代码的含义“翻译”过来。实现译码的逻辑电路称为译码器。译码器输出与输入代码有唯一的对应关系。74LS47是输出低电平有效的七段字形译码器,它在这里与LED数码管配合使用,表4-3列出了74LS47的真值表,表示出了它与LED数码管之间的关系。
表4-3 74LS47真值表
74LS47是BCD-7段数码管译码器/驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它解码可以直接把数字转换为LED数码管的显示数字。74LS47为低电平作用,其引脚图如4-11图所示。
图4-11 74LS47引脚图
2)引脚功能。LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当时,无论输入A3、A2、A1、A0为何种状态,译码器输出均为低电平,也就是七段将全亮,若驱动的数码管正常,是显示8。:熄灭输入,是为控制多位数码显示的灭灯所设置的。当时,不论和输入A3、A2、A1、A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。:灭零输入,它是为使不希望显示的0熄灭而设定的。当A3=A2=A1=A0=0时,本应显示0,但是在作用下,使译码器输出全为高电平。其结果和加入灭灯信号的结果一样,将0熄灭。:灭零输出,它和熄灭输入共用一端,两者配合使用,可以实现多位数码显示的灭零控制。
如图4-12所示是用74LS47作为译码驱动器的硬件译码LED数码管静态显示电路。只要将74LS47的输入端与4根I/O口相连就可以了,同时将控制口接高电平。I/O口输出的BCD码会被译成字形码通过内部驱动电路去驱动LED数码管显示。
图4-12 硬件译码LED数码管静态显示电路
此电路的设计不需要输入查找段码,输出控制的I/O口比直接输出控制LED数码管的I/O口少。但在设计时有倾向于减少硬件的原则,因此它慢慢被软件输出编码方式取代。
任务拓展
根据已学知识完成下列任务并调试:
1)在Protues仿真中完成74LS47译码器显示0~9数字,并写出程序和流程图,调试。
2)利用共阴极数码管调试显示0~9数字,并写出程序和流程图。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。