可编程计算机键盘显示器接口电路设计.docx

上传人:b****1 文档编号:12754427 上传时间:2023-04-21 格式:DOCX 页数:45 大小:306.85KB
下载 相关 举报
可编程计算机键盘显示器接口电路设计.docx_第1页
第1页 / 共45页
可编程计算机键盘显示器接口电路设计.docx_第2页
第2页 / 共45页
可编程计算机键盘显示器接口电路设计.docx_第3页
第3页 / 共45页
可编程计算机键盘显示器接口电路设计.docx_第4页
第4页 / 共45页
可编程计算机键盘显示器接口电路设计.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

可编程计算机键盘显示器接口电路设计.docx

《可编程计算机键盘显示器接口电路设计.docx》由会员分享,可在线阅读,更多相关《可编程计算机键盘显示器接口电路设计.docx(45页珍藏版)》请在冰豆网上搜索。

可编程计算机键盘显示器接口电路设计.docx

可编程计算机键盘显示器接口电路设计

可编程计算机键盘显示器接口---电路设计

可编程计算机键盘显示器接口电路设计

第一章引言

随着信息技术和互联网的飞速发展,以及计算机、通讯、数码产品等领域·已经来临。

嵌入式设备是数字化时代的主流产品,嵌入式软件是数字化产品的核心,作为嵌入式软件的基础和关键,嵌入式操作系统在产业发展过程中扮演着越来越重要的角色,应用遍及工业自动化、网络通信、航天等领域。

可编程计算机键盘显示器接口电路设计就是采用一种8279单片机芯片。

本设计采用8279单片机为控制芯片,8279是一种专用于键盘\显示可编程器的接口电路,能对键盘自动扫描,给出闭合健的键码,能自动向数码管显示器输出显示代码和位代码。

其中键盘接口电路可与64键点阵式键盘连接,具有二键封锁或N键巡回功能,可自动消除按键抖动。

显示器接口电路可与8或16位数码管显示器连接,8279与键盘、显示器的连接,其中包括一个8键盘和8位LED显示器,代码驱动器选用8708,SL2~SL0信号译码器选用74LS138,时钟信号由单片机的ALE提供。

在振荡器频率为12MHZ时ALE输出频率为2MHZ。

8279选择2键封锁、编码扫描方式,显示器左端输入。

第二章LED显示器的结构与原理:

显示器常作为单片机系统中最简单的输出设备,用以显示单片机系统的运行结果与运行状态等。

常用的显示器主要有LED数码显示器、LCD液晶显示器和CRT显示器。

在单片机系统中,通常用LED数码显示器显示各种数字或符号。

由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

本节以LED为例,介绍其结构、工作原理及与单片机的接口技术。

LED显示器的结构与原理

LED显示器是由发光二极管显示字段的显示器件,也可称为数码管。

单片机系统中通常使用8段LED数码显示器,其外形及引脚如图1(a)所示,由图可见8段LED显示器由8个发光二极管组成。

其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括A~F在内的部分英文字母和小数点“.”等字样。

LED显示器有两种不同的形式:

一种是8个发光二极管的阳极都连在一起的,称为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称为共阴极LED显示器。

如图1(b)所示。

共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的,当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合从而显示各种字符。

8个笔划段dpgfedcba对应于1B(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就可以表示欲显示字符的字形代码。

例如,对于共阴极LED显示器,当公共阴极接地(为零电平),而阳极dpgfedcba各段为01110011时,显示器显示“P”字符,即对于共阴极LED显示器,“P”字符的字形码是0×73。

如果是共阳极LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(0x8C)。

这里必须注意的是:

很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线自行设计了。

LED显示器的显示方法有静态显示与动态显示两种,下面分别予以介绍。

窗体顶端

1窗体底端

1.LED静态显示接口

数码管工作在静态显示方式时,共阴极(共阳极)的公共端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

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

+5V

 

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等,因此软件中必须将待显示的字符转换成段码。

②每次只能输出同样的段码,因此要使某管亮,必须用软件保证逐位轮流点亮并适当延时,给人的眼睛产生持续发光的效果。

程序中使用的显示缓冲区示意图:

 

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

MOVX@R1,A;输出位码,最左面管亮

LCALLD1ms;延时

1NCR0;指向显示缓冲区的下一地址

MOVA,R2

RRA;位码右移一位

MOVR2,A

XRLA,#7FH;位码右移6次后为7FH时6管全显示完

JNZDSP1;不为7FH则未显示完,返回送下一个LED

RET

TABL:

段码转换表略

D1ms:

延时子程序略

 

三.LED静态显示

在静态显示方式中,数码管的共阴极或共阳极接地或十5V,每一个数码管的8段码需扩展一个8位输出口与之相连接,输出口可将令该管显示某字符的段码锁存,同一时间里,每一位的段码均可不同,即显示不同字符。

如图:

 

8888

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线的工作状态,此亦称非编码键盘结构。

如下图:

+5V

 

K3

K2

K1

K0

(a)查询式电路

查询I/O输入线0有效

即为0者该线上键闭合地

+5V

 

K3

多输入与门

K2

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

x

ES

ET1

EX1

ET0

EX0

 

其中EA是总开关,如果它等于0,则所有中断都不允许。

ES-串行口中断允许

ET1-定时器1中断允许

EX1-外中断1中断允许。

ET0-定时器0中断允许

EX0-外中断0中断允许。

如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE可以是

EA

x

x

ES

ET1

EX1

ET0

EX0

1

0

0

0

1

1

0

0

即8CH,当然,我们也可以用位操作指令

SETBEA

SETBET1

SETBEX1

来实现它。

3、五个中断源的自然优先级与中断服务入口地址

外中断0:

0003H

定时器0:

000BH

外中断1:

0013H

定时器1:

001BH

串口:

0023H

它们的自然优先级由高到低排列。

写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:

ORG0000H

LJMPSTART

ORG0030H

START:

  这样写的目的,就是为了让出中断源所占用的向量地址。

当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。

 

  优先级:

单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。

开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置。

看表2

中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,相应

的中断就是高优先级,否则就是低优先级。

x

x

x

PS

PT1

PX1

PT0

PX0

 

例:

设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。

IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了

x

x

x

PS

PT1

PX1

PT0

PX0

0

0

0

0

0

1

1

0

 第四章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键盘、显示器接口器件是实现人机对话的主要部件,它已为广大用户欢迎和广泛应用。

然而在有些应用场

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1