《接口技术》:第三章 《 键盘显示器接口》 课件_第1页
《接口技术》:第三章 《 键盘显示器接口》 课件_第2页
《接口技术》:第三章 《 键盘显示器接口》 课件_第3页
《接口技术》:第三章 《 键盘显示器接口》 课件_第4页
《接口技术》:第三章 《 键盘显示器接口》 课件_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[P2口作基本I/O]

并行输入口

串行总线扩展:串口方式0:外接移位寄存器

并行输出口

8255A:三个8位并口:PA、PB、PC(三种工作方式)

并口

8155:2个8位并口:PA、PB、1个6位PC[两种工作方式]

74系列三态门锁存器(仅适用于基本I/O方式外设)

并行接口扩展(基本I/O)(基本I/O)并行总线扩展(与外RAM/统一编址(MOVX指令))[P0(AD0~AD7)][P2(A8~A17)][P3~6(P3~7()]大系统:@DPTR、、@Ri紧凑系统:@Ri总结:并行口的扩展方法就介绍完了,下面的问题如何利用并行口连接外设。

CPU

显示器

64kB

外PAM外I/O接口外ROM:64kB并行口A/D、D/A外设输入设备:键盘输出设备打印机

第三章键盘/显示器接口

在单片机控制系统中显示器是必不可少的外设。常用的显示器有LED发光二极管,LED数码管和LCD液晶显示器。

目录

§3.1

LED数码管显示器接口§3.2键盘及其接口技术§3.2.1BCD拨码盘的接口§3.2.2按键键盘原理§3.2.3

独立式键盘接口§3.2.4

矩阵键盘接口§3.4LCD液晶显示器接口§3.3编码键盘接口8279§3.1

LED数码管显示器接口

在单片机控制系统中显示器是必不可少的外设。常用的显示器有发光二极管,数码管和液晶显示器。本节介绍数码管接口。§3.1

.1LED数码管简介

一、组成:LED数码管由7段或8段发光二极管组成,在平面上排成8字型。abcdefgDp显示原理:使某些段点亮而另一些段不亮就可以显示0---9,A---F等字型。使某段点亮必须具备2个条件:①共阴极管的公共端接地和共阳极管的公共端接电源。②共阴极管的控制端接电源和共阳极管的控制端接地。二、分类:有共阴极和共阳极两种。COMabcdefgDpCOMabcdefgDp共阳极共阴极

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0 1 2 345

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

6 7 8 9AB

0x39,0x5e,0x79,0x71,0x00

CDEF 无显示共阴极数码管字形码表§3.1

.2显示方式及接口电路

显示方式分为静态显示和动态显示。一、静态显示方式

所谓静态显示方式,就是显示器在显示一个字符时,相应的发光二极管恒定的导通和截止。这种显示器显示字符的数据称为段码或字形码。

接口特点:静态显示方式的每一个七段显示器,都需要由一个8位并口单独控制。例题1:设从左到右8个数码管的显示缓冲单元分别为78H........7FH设显示缓冲单元的入口参数为一位十六进制数或特殊字符“-”、“P”、”“、暗的查表序号(10H、11H、12H、13H。

∏例题2,89C52连接一片8255A。其PA、PB、PC口静态连接三个共阴极数码管。接口电路如右图所示:系统为紧凑系统,8255的PA、PB、PC及命令口地址分别为:7CH、7DH、7EH、7FH。89C513738255AD0-D7A1A0ALEP0PAPBPCA7A1A0COM1COM2COM3设1、2、3三位数码管的显示缓冲单元分别为内RAM区50H、51H、52H单元。编写显示驱动子程序。PAEQU7CHPBEQU7DHPCEQU7EHDIR2:MOVR0,#7FHMOVA,#80HMOV@R0,AMOVR0,#50HLOOP:MOVA,@R0;取数据

MOVDPTR,#SEGTABMOVCA,@A+DPTRMOVR1,#PAMOVX@R1,AINCR0INCR1DJNZR0,#53H,LOOPRET二、动态显示方式

所谓动态显示方式,就是一位一位的轮流点亮(扫描)各位数码管显示器。对于每位数码管来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。

接口特点:控制所有数码管的显示字形数据共用一个8位的并口(称为段码数据口);每个数码管单独使用一根线连接其公共端,若显示器的位数不超出8位,则控制显示器公共端只需一个8位的并口(称为扫描口)。COM089C513738255AD0-D7A1A0ALEP0PBA7A1A07407

PA75452.

OPA5PA0COM5

上图扩展一片8255,PB口经同相驱动做段码数据口,PA0-PA5经反相驱动做扫描口。动态连接6个共阴极数码管。设内RAM区DIRBUF0开始的六个连续单元做显示缓冲单元存放被显示字符的查表序号。8255PA、PB、PC、命令口地址分别7CH、7DH、7EH、7FH。PAEQU7CHPBEQU7DHDIRBUF0EQU79HDIR:MOVR7,#6MOVR0,#DIRBUF0MOVR3,#1;R3存扫描模式LOOP:MOVR1,#PAMOVA,R3MOVX@R1,A;送扫描模式MOVA,@R0ADDA,#?MOVCA,@A+PC;查字形码INCR1MOVX@R1,A;送段码数据ACALLDL1INCR0MOVA,R3RLAMOVR3,ADJNZR7,LOOPRET8255例题5.7详见教材P182

LCD数码管显示器接口(后续再讲)§3.2键盘及其接口技术

在单片机应用系统中,通常都有人机对话功能,实现人对应用系统的状态干预和数据输入,以及应用系统向人报告运行状态和运行结果。

人对应用系统的状态干预和数据输入设备最常用的是BCD拨码盘、独立按键和矩阵键盘。本节分别介绍这三种键盘的接口方法。3.2.1BCD拨码盘的接口二、BCD码拨盘的接口方法

接口方法分为静态方法和动态方法两种。静态方法:每个BCD拨盘单独占用一个4位并口,所有位的输入线直接有效;而动态方法:所有BCD拨盘共用一个4位并口做BCD码输入口,扫描输入线轮流有效。静态方法占用口线较多,位数较少时常用,接收BCD码数据程序简单。动态方法节省I/O口线,但接收程序相对麻烦。拨码盘输出BCD码根据输入线连接电平的不同分为原码输出和反码输出。1、静态方法例题1两位BCD码输入接口(反码输入)(见教材P99)JIS:MOVP1,#0FFHMOVA,P1CPLARET;(A)=2位BCD2、动态方法3.2.2按键键盘原理一、键盘输入的特点1、按键的分类

(1)按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。

(2)按接口方法分类,键盘分编码键盘和非编码键盘。这两类键盘的主要区别是识别键号及给出相应键码的方法编码键盘:键盘上闭合键的识别由专用的硬件译码器实现,并产生键编号或键值的称为编码键盘,如BCD码键盘、ASCII码键盘等;非编码键盘:靠软件识别的称为非编码键盘。

对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。2、键输入原理

微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。

行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如下图所示。3、按键结构与特点

为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。右图是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。&I/O接口&+5v+5v消除抖动电路开关单片机(1)硬件去抖硬件去抖电路

如果按键较多,常用软件方法去抖动,即检测出键闭合后执行一个延时程序,产生5~10ms的延时;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5~10ms的延时,待后沿抖动消失后,才能转入该键的处理程序。延时等待10ms

仍有按键信号?Y

有按键信号?NYN键盘处理

按键释放?NY

软件去抖(2)软件去抖

4、

非编码键盘接口的工作原理:独立式按键接口和行列式键盘接口§3.2.3独立式键盘接口

独立式键盘各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。此种接口适于键数较少或操作速度较高的场合。

独立式键盘结构下图(a)为中断方式的独立式键盘工作电路下图(b)为查询方式的独立式键盘工作电路。K1K2K3K4P1.1P1.0P1.2P1.389C51+5V键处理程序如下:

MOVP1,#0FFHUP1:MOVA,P1;读I/O口状态

ANLA,#0FH;屏蔽无用位

CJNEA,#0FH,NEXT1;有闭合键?相等,无键按下,

SJMPUP1NEXT1:LCALLD10ms;延时10ms去抖动

MOVA,P1;再读I/O口状态

ANLA,#0FHCJNEA,#0FH,NEXT2;有闭合键?

SJMPUP1NEXT2:JBP1.0,NEXT3;K1按下?

LCALLK1;K1键处理程序

NEXT3:JBP1.1,NEXT4;K2按下?

LCALLK2;K2键处理程序

NEXT4:JBP1.2,NEXT5;K3按下?

LCALLK3;K3键处理程序

NEXT5:JBP1.3,UP1;K4按下?

LCALLK4;K4键处理程序

LJMPUP1例题:非编码键盘与单片机的接口:线性非编码键盘的键开关排成一行或一列的形式,它与单片机的接口电路如图所示:线性非编码键盘的工作原理:当键未被按下时,与此键相连的I/O线获得高电平;当键被按下时,与此键相连的I/O线获得低电平,单片机只要读取I/O口状态,就可以获取按键信息,识别有无键按下和哪个键被按下。

§3.2.4

矩阵键盘接口按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。行列式(矩阵式)键盘由行线和列线组成,按键位于行、列的交叉点上。

为了编程的需要,更准确的叫法:扫描线和回读线。为了读到确定的值,回读线被定义在有上拉电阻的线上。 一、矩阵键盘的工作原理

当无键按下时,行线(回读线)通过上拉电阻接+5V,被嵌位再高电平状态。当有键按下时,行线状态决定于列线。列线为低电平则行线也为低电平,列线为高电平则行线也为高电平。这是识别矩阵键盘按键是否按下(闭合)的关键。二、矩阵键盘的按键识别方法(一)扫描法(接线图如上页)

1、第一步,首先检查有无键按下。方法:将所有列线程控位低电平,读所有行线(回读线)状态,不全为高电平“1”,则有键闭合;否则无键闭合。

2、第二步,查闭合键的具体位置。方法:依次给列线送低电平,读所有行线状态,若全为“1”,则闭合键不在此列。若不全为“1',则闭合键在此列且与值为”0“的行交叉位置上。(二)线反转法:(行列结构对称)第一步:将行线程控为输入,列线程控为输出。使输出线为全“0”,读行线状态,行线电平由高变低的行为闭合键所在行。第二步:反之,将列线程控为输入,行线程控为输出。使输出线为全“0”,读列线状态,列线电平由高变低的列为闭合键所在列。三、键盘编码方法:行首键号+列号四、扫描法识别键盘例题(P185)8155的I/O寄存器地址分别为:100H-105H1、接口电路:2、程序设计要解决的问题:(1)判别有无键闭合(2)去除机械抖动:软件延时方法。(3)求键号=行首键号+列号(4)保证CPU对键的一次闭合只做一次处理:方法是等待建释放再处理。判断有无键闭合子程序:KEYSTAT

五、反转法扫描键盘例题(P101)行号列号键值=X3X2X1X0Y3Y2Y1Y01110111011101101111010111110011111101110110111101101110111010111六、键盘的工作方式

单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。

通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1、编程扫描方式:

只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。

工作过程:

事先写好键盘扫描子程序,在主程序中的适当位置安排调用子程序。如上所述,一旦有键按下,子程序会把键值算好,放如A中,主程序中应有相应的程序去对键值作出反应。2、定时扫描工作方式利用单片机内的定时器,产生10ms的定时中断,在中断服务程序中对键盘进行扫描。3、中断工作方式只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。

键盘所做的工作分为三个层次,如右图。第1层:单片机如何来监视键盘的输入。三种工作方式:①编程扫描②定时扫描③中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:①扫描法;②线反转法。第3层:执行键处理程序。

一、功能及引脚1602字符型LCD是一种专门用于显示字母、数字、符号等点LCD,目前常用16*1,16*2,20*2和40*2行等的模块。1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780。1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表所示:§3.3LCD液晶显示器接口编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图是1602的内部显示地址。二、1602LCD的DDRAM地址映射及标准字库表1602LCD内部有三个缓冲区:DDRAM、CGROM、CGRAM。DDRAM为显示位置(地址)缓冲区;CGROM为ASCII字库缓冲区,CGRAM为自定义字库缓冲区。1、DDRAM为显示位置(地址)缓冲区1602LCD内部显示地址图

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。2、字符发生存储器(CGROM)1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码(ASCII)码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。3、自定义字符存储器CGRAM

要想显示自定义字符,首先就得取得想要的图形或者字符的字模数组,可以通过手动提取的方法,取得相应的字模。如下图所示,对应一个字符显示区域。每8个字节,组成一个点阵数组。

要想让某一格子显示就让那一位为1,每行自定义5位,全白为0x00;全黑为0x1f。一共8行,每行一字节数据。将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。

1602内部CGRAM用于自定义的字符点阵的存储,总共64字节。由上一步点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM存储器,能够存储8组自定义字符的点阵数组。按照CGRAM地址划分为0~7为第一组,8~15为第二组,依次类推56~63为第8组数据。

CHARACTERCODE是数据的显示地址,0-7的范围,能存储8位自定义的字符。(能存八个自定义,每个字符存放的)CGRAMADDRESS是存储数据的地址,从0-63共64个字节.存储64个数据。我们写入的数据是0x40~0x7F,共128位。(把字符数组内的8个数送进这8个地址,每存完一个字符的8位,下次地址直接转到0x48)CGRAMDATA

字模每一行5位数据存内部常用字符显示时,显示编码是从0x20开始的。0x00~0x0F是专门留给自定义字符显示的。0x00~0x07和0x08~0x0F内容是一样的。例如:调用0x01位置和0x09位置,显示的内容是一样的。LCD1602自定义显示字符的方式共四步,如下面所示:1.设置向CGRAM中存入这个数据.初始地址是0x40。然后存一位向后加8,总共能存8位自定义的字符。2.然后可以把自定义的数据送入到LCD的CGRAM中。3.向LCD写指令,送入需要显示数据的地址。4.向LCD写指令,把显示的数据指向LCD的CGRAM存储的位置,显示出自定义字符。三、1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如下表所示:

序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器CGRAM地址0001字符发生存贮器地址8置数据存贮器DDRAM地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:低电平时为4位总线,高电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器CGRAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无

四、1602与CPU的接口电路(单片机最小系统)→P2.0→RSP2.1→R/P2.2→EP0→D0-D7STORE_DATA:MOVA,#40H;LCALLWCOM;写命令MOVR2,#08HMOVDPTR,#D_DATAMOVR3,#00HS_DATA:MOVA,R3MOVCA,@A+DPTRLCALLWDATA;写入数据

INCR3DJNZR2,S_DATARETD_DATA:DB0CH,12H,12H,0CH,DB00H,00H,00H,00H1、自定义字符“O”子程序:STORE_DATA:

40H为写CGRAM命令WCOM为写命令子程序WDATE为写数据子程序WCOM:MOVP0,A;写入命令

CLRLCD_RS;RS=L,RW=L,D0-D7=指令码,E=高脉冲

CLR

LCD_RWSETB

LCD_ENLCALL

DELAY1CLR

LCD_ENRETWDATA:MOVP0,A;写入数据

SETBLCD_RSCLRLCD_RWSETBLCD_ENLCALLDECLRLCD_ENLCALLDE

RETDELAY1:MOVR6,#25;延时5毫秒

DL2:MOVR7,#100DJNZR7,$DJNZR6,DL2RET2、写命令和写数据子程序INIT_LCD:MOVA,#38H;2行显示,字形5*7点阵

LCALLWCOMLCALLDELAY1MOVA,#0CH;开显示,显示光标,光标不闪烁

LCALLWCOMLCALLDELAY1MOVA,#01H;清除LCD显示屏

LCALLWCOMLCALLDELAY1RET3、LCD初始化子程序LCD_PRINT:CJNEA,#1,LINE2;判断是否为第一行

LINE1:MOVA,#80H;设置LCD的第一行地址

LCALLWCOM;写入命令

LCALLCLR_LINE;清除该行字符数据

MOVA,#80H;设置LCD的第一行地址

LCALLWCOM;写入命令

JMPFILLLINE2:MOVA,#0C0H;设置LCD的第二行地址

LCALLWCOM;写入命令

LCALLCLR_LINE;清除该行字符数据

MOVA,#0C0H;设置LCD的第二行地址

LCALLWCOMFILL:CLRA;填入字符

MOVCA,@A+DPTR;由消息区取出字符

CJNEA,#0,LC1;判断是否为结束码

RETCLR_LINE:MOVR0,#24CL1:MOVA,#''LCALLWDATADJNZR0,CL1RETDE:MOVR7,#250DJNZR7,$RETLC1:LCALLWDATA;写入数据

INCDPTR;指针加1JMPFILL;继续填入字符

RET4、LCD_PRINT显示一行子程序:(A)=行号MENU_OK:MOVDPTR,#M_OK1 ;指针指到显示消息

MOVA,#1 ;显示在第一行

LCALLLCD_PRINTMOVDPTR,#M_OK2 ;指针指到显示消息

MOVA,#2 ;显示在第一行

LCALLLCD_PRINTRETM_OK1:DB"HEBEIUNIVERSITY",0M_OK2:DB"Dept.ofPhysics",0 5、显示两行常数字符子程序LCD_XEQU2FH;LCD字符显示位置LCD_RSEQUP2.0;LCD寄存器选择信号LCD_RWEQUP2.1;LCD读写信号LCD_ENEQUP2.2;LCD允许信号

ORG0000HLJMPMAINORG0030HMAIN:CLRLCD_EN LCALLINIT_LCD;初始化LCDLCALLSTORE_DATA;将自定义字符存入LCD的CGRAMLCALLMENU_OK SJMP$6、1602显示主程序Wendu:MOVA,86H;温度显示子程序,(60H)=温度值

LCALLWCOM MOVA,60H ANLA,#0F0H SWAPA ADDA,#30H LCALLWDATA MOVA,60H ANLA,#0FH ADDA,#30H LCALLWDATA MOVA,#0 LCALLWDATA MOVA,#43H LCALLWDATA RET五、修改程序显示变量值Wendu为温度显示子程序:入口参数为(60H)=温度值Wendu为温度显示字符常数子程序程序:MENU_OK:MOVDPTR,#M_OK1 MOVA,#1LCALLLCD_PRINT

;MOVDPTR,#M_OK2

;MOVA,#2

mov60h,#28H

LCALLWenduRETM_OK1:DB"Wendu:",0M_OK2:DB"Dept.ofPhysics",0 温度显示主程序:LCD_XEQU2FHLCD_RSEQUP2.0LCD_RWEQUP2.1LCD_ENEQUP2.2ORG0000HLJMPMAINORG0030HMAIN:CLRLCD_EN LCALLINIT_LCDLCALLSTORE_DATALCALLMENU_OK SJMP$§3.48279编码键盘/显示器接口一、8279简介

Intel8279是一种通用可编程键盘、显示器接口芯片,它能完成键盘输入和显示控制两种功能。该器件的键盘可分为64个键的键盘矩阵提供扫描式接口,可以自动消抖,自动识别按键并给出键码,能对双键或N键同时按下实行保护。

该器件的显示部分分为分为发光二极管,荧光管及其他显示器提供了扫描式显示接口,可显示多达16位的字符或数字。(1)8279的主要技术特性

能同时执行键盘与显示器操作

扫描式键盘工作方式

选通输入方式

有8个字符的键盘先入先出存储器

带触电去抖动的二键封锁或N键巡回功能

一个16字的字符显示器

可左右输入的16字节显示用RAM

工作方式可由CPU编程设定

扫描时序通过编程设定

键盘输入可产生中断输出扫描显示地址寄存器16×8显示RAM控制与定时寄存器8×8FIFO/传感器RAM键盘反弹与控制FIFO/传感器RAM的状态寄存器I/O控制数据缓冲器显示寄存器定时与控制扫描计数器回复时钟复位DBO6~7OUT0~3OUT0~3SL0~7RL0~7SHIFTCNTL/STBRD488IRQRDWRCSAO88279的逻辑框图二、8279的组成和工作原理

①I/O控制和数据缓冲器。I/O控制部分用

,A0,和四条线控制数据流进出。内部的各个寄存器和缓冲器,进出8279的所有数据流都由开启,CPU给出或所需的信息的特征有A0表示,A0为逻辑1表示该信息是命令或状态;为逻辑0表示该信息是数据,和决定通过数据缓冲器的数据流的方向。数据缓冲器是双向的,连接外部总线与内部总线,当,有效时,缓冲器输入,当,有效时,缓冲器输出。

②控制和时序寄存器及时序控制。控制和时序寄存器存放键盘与显示器的工作方式由CPU编程的其他工作状态信息,这些寄存器一旦接收并锁存送来的命令,就通过译码产生相应的控制信号,完成相应的控制功能。时序控制部分包括基本的定时计数器链,其第一个计数器是一个可编程的N进制计数器,N值可在2~31之间由软件编程,以便由外部时钟得到内部所需要的100kHz时钟,这个内部时钟对应的键盘扫描时间是5.1ms,去抖动时间时10.3ms,其他计数器对内部基频进行分频,提供适当的键扫描、行扫描、键盘矩阵扫描以及显示器扫描时间。

③扫描计数器。扫描计数器有编码和译码两种工作方式,按编码方式工作时,计数器作二进制技术,计数状态从SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描线;按译码方式工作时,计数器低二位译码后从SL0~SL3输出,作为扫描线。

④回送缓冲器、键盘消抖及控制。来自RL0~RL7的8根回送线的信息由回送缓冲器实现缓冲和锁存。

在键盘工作方式下,对这些线进行扫描,寻找一行中闭合的键。若有键闭合,消抖电路被置位,延时10ms之后,再重新检查该键是否仍然闭合,若该键仍然闭合,那么该键再键盘矩阵中的地址、3HIFT和CNTL的状态一起形成键盘数据,送入先进先出寄存器(FIFO),其格式为:

D7D6D5D4D3D2D1D0CNTLSHIFT扫描回送

其中CNTL和SHIFT由两个附加开关决定,D5~D3来自扫描计数器,是键的行编码,D2~D0来自回送线,是键的列编码。

在传感器矩阵方式下,每次扫描按键时直接把回送线的内容送入传感器RAM(FIFO)的相应一行中去。

在选通输入方式下,在控制/选通脉冲的上升沿讲回送线的状态送入先进先出寄存器。⑤FIFO/传感器RAM及其状态寄存器。FIFO/传感器RAM是一双重功能的8*8RAM,在键盘或选通工作方式时,它是先进先出寄存器,每一组新的信息写入RAM中下一个单元,然后按写入的顺序读出。FIFO状态寄存器存放FIFO的工作状态,如FIFO是空是满,存有多少字符,是否出错等。当FIFO不空是,状态逻辑产生IRQ=1信号,相CPU发出中断请求;在传感器矩阵方式下,它又是传感器RAM,若检测到一个传感器的状态发生了变化,IRQ就变成高电平。⑥显示RAM和显示地址寄存器。显示RAM用来存放显示数据,容量为16*8位,显示寄存器分为A、B两组,即OUTA0~3和OUTB0~3,他们可以单独送数,也可以组成一个8位的字节,显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同事轮流驱动被选中的显示位,以达到多路复用的目的,是显示器呈现出稳定的显示状态。

显示地址寄存器用来存放由CPU进行读/写的显示RAM的地址,它可由命令设定,也可以设置成每次读出或写入之后自动递增。

8279采用40脚双列直插式封装,其引脚排列如下图所示,各引脚功能如下:三、8279的引脚分布及功能123456789101112131415161718192040393837363534333231302928272625242322218279RL2RL3CLKIRQRL4RL5RL6RL7RDWRD1D2D3D4D5D6D7GNDVCCRL1RL0SHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2OUTB3OUTB0OUTB1OUTB2OUTB3BDCSA0(a)D0~D7GNDVCCCLKRESETA0CSWRRDIRQRL0~RL7SHIFTCNTL/STBSL0~SL3扫描OUTA0~OUTA3OUTB0~OUTB3BD88444CPU接口键盘显示(b)D0~D7数据总线,双向,三态;CLK时钟输入,用于8279内部定时时,产生其工作所需时序;RESET复位,高电平有效,复位后8279的状态为:字符显示左入口,键盘双键锁定,程序时钟编程为31;

片选,低电平有效;A0缓冲器地址,A0为高电平时,读/写均为命令或状态信息,A0为低电平时,则对应数据信息;

,读、写控制,低电平有效;IRQ中断请求,高电平有效;SL0~SL3扫描输出线,用来扫描键盘和显示器,可编程设定为编码或译码输出;RL0~RL7回送线,列输入信号线;SHIFT移位信号,补充键盘功能,用作上下档功能键;CNTL/STB控制/选通信号,高电平有效;OUTA0~3A组显示信号输出;OUTB0~3B组显示信号输出;

消隐输出,低电平有效;①键盘/显示方式设置命令

命令格式为:

000DDKKK

其中DD是显示方式,KKK是键盘方式。DD:008个字符显示,左入口0116个字符显示,左入口108个字符显示,右入口1116个字符显示,右入口

所谓左入口,是指显示从左至右顺序排列,右入口则从右入向左依次移动显示KKK:000:编码扫描,双键锁定001:译码扫描,双键锁定010:编码扫描,N键轮回011:译码扫描,N键轮回

四、8279的命令

8279共有8条命令,利用控制命令字的高三位D7,D6和D5对其进行寻址。

双键锁定为两键同时按下提供保护,在消抖期间,若有两键被同事按下,则只有其中的一键弹起,而另一键保持在按下位置时,才被认可,即后释放键被识别,N键轮回为N个键同时按下时,键盘扫描能根据发现他们的次序,依次将它们的次序,依次讲它们的状态写入FIFORAM中

②程序时钟命令。命令格式为001PPPPPPPPPP:用来对外部输入时钟CLK进行分频的分频数N,通过N的设定获得内部100kHz的时钟信号。③读FIFO/传感器RAM命令

命令格式为010AI*AAAAI:自动增量特征位,AI=1,每次读出后,RAM地址自动加1;AAA:传感器RAM地址;*:取值任意,不用。④读显示用RAM命令。命令格式为

011AIAAAAAAAA:显示RAM地址;AI:自动增量特征位。

⑤写显示RAM命令。命令格式为

100AIAAAAAAAA:显示RAM地址,可寻址16个显示存储单元;

AI:自动增量特征位,若AI=1,每次写完后,地址自动加1。⑥显示禁止写入/消隐命令。命令格式为

101*IWIWBLBLABABIW:禁止写入,高电平有效;BL:消隐(熄灭),高电平有效。

⑦消除命令命令格式为

110CDCDCDCFCACD:消除显示位;CF:消除FIFO状态(包括中断)位;

CA:总清位。CD用于将显示RAM的各位置成一个由程序设定的代码,允许设定的代码是全1(111)、全0(100)和16进制的20(110)。CF用于将FIFORAM置空,中断复位,读出地址置0。CA兼有CD和CF的功效。

⑧结束中断/错误方式设置命令命令格式为111EXXXX

在传感器矩阵方式,该命令使IRQ线变成低电平,允许再次对RAM写入(在检测到传感器数据发生改变之后,IRQ线变成高电平,禁止写入传感器RAM)。

在N键轮回工作方式下,若E被置1,则8279将以特定的错误方式工作。这种方式的特点是:在消抖周期内,若有多个键同事按下,则FIFO状态字中的错误特征位S/E置1,产生中断情求信号,阻止写入FIFORAM。

⑨8279的状态字。

8279的FIFO状态字主要用于键盘和选通工作方式,以指示FIFORAM中的字符数和有无错误发生,状态字格式为

DuS/EOUFNNN

Du:显示无效特征位,Du=1表示显示无效。

S/E:传感器信号结束/错误特征位,当在传感器方式时,若S/E=1表示最后一个传感器信号已进入传感器RAM中,而在特殊错误方式时,S/E=1则表示出现了多键同时按下错误。

O,U:超出、不足错误特征位,若FIFO已满还要企图写入,则出现超出错误,O位置1;若FIFO已空,还要读出,则出现不足错误,U位置1。

F:表示FIFORAM是否已满,F为1,表示FIFORAM已满。

NNN:FIFORAM中的字符数,最多8个

8279时通用芯片,可直接与MCS-51单片机相连,如图6-33所示。8031的P0口节8279的D7~D0端,用P2.4作为8279的片选信号,ALE作为8279的时钟输入,P0.0通用过锁存器74LS373节A0端,8279的IRQ接,当8031采用6MHz晶振时,8279的输入时钟频率为1MHz,8279的控制口地址为0EFFEH,数据口地址为0EFFEH。五、8279与MCS-51单片机的接口下图所示电路是用8279实现的键盘显示接口,配置了4X8键盘和8位共阳极七段显示器,利用OUTA0~3和AUTB0~3作为显示器的段数据口,SL0~SL3经译码器74LS138及位驱动器75452后,作为显示器的位数据口,SL0~SL2经3-8译码器74LS138后,作为键盘矩阵的行扫描信号,RL0~RL3输入键盘矩阵状态信息。数码管8031ALE74LS373WRAD0~7RDR2.4INT0A0A0CLKRL3RL2RL1RL08279SL0SL1SL2SL374LS13874LS1388位显示器LED88844键盘75452×47407×2D0~7CSRDWRIRQcntfshifttesefoutAoutB0~30~3+5V20μF2k01234567

8279能自动为显示器提供扫描信号,自动扫描键盘、识别按键、消抖、确定键码,因此其程序也比较简单,不会占用8031过多的工作时间,其显示程序仅仅是在需要改变显示内容时才执行,将需要显示的数据转换为显示码后写入8279,程序框图如上图所示,当有键闭合时,8279会自动识别键的相对位置,且最多可保存8个输入键的值,因此,只要8279内有键输入值且中断请求线升高,8031就可以写中断方式或查询方式读出输入键的值,不需要专门的键扫描程序,提高了相应速度。显示程序清单:DRD:MOVDPTR,#0EFFFH;置控制口地址MOVA,#90H MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论