第九章 显示器及键盘接口
- 格式:doc
- 大小:102.50 KB
- 文档页数:12
MCS-51与键盘、显示器的接口设计9.1LED显示器接口原理9.2 键盘接口原理9.1 LED显示器接口原理单片机应用系统中使用的显示器主要有:⏹发光二极管显示器,简称LED(Light Emitting Diode);⏹液晶显示器,简称LCD(Liquid Crystal Display);⏹CRT显示器LED 数码管的结构:①共阳与共阴@单片机系统扩展LED 数码管时多用共阳LED:0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。
公共阳极h g f e d c b aa b c dg ef h公共阴极h g f e d c b aa b c dg ef hh g f …… a h g f …… a高电平点亮低电平点亮接高电平LED 显示器结构和字段码关系D7D6D5D4D3D2D1D0dp g f e d c b a当LED 显示器与单片机连接时,一般是将LED 各发光二极管的引脚a 、b 、…g 、dp 顺序接到单片机的一个并行I/O 口上。
共阳LEDa b cdg ef hP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5VAT89C51显示字形dp g f e d c b a共阳极段选码共阴极段选码0 1 2 3 4 5 6 7 8 9 A B C D E F “灭”1100000011111001101001001011000010011010100100101000001011111000100000001001000010001000100000111100011010100001100001101000111011111111C0HF9HA4HB0H99H92H82HF8H80H90H88H83HC6HA1H86H8EHFFH3FH06H5BH4FH06H6DH7DH07H7FH6FH77H7CH39H5EH79H71H00H 共阴极和共阳极7段LED段选码(字型码)二、LED显示器工作原理⏹在微机应用系统中使用LED显示块构成N位LED显示器。
第十章显示器及键盘接口§10.1 显示器接口一.LED原理简述LED显示块是用发光二极管显示字段,单片机应用系统常用的是七段LED,如下图,它有其阴极和共阳极两种:acefg共阴极共阳极例如,要显示‘0’字符,对于共阴极管应输出段码:h g f e d c b a a0 0 1 1 1 1 1 13 F H f bge c对于共阳极管则应输出段码: d h.h g f e d c b a1 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 8100HDISUP: MOV R0 , #79H ;置显示缓冲区首地址MOV R2 , #0DFH ;11011111 位码初值,最左面管亮DSP1: MOV A , @R0MOV DPTR , #TABLMOVC A , @A+DPTR ;查表求段码MOV R1 , #0FEH ;选1#377MOVX @R1 , A ;送段码MOV R1 , #0FDH ;选2#377MOV A , R2MOVX @R1 , A ;输出位码,最左面管亮LCALL D1ms ;延时1NC R0 ;指向显示缓冲区的下一地址MOV A , R2RR A ;位码右移一位MOV R2 , AXRL A , #7FH ;位码右移6次后为7FH时6管全显示完JNZ DSP1 ;不为7FH则未显示完,返回送下一个LEDRETTABL: 段码转换表略D1ms: 延时子程序略三.LED静态显示在静态显示方式中,数码管的共阴极或共阳极接地或十5V,每一个数码管的8段码需扩展一个8位输出口与之相连接,输出口可将令该管显示某字符的段码锁存,同一时间里,每一位的段码均可不同,即显示不同字符。
第十章显示器及键盘接口
§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线的工作状态,此亦称非编码键盘结构。
如下图:
即为0者该线上键闭合地
+5V
在中断服务程序中查询哪一键按下
独立式按键结构的优点是配置灵活,软件简单,缺点是使用I/O 口线多,适于按键数量不多时使用。
独立式按键的软件结构:
STRAT:MOV A,#0FFH
MOV P1 ,A ;置P1口输入方式
MOV A ,P1 ;键状态输入
JNB ACC.0 , P0 ;0号键按下转
JNB ACC.1 , P1
JNB ACC.2 , P2
JNB ACC.3 , P3
LJMP START
键处理程序略
注:该程序中未包括软件去抖措施,实际应用中应考虑去抖动处理。
四.行列式键盘结构:
1.键盘工作原理:如图
用I/O口线组成行列式结构,按键设置在行列的交叉点上,2×2的键盘结构可构成4个键的键盘,4×4的键盘结构可构成16个键的键盘。
键扫描的过程:
①判断有无键按下
列线输出全0码(D0~D3),将行线状态读入累加器A(D4~D7),若读入状态不全为1则有键按下,否则无键按下。
②当有键按下时,判断哪一键按下:
由列线逐列置0,检查行输入状态。
例如列线输出D3~D0为1110,即D0=0,读入行线状态D7~D4,若为0111,即D7=0,则可判断为0键按下,若此时读出行线状态为全1,则本列无键按下,即
0、4、8、C均未按下。
接着再将下一列线置0输出,检查下一列
键是否有键按下……,直到每一列均查完为止。
键盘上每一个键均有一个唯一的键值,一般用直接赋值方法定义键值,每个键的键值为当它按下时,键扫描程序的列码和行码按一定顺序由二进制数排列。
例如当0键按下时,键扫描程序输出的列码为1110,读入的行码为0111,将它们按D7~D0的顺序排列为:01111110,则0键的键值定义为7EH。
类似的方法可得到:
1键的键值为7DH
4键的键值为BEH
F键的键值为E7H
键扫描程序中只要将列码输出,再读入行码,然后将行列码拼接,与键值比较,即可确定为哪一键按下。
键扫描的方式可采取编程扫描、定时扫描或中断方式。
2.行列式键盘接口:
典型用法是用8155或8255。
见140页例。