(玩电子) 电子技术学习与研究
当前位置单片机教程网 >> 基础教程 >> 浏览文章

23课:LED数码管静态显示接口与编程

作者:佚名   来源:本站原创   点击数:x  更新时间2007年08月14日   字体

   在单片机系统中常常用LED数码数码管显示器来显示各种数字或符号由于它具有显示清晰亮度高使用电压低寿命长的特点因此使用非常广泛

引言还记得我们小时候玩的“火柴棒游戏”吗几根火柴棒组合起来能拼成各种各样的图形LED数码管显示器实际上也是这么一个东西

八段LED数码管显示器


<单片机静态显示接口>

   八段LED数码管显示器由8个发光二极管组成基中7个长条形的发光管排列成“日”字形另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用它能显示各种数字及部份英文字母LED数码管显示器有两种不一样的形式一种是8个发光二极管的阳极都连在一起的称之为共阳极LED数码管显示器另一种是8个发光二极管的阴极都连在一起的称之为共阴极LED数码管显示器如下图所示`

   共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的当二极管导通时对应的笔划段发亮由发亮的笔划段组合而显示的各种字符8个笔划段hgfedcba对应于一个字节8位的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就能表示欲显示字符的字形代码例如对于共阴LED数码管显示器当公共阴极接地为零电平而阳极hgfedcba各段为0111011时数码管显示器显示"P"字符即对于共阴极LED数码管显示器“P”字符的字形码是73H如果是共阳LED数码管显示器公共阳极接高电平显示“P”字符的字形代码应为100011008CH这里必须注意的是很多产品为方便接线常不按规则的办法去对应字段与位的关系这个时候字形码就必须根据接线来自行设计了后面我们会给出一个例程

   在单片机应用系统中数码管显示器显示常用两种办法静态显示和动态扫描显示所谓静态显示就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码这样单片机只要把要显示的字形代码发送到接口电路就不用管它了直到要显示新的数据时再发送新的字形码因此使用这种办法单片机中CPU的开销小能供给单独锁存的I/O接口电泛多这里以常用的串并转换电路74LS164为例介绍一种常用静态显示电路以使大家对静态显示有一定的了解

   MCS-51单片机串行口方式押为移们寄存器方式外接6片74LS164作为6位LED数码管显示器的静态显示接口把8031的RXD作为数据输出线TXD作为移位时钟脉冲74LS164为TTL单向8位移位寄存器可实现串行输入并行输出其中AB第12脚为串行数据输入端2个管脚按逻辑与运算规律输入信号公一个输入信号时可并接T第8脚为时钟输入端可连接到串行口的TXD端每一个时有号的上升沿加到T端时移位寄存器移一位8个时钟脉冲过后8位二进制数全部移入74LS164中R第9脚为复位端当R=0时移位寄存器各位复0只有当R=1时时钟脉冲才起作用Q1…Q8第3-6和10-13管脚并行输出端直接LED数码管显示器的hg---a各段对应的管脚上关于74LS164还能作如下的介绍所谓时钟脉冲端其实就是需要高低高低的脉冲不管这个脉冲是怎么来的比如我们用根电线一端接T一端用手拿着直接高电平低电平那也是给出时钟脉冲在74LS164获得时钟脉冲的瞬间再讲清楚点是在脉冲的沿如果数据输入端第12管脚是高电平则就会有一个1进入到74LS164的内部如果数据输入端是低电平则就会有一个0进入其内部在给出了8个脉冲后最先进入74LS164的第一个数据到达了最高位然后再来一个脉冲会有什么发生呢再来一个脉冲第一个脉冲就会从最高位移出就象车站排队买票栏杆就那么长要从后面进去一本人前面必须要从前面走出去一本人才小

    搞清了这一点下面让我们来看电路6片7LS164首尾相串而时钟端则接在一起这样当输入8个脉冲时从单片机RXD端输出的数据就进入到了第一片74LS164中了而当第二个8个脉冲到来后这个数据就进入了第二片74LS164而新的数据则进入了第一片74LS164这样当第六个8个脉冲完成后首次统的数据被送到了最左面的164中其他数据来出现在第一二三四五片74LS164中有个问题在第一个脉冲到来时除了第一片74LS164中接收数据外其他各片在干吗呢它们也在接收数据因为它们的时钟端际被接在一起的可是数据还没有送到其他各片呢它们在接收什么数据呢其实所谓数据还是一种说法而已实示是电平的高低当第一个脉冲到来时第一片164固然是从单片机接收数据了而其它各片也接到前一片的Q8上而Q8是一根电线在数字电路中它只可能有两种状态低电平或高电平也就是“0”和“1”所以它的下一片74LS164也相当于是在接收数据啊只是接收的全部是0或1而已这个问题放在这儿得可能有朋友不家还ˣ而有的朋友可能还是不清楚这实际上涉及到数的本实问题如果不懂的请仔杆考并找一些数字电路的数理解164的工作原理再来看这个问题或者去看看我的另一篇文章27课:关于单片机的一些基本概念的文章务必搞懂搞懂了这一点你的级别就高过开始学习者可谓入门者了

入口把要显示的数直放在显示缓冲区60H-65H共6个单元中并且直对应各个数码管LED0-LED5

出口将预置在显示缓冲区中的6个数成对应的显示字形码然后输出到数码管显示器中显示

单片机led显示程序如下

DISP: MOV SCON,#00H ;初始化串行口方式0

MOV R1,#06H ;显示6位数

MOV R0,#65H ;60H-65H为显示缓冲区

MOV DPTR,#SEGTAB ;字形表的入口地址

LOOP:

MOV A,@R0 ;取最高位的待显示数据

MOVC A,@A+DPTR ;查表获取字形码

MOV SBUF,A ;送串行口显示

DELAY: JNB TI,DELAY ;等待发送完毕

CLR TI ;清发送标志

DEC R0 ;指针下移一位准备取下一个待显示数

DJNZ R1,LOOP ;直到6个数据全显示完

RET

SETTAB: ;字形表前面有介绍以后我们再介绍字形表的制作

DB 03H 9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH

; 0 1 2 3 4 5 6 7 8 9 消隐码

单片机显静试用主程序

ORG 0000H

AJMP START

ORG 30H

START: MOV SP,#6FH

MOV 65H,#0

MOV 64H,#1

MOV 63H,#2

MOV 62H,#3

MOV 61H,#4

MOV 60H,#5

LCALL DISP

SJMP $

   如果按图示数码管排列则以上主程序将显示的是543210想想看如果要显示012345该怎样送数

   下面我们来分析一下字形表的制作问题先就上述“标准”的图形来看吧写出数据位和字形的对应关系并列一个表如下设为共阳型也就是对应的输出位为0时笔段亮

如何字形表会做了吧就是这样列个表格根据要求0亮或1亮写出对应位的0和1统了做个练习写出A-F的字形码吧

如果为了接线方便而打乱了接线的次序那么字形表指如何接呢也很简单一样地列表啊以新实验板为例共阳型接线如下

P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

C E H D G F A B

则字形码如下所示

;0 00101000 28H

;1 01111110 7EH

;2 10100100 0A4H

;3 01100100 64H

;4 01110010 72H

;5 01100001 61H

;6 00100001 21H

;7 01111100 7CH

;8 00100000 20H

;9 01100000 60H

作为练习大家写出A-F的字形代码

   本来这里是讲解单片机数码管显示器的静态接口的到此应当可算结束了但是我还想接着上面讲到的数的本实问题再谈一点单片机中有一些术语名词本来前助我们理解事物的但有时我们会被这些术语的相关语义所迷惑以致不能进一步认清他们的本质由此一般陷入困惑的境界只有深入地了解了74LS164的工作特性才能真正理解何谓串行的数据有兴趣的朋友还能再看看我网站http://www.hr-chem.com查找相关内容

发表评论告诉好友收藏此文关闭窗口

文章评论

Ƶ