第九章 显示器及键盘接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章显示器及键盘接口
§10.1 显示器接口
一.LED原理简述
LED显示块是用发光二极管显示字段,单片机应用系统常用的是七段LED,如下图,它有其阴极和共阳极两种:
a
c
e
f
g
共阴极共阳极例如,要显示‘0’字符,对于共阴极管应输出段码:
h g f e d c b a a
0 0 1 1 1 1 1 1
3 F H f b
g
e c
对于共阳极管则应输出段码: d h.
h g f e d c b a
1 1 0 0 0 0 0 0 C 0 H
共阳极管和共阴极管的段码是互为补码的。
二.动态显示的七段LED基本用法:
1.动态显示的七段LED与单片机的硬件接口
扩展显示器接口实质是输出口的扩展,例如设计一个6位的数码管显示系统,它需要扩充两个8位输出口,一个输出8段码,一个输出位选码。如下图:
由图可知,要显示哪个字符,该字符的段码从1#377输出,要使1#377输出只要A0 = 0即可,因此1#377的地址为FEH。该段码输出到6个数码管上是相同的,要哪个管亮,必须使该管的相应段二极管导通,则由2#377输出的位码控制,对应哪个管为0,则该管可以亮。要使2#377输出只要A1 = 0,2#377的地址为FDH。
在软件设计上将6个LED管轮流点亮,每管延时约1Ms,利用人的视觉残留,则可以看成持续点亮。
2.动态显示的软件设计:
要点:①代码转换:直接驱动7段LED发光的是段码,而我们习惯的是字符0、1、2、…F等,因此软件中必须将待显示
的字符转换成段码。
②每次只能输出同样的段码,因此要使某管亮,必须用软
件保证逐位轮流点亮并适当延时,给人的眼睛产生持续
发光的效果。
程序中使用的显示缓冲区示意图:
显示缓冲区共6个单元,自左至右一一对应6个数码管,其中存放待显示字符在段码表中的查表偏移量。
程序如下:
ORG 8100H
DISUP: MOV R0 , #79H ;置显示缓冲区首地址
MOV R2 , #0DFH ;11011111 位码初值,最左面管亮DSP1: MOV A , @R0
MOV DPTR , #TABL
MOVC A , @A+DPTR ;查表求段码
MOV R1 , #0FEH ;选1#377
MOVX @R1 , A ;送段码
MOV R1 , #0FDH ;选2#377
MOV A , R2
MOVX @R1 , A ;输出位码,最左面管亮
LCALL D1ms ;延时
1NC R0 ;指向显示缓冲区的下一地址
MOV A , R2
RR A ;位码右移一位
MOV R2 , A
XRL A , #7FH ;位码右移6次后为7FH时6
管全显示完
JNZ DSP1 ;不为7FH则未显示完,返回
送下一个LED
RET
TABL: 段码转换表略
D1ms: 延时子程序略
三.LED静态显示
在静态显示方式中,数码管的共阴极或共阳极接地或十5V,每一个数码管的8段码需扩展一个8位输出口与之相连接,输出口可将令该管显示某字符的段码锁存,同一时间里,每一位的段码均可不同,即显示不同字符。如图:
静态显示方式中,有N位数码管则需扩展N个8位输出口,占用I/O资源较多。它的优点是软件不必动态扫描,送出段码后可锁存,直到需更改显示字符,软件简单,同时由于始终保持显示而亮度较好。
P160页中的串行口扩展也可用于静态显示的扩展。
§10.2 按键、键盘及其接口
在单片机应用系统中,为了控制系统的工作状态,或向系统内部输入数据,常设有按键或键盘,使用这些键的开关状态来设置控制功能或输入数据。
键盘的扩展实质是输入口的扩展。
一.键输入过程及软件结构:
当所设置的数字键或功能键按下的时候,单片机应用系统应能完成该键所设定的功能。因此,键输入的信息与软件结构密切相关。不少应用系统键扫描程序是应用程序的核心部分。键输入程序的软件框图大致如下:
CPU通过查讯或中断方式扫描有无键按下及哪一键按下,将键号送入A,根据A的内容跳转到该键所应完成的功能的程序中去,键处理完毕后再回到键扫描程序,查找有无另一键按下。
二.键输入接口与软件应解决的问题:
1.保证键开关状态的可靠输入
键是一种常开式按钮开关,按键和键盘都是利用机械触点的闭合和断开来输入电平信号的,在键的闭合和断开的瞬间的有抖动过程,会出现一系列负脉冲,一般为5~10ms ,为了保证CPU 对键的一次闭合只进行一次键处理,必须消除抖动的影响。
通常去抖动措施可分别采用硬件和软件两种方法来解决,硬件的方法是在按键的硬件电路上增加RS触发器或单稳态电路,这需要增加硬件开销。较为方便的软件去抖措施是当检测到有键按下时,执行一个延时10ms的子程序,而后再检测该键是否仍保持闭合状态,若仍闭合才确认为该键按下。
2.对所有按键进行编码,确定键值或直接确定键号。
给每一按键确定一个键值或编号,当CPU扫描键盘时,可根据接收到的键输入信息确定是哪一个键按下。
3.选择键盘监测方法:
在应用系统软件中,键扫描程序、键处理程序只是应用程序的一部分,在程序运行过程中什么时候查询键输入的情况,可有查询方式和中断方式两种:
①查询方式
在程序中以一定的时间间隔扫描键盘输入的情况,无键按下则可执行其它程序,有键按下则执行键处理程序。
②中断方式
中断方式是当有键按下时引起中断,在中断服务程序中进行键处理,无键按下时CPU不必顾及键盘的工作情况。一般在键盘使用不多的情况采用中断方式。
4.编制好键盘处理程序:
它应解决如下问题:
①扫描有无键按下。
②有键按下时,若无硬件去抖措施应以软件延时去抖动。
③有可靠的逻辑处理,保证一次只处理一个键,一次键按下
只进行一次键处理。
④输出确定的键号,一个键按下后能准确跳转到该键的处理
程序,处理结束后再返回键扫描。
三.独立式按键结构:
指直接用I/O线构成的单个按键电路。每一键互相独立地各自接通一条输入线,每根I/O线上的按键工作状态不影响其它I/O线的工作状态,此亦称非编码键盘结构。如下图: