可编程计算机键盘显示器接口电路设计Word文件下载.docx
- 文档编号:3452630
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:45
- 大小:306.85KB
可编程计算机键盘显示器接口电路设计Word文件下载.docx
《可编程计算机键盘显示器接口电路设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《可编程计算机键盘显示器接口电路设计Word文件下载.docx(45页珍藏版)》请在冰点文库上搜索。
数码管工作在静态显示方式时,共阴极(共阳极)的公共端COM连接在一起接地(电源)。
每位的段选线与一个8位并行口相连。
只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。
这里的8位并行口可以直接采用并行I/O接口片(例如80C51的P1端口、8155和8255的I/O端口等),也可以采用串行输入/并行输出的移位寄存器。
考虑到若采用并行I/O接口,占用I/O资源较多,因而静态显示方式常采用串行接口方式,外接8位移位寄存器74HCl64构成显示电路,图2是通过串行口扩展8位LED显示器静态驱动电路,在TXD(P3.1)运行时钟信号,将显示数据由RXD(P3.0)口串行输出,串行口工作在移位寄存器方式(方式0)。
图2中使用的是共阴极数码管,因而各数码管的公共极COM端接地,要显示某字段,则相应的移位寄存器74HC164的输出线必须是高电平。
显然,要显示某字符,首先要把这个字符转换成相应的字形码,然后再通过串行口发送到74HC164。
74HC164把串行口收到的数变为并行输出加到数码管上。
先建立一个字形码表,以十六进制数的次序存放它们的相应字形码,共阴极字形码表如表1所示。
2.LED动态扫描显示接口
LED动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应LED后,即在显示字段上得到显示字形码。
这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的8个笔划段a~dp同名端并联在起,而每一个显示器的公共极COM是各自独立地受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
图3是一个典型的动态扫描8位LED显示接口电路。
该电路由74HC245提供段a~dp的驱动,74LS145提供位COM1~COM8的驱动。
请注意89C52的P0.0~P0.7每个口线上有1个10kW的上拉电阻,图中未示出。
3.LED显示器接口:
一.LED原理简述
LED显示块是用发光二极管显示字段,单片机应用系统常用的是七段LED,如下图,它有其阴极和共阳极两种:
+5V
aa
b
b
cc
d
d
ee
f
gg
hh
共阴极共阳极
例如,要显示‘0’字符,对于共阴极管应输出段码:
hgfedcbaa
00111111
3FHfb
g
ec
对于共阳极管则应输出段码:
dh.
hgfedcba
11000000C0H
共阳极管和共阴极管的段码是互为补码的。
二.动态显示的七段LED基本用法:
1.动态显示的七段LED与单片机的硬件接口
扩展显示器接口实质是输出口的扩展,例如设计一个6位的数码管显示系统,它需要扩充两个8位输出口,一个输出8段码,一个输出位选码。
如下图:
输出段码+5V
8
888888
A0
FEH
WR
FDH
A1
由图可知,要显示哪个字符,该字符的段码从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等,因此软件中必须将待显示的字符转换成段码。
②每次只能输出同样的段码,因此要使某管亮,必须用软件保证逐位轮流点亮并适当延时,给人的眼睛产生持续发光的效果。
程序中使用的显示缓冲区示意图:
79H7AH7BH7CH7DH7EH
显示缓冲区共6个单元,自左至右一一对应6个数码管,其中存放待显示字符在段码表中的查表偏移量。
程序如下:
ORG8100H
DISUP:
MOVR0,#79H;
置显示缓冲区首地址
MOVR2,#0DFH;
11011111位码初值,最左面管亮
DSP1:
MOVA,@R0
MOVDPTR,#TABL
MOVCA,@A+DPTR;
查表求段码
MOVR1,#0FEH;
选1#377
MOVX@R1,A;
送段码
MOVR1,#0FDH;
选2#377
MOVA,R2
输出位码,最左面管亮
LCALLD1ms;
延时
1NCR0;
指向显示缓冲区的下一地址
RRA;
位码右移一位
MOVR2,A
XRLA,#7FH;
位码右移6次后为7FH时6管全显示完
JNZDSP1;
不为7FH则未显示完,返回送下一个LED
RET
TABL:
段码转换表略
D1ms:
延时子程序略
三.LED静态显示
在静态显示方式中,数码管的共阴极或共阳极接地或十5V,每一个数码管的8段码需扩展一个8位输出口与之相连接,输出口可将令该管显示某字符的段码锁存,同一时间里,每一位的段码均可不同,即显示不同字符。
如图:
8888
静态显示方式中,有N位数码管则需扩展N个8位输出口,占用I/O资源较多。
它的优点是软件不必动态扫描,送出段码后可锁存,直到需更改显示字符,软件简单,同时由于始终保持显示而亮度较好。
第三章键盘接口
在单片机应用系统中,为了控制系统的工作状态,或向系统内部输入数据,常设有按键或键盘,使用这些键的开关状态来设置控制功能或输入数据。
键盘的扩展实质是输入口的扩展。
一.键输入过程及软件结构:
当所设置的数字键或功能键按下的时候,单片机应用系统应能完成该键所设定的功能。
因此,键输入的信息与软件结构密切相关。
不少应用系统键扫描程序是应用程序的核心部分。
键输入程序的软件框图大致如下:
NO
有键按下?
YES
(A)=00H(A)=01H
…
CPU通过查讯或中断方式扫描有无键按下及哪一键按下,将键号送入A,根据A的内容跳转到该键所应完成的功能的程序中去,键处理完毕后再回到键扫描程序,查找有无另一键按下。
二.键输入接口与软件应解决的问题:
1.保证键开关状态的可靠输入
键是一种常开式按钮开关,按键和键盘都是利用机械触点的闭合和断开来输入电平信号的,在键的闭合和断开的瞬间的有抖动过程,会出现一系列负脉冲,一般为5~10ms,为了保证CPU对键的一次闭合只进行一次键处理,必须消除抖动的影响。
通常去抖动措施可分别采用硬件和软件两种方法来解决,硬件的方法是在按键的硬件电路上增加RS触发器或单稳态电路,这需要增加硬件开销。
较为方便的软件去抖措施是当检测到有键按下时,执行一个延时10ms的子程序,而后再检测该键是否仍保持闭合状态,若仍闭合才确认为该键按下。
2.对所有按键进行编码,确定键值或直接确定键号。
给每一按键确定一个键值或编号,当CPU扫描键盘时,可根据接收到的键输入信息确定是哪一个键按下。
3.选择键盘监测方法:
在应用系统软件中,键扫描程序、键处理程序只是应用程序的一部分,在程序运行过程中什么时候查询键输入的情况,可有查询方式和中断方式两种:
1查询方式
在程序中以一定的时间间隔扫描键盘输入的情况,无键按下则可执行其它程序,有键按下则执行键处理程序。
2中断方式
中断方式是当有键按下时引起中断,在中断服务程序中进行键处理,无键按下时CPU不必顾及键盘的工作情况。
一般在键盘使用不多的情况采用中断方式。
4.编制好键盘处理程序:
它应解决如下问题:
1扫描有无键按下。
2有键按下时,若无硬件去抖措施应以软件延时去抖动。
3有可靠的逻辑处理,保证一次只处理一个键,一次键按下只进行一次键处理。
4输出确定的键号,一个键按下后能准确跳转到该键的处理程序,处理结束后再返回键扫描。
三.独立式按键结构:
指直接用I/O线构成的单个按键电路。
每一键互相独立地各自接通一条输入线,每根I/O线上的按键工作状态不影响其它I/O线的工作状态,此亦称非编码键盘结构。
K3
K2
K1
K0
(a)查询式电路
查询I/O输入线0有效
即为0者该线上键闭合地
+5V
多输入与门
K1
K0
(b)中断式电路
任一键按下则INT0触发中断地
在中断服务程序中查询哪一键按下
独立式按键结构的优点是配置灵活,软件简单,缺点是使用I/O口线多,适于按键数量不多时使用。
独立式按键的软件结构:
STRAT:
MOVA,#0FFH
MOVP1,A;
置P1口输入方式
MOVA,P1;
键状态输入
JNBACC.0,P0;
0号键按下转
JNBACC.1,P1
JNBACC.2,P2
JNBACC.3,P3
LJMPSTART
键处理程序略
注:
该程序中未包括软件去抖措施,实际应用中应考虑去抖动处理。
四.行列式键盘结构:
1.键盘工作原理:
如图
32100行+5V
P1.7
P1.676541行
BA982行
P1.5
FEDC3行
P1.4
3列
P1.32列
P1.2
1列
P1.10列
P1.0
用I/O口线组成行列式结构,按键设置在行列的交叉点上,2×
2的键盘结构可构成4个键的键盘,4×
4的键盘结构可构成16个键的键盘。
键扫描的过程:
1判断有无键按下
列线输出全0码(D0~D3),将行线状态读入累加器A(D4~D7),若读入状态不全为1则有键按下,否则无键按下。
2当有键按下时,判断哪一键按下:
由列线逐列置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
键扫描程序中只要将列码输出,再读入行码,然后将行列码拼接,与键值比较,即可确定为哪一键按下。
键扫描的方式可采取编程扫描、定时扫描或中断方式
定时器中断原理:
中断的原理有关中断的概念
什么是中断,我们从一个生活中的例子引入。
你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。
这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。
仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。
第一、什么可经引起中断,生活中很多事件可以引起中断:
有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个:
两个外部中断,两个计数/定时器中断,一个串行口中断。
第二、中断的嵌套与优先级处理:
设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?
如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。
如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。
总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。
优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。
考虑一下我们会怎么办吧。
第三、中断的响应过程:
当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):
电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。
计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。
具体地说,中断响应可以分为以下几个步骤:
1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。
2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。
以上工作是由计算机自动完成的,与编程者无关。
在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。
3、执行中断处理程序。
4、中断返回:
执行完中断指令后,就从中断处返回到主程序,继续执行。
究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?
我们稍后再谈.
MCS-51中断系统的结构:
由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。
中断请求源:
(1)外部中断请求源:
即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。
在内部的TCON中有四位是与外中断有关的。
IT0:
INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。
这两种方式的差异将在以后再谈。
IE0:
INT0中断请求标志位。
当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。
IT1、IE1的用途和IT0、IE0相同。
(2)内部中断请求源
TF0:
定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0
。
当CPU响应中断后,再由硬件将TF0清0。
TF1:
与TF0类似。
TI、RI:
串行口发送、接收中断,在串口中再讲解。
2、中断允许寄存器IE
在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位
中断允许寄存器IE来控制的。
见下表
EA
x
ES
ET1
EX1
ET0
EX0
其中EA是总开关,如果它等于0,则所有中断都不允许。
ES-串行口中断允许
ET1-定时器1中断允许
EX1-外中断1中断允许。
ET0-定时器0中断允许
EX0-外中断0中断允许。
如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE可以是
1
即8CH,当然,我们也可以用位操作指令
SETBEA
SETBET1
SETBEX1
来实现它。
3、五个中断源的自然优先级与中断服务入口地址
外中断0:
0003H
定时器0:
000BH
外中断1:
0013H
定时器1:
001BH
串口:
0023H
它们的自然优先级由高到低排列。
写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:
ORG0000H
LJMPSTART
ORG0030H
START:
这样写的目的,就是为了让出中断源所占用的向量地址。
当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。
优先级:
单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。
开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置。
看表2
中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,相应
的中断就是高优先级,否则就是低优先级。
PS
PT1
PX1
PT0
PX0
例:
设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。
IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了
第四章8279的内部结构原
Intel8279芯片是一种通用的可编程序的键盘、显示接口器件,单个芯片就能完成键盘输入和LED
显示控制两种功能。
其内部结构如图6-10-1所示。
8279包括键盘输入和显示输出两个部分。
键盘部分提供的扫描方式,可以和64个按键或传感器的阵列相连。
能自动消除开关抖动以及N个键
同时按下的保护。
显示部分按扫描的方式工作。
可以显示8或16位LED显示块。
一、8279电路工作原理
单片机系统中有两种
LED显示方式,即静态显示和动态显示,静态显示的优点是显示效果好,编程简单,但由于输出的每一位都需要锁存,使用的硬件较多;
动态显示方式中,各位数码管的a–h端并连在一起,每一时刻只有一位数码管被点亮,各位依次轮流被点亮,硬件电路简单,但由于需要不停地进行刷新显示,降低了CPU的效率,而且编程的工作量很大。
为了解决动态显示中存在的问题,Intel
公司研制出了专用的键盘、显示器接口电路芯片8279,该芯片能自动完成对显示的刷新,同时还可以对键盘自动扫描,识别闭合键的键号,使用非常方便。
8279用A0来区分信息特征,当A0为0时,CPU从8279读出的是状态,写入的是命令,且每个命令也有自己的特征;
当A0=1时读出和写入的都是数据。
8279内部有两个缓冲区,即一个8字节的FIFO(First
In
First
Out)键盘RAM和一个16字节的显示RAM,显示数据时只要将待显示数据的段码写入显示RAM即可;
当有键闭合时,8279会自动执行去抖、得到键值、等待按键释放等操作,最后,将键值存入FIFO
RAM中,程序只需从FIFO中读取键值即可,编程十分简单,具体实验线路图17所示。
8279键盘、显示器接口器件是实现人机对话的主要部件,它已为广大用户欢迎和广泛应用。
然而在有些应用场
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 计算机 键盘 显示器 接口 电路设计