键盘与显示器接口技术课件_第1页
键盘与显示器接口技术课件_第2页
键盘与显示器接口技术课件_第3页
键盘与显示器接口技术课件_第4页
键盘与显示器接口技术课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

键盘与显示器接口键盘可分为编码式键盘和非编码式键盘。编码键盘能够由硬件自动提供与被按键对应的ASCII码或其它编码。但是它要求采用较多的硬件,价格昂贵。非编码键盘则仅提供行和列的矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来确定。非编码键盘的硬件接口简单,但是要占用较多的CPU时间。任何键盘接口均要解决三个主要问题:1、反弹跳2、串键保护3、按键识别1、反弹跳当按键开关的触点闭合或断开到其稳定,会产生一个短暂的抖动和弹跳,如下图所示,这是机械式开关的一个共同性问题。消除由于键抖动和弹跳产生的干扰可采用硬件方法,也可采用软件延迟的方法。

采用RS触发器实现硬件反弹跳2、串键保护由于操作不慎,可能会造成同时有几个键被按下,这种情况称为串键。有三种处理串键的技术:两键同时按下、n键同时按下和n键锁定。“两键同时按下”技术是在两个键同时按下时产生保护作用。最简单的办法是当只有一个键按下时才读取键盘的输出,最后仍被按下的键是有效的正确按键。当用软件扫描键盘时常采用这种方法。另一种方法是当第一个按键未松开时,按第二个键不产生选通信号。这种方法常藉助硬件来实现。“n键同时按下”技术或者不理会所有被按下的键,直至只剩下一键按下时为止,或者将所有按键的信息都存入内部缓冲器中,然后逐个处理,这种方法成本较高。“n键锁定”技术只处理一个键,任何其它按下又松开的键不产生任何码。通常第一个被按下或最后一个松开的键产生码。这种方法最简单也最常用。3、按键识别决定是否有键被按下,如有则应识别键盘矩阵中被按键对应的编码。编码键盘通过硬件直接提供按键与被按键对应的ASCII码或其它编码。非编码键盘则需要通过编程方式提供按键编码。其优点是结构简单、成本低廉非编码键盘接口技术非编码键盘接口技术主要是如何确定被按键的行、列位置,即键码(值)。按键识别是接口技术的关键问题。常用按键识别方法有行扫描法(Row-Scanning)和线反转法(Line-Reverse)。行扫描法识别按键

行扫描法是采用步进扫描方式,CPU通过输出口把一个“步进的0”逐行加至键盘的行线上,然后通过输入口检查列线的状态。由行线列线电平状态的组合来确定是否有键按下,并确定被按键所处的行、列位置。

R1K13K14K15K16R2K9K10K11K12R3K5K6K7K8R4K1K2K3K4C1C2C3C4键位与行列线关系表上表列出了识别按键位置与各行之间的关系。其中,R1、R2、R3、R4表示行,C1、C2、C3、C4表示列。当扫描第一行时,R1=0,若读入的列值C1=0,则表明按键K13被压下,如果C3=0,则表明按键K15被压下。第一行扫描完毕后再扫描第二行,逐行扫描至最后一行为止,即可识别出所有的按键。线反转法识别按键线反转法是藉助程控并行接口实现的,比行扫描法的速度快。如图所示为一个4×4键盘与并行接口的连接。并行接口有一个方向寄存器和一个数据寄存器,方向寄存器规定了接口总线的方向,寄存器的某位置“1”,规定该位口线为输出。寄存器的某位置“0”,规定该位口线为输入。

单片机通过8155实现的键盘、显示器接口如图所示为单片机8051与矩阵键盘及LED显示器的一种接口电路,通过编程设定8155的PA口、PB口作为输出口,PC口作为输入口。PA口完成键盘的行扫描输出,同时又对LED显示器作字位扫描,PC口输入键盘列线状态。7407为同相驱动器,75452为反相驱动器。接口电路中采用8031的P2.7作为8155的片选线,P2.0作为8155的IO端口和片内RAM选择线,因此8155的命令寄存器地址为7F00H,PA~PC口地址为7F01H~7F03H。按键识别子程序KEY:MOVDPTR,#7F00H;8155命令口地址MOVA,#03H;置PA、PB口为输出,MOVX@DPTR,A;PC口为输入 MOVR4,#00H;0→键号寄存器R4 MOVR2,#01H;扫描模式01H→R2KEY1:MOVDPTR,#7F01H MOVA,R2 MOVX@DPTR,A;扫描模式→8155PA口 INCDPTR INCDPTR MOVXA,@DPTR;读8155PC口 JBACC.0,KEY2;0列无键闭合,转判1列 MOVA,#00H;0列有键闭合,0→A AJMPKEY5KEY2:JBACC.1,KEY3;1列无键闭合,转判2列 MOVA,#01H;1列有键闭合,列线号01H→A AJMPKEY5KEY3:JBACC.2,KEY4;2列无键闭合,转判3列 MOVA,#02H;2列有键闭合,02H→A AJMPKEY5KEY4:JBACC.3,NEXT;3列无键闭合,转判下一行 MOVA,#03H;3列有键闭合,03H→AKEY5:ADDA,R4;列线号+(R4)作为键值→A MOVR4,A;键值→R4 RET;返回NEXT:MOVA,R4; ADDA,#04;键号寄存器加4 MOVR4,A MOVA,R2 JBACC.3,NEXT1;判别是否已扫描到最后一行 RLA;扫描模式左移一位 MOVR2,A AJMPKEY1;重新开始扫描下一行NEXT1:MOVR4,#88H;扫描到最后一行仍无按键 RET;置无键闭合标志后返回查表法查表法的核心是一个固化在ROM中的功能子程序入口地址转移表。如下表所示。在转移表内存有各个功能子程序的入口地址,根据键值代码查阅此表获得相应功能的子程序入口地址,从而可以转移到相应的命令处理子程序。功能子程序入口地址子程序1子程序2子程序3…入口地址1入口地址2入口地址3…功能子程转移地址例:键盘接口调用按键识别子程序所获得的键值如下表所示,当键值小于10H时代表数字键,键值大于等于10H时代表功能键。

键值表按键键值0~F00H~0FHRUN10HRET11HADRS12HSTORE13HREAD14HWRITE15H处理功能键的程序:

INPUT:LCALLKEY;调按键识别子程序,获得键值在A中 MOVR0,A;键值暂存于R0 ANLA,#10H JZDATIN;小于10H为数字键,转入数字操作 MOVA,R0;大于等于10H为命令键 ANLA,#0FH;保留键值低4位 MOVR0,A;(A)×3 RLA ADDA,R0 MOVDPTR,#TABEL;取转移表首地址 JMP@A+DPTR;按不同键值散转至子程序TABEL:LJMP#RUN;转RUN命令子程序 LJMP#RET;转RET命令子程序 LJMP#ADRS;转ADRS命令子程序 LJMP#STORE;转STORE命令子程序 LJMP#READ;转READ命令子程序 LJMP#WRITE;转WRITE命令子程序DATIN:;数字键操作程序,略;使用LED显示器时,要注意区分共阴极和共阳极两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码,简称段码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的段码正好是一个字节。实际使用中,通过单片机向LED显示接口输出不同段码,即可显示相应的数字。LED数码显示器共阴极和共阳极段码

存储器地址显示数字共阴极接法的七段状态gfedcba共阴极接法段码(十六进制数)共阳极接法段码(十六进制数)SEG001111113F40SEG+1100001100679SEG+2210110115B24SEG+3310011114F30SEG+4411001106619SEG+5511011016D12SEG+6611111017D02SEG+7700001110778SEG+8811111117F00SEG+9911001116718SEG+10A11101117708SEG+11B11111007C03SEG+12C01110013946SEG+13D10111105E21SEG+14E11110017906SEG+15F1110001710E

硬件译码LED显示接口

如图所示为采用硬件译码器的七段LED接口电路,显示器是共阴极的。9368是硬件段译码器,它能自动将输入的16进制数转换成段码输出,在+5V时能输出约30mA的电流点亮显示器的段。7475是4位锁存器,4个数据输入端接到系统数据总线的D3~D0。锁存器的选通端E接到地址译码器,若该接口的地址为0088H,执行以下指令即可在显示器上显示数字“0”。MOVDPTR,#0088HMOVA,#00HMOVX@DPTR,A程序清单:DISPB:MOVDPTR,#7F00H;8155命令口地址 MOVA,#03H MOVX@DPTR,A;置PA口、PB口为输出 MOVR0,#7AH;置显示缓冲器指针初值 MOVR3,#01H;置扫描模式初值 MOVA,R3DISPB1:MOVDPTR,#7F01H;8155PA口地址 MOVX@DPTR,A;扫描模式→8155PA口 INCDPTRMOVA,@R0;取显示数据ADDA,#0DH;加偏移量MOVCA,@A+PC;查表取段码MOVX@DPTR,A;段码→8155PB口

ACALLDELAY;延时 INCR0 MOVA,R3 JBACC.5,DISPB2;判6位LED显示完否 RLA;扫描模式左移1位 MOVR3,A AJMPDISPB1DISPB2:RETSEGPT2:DB3FH,06H,5BH,4FH,66H,6DH…;段码表DELAY:MOVR5,#02H;延时子程序DELAY1:MOVR4,#0FFHDELAY2:DJNZR4,DELAY2 DJNZR5,DELAY1RET串行接口LED驱动器MAX7219

MAX7219是MAXIM公司生产的一种串行接口方式7段共阴极LED显示驱动器,其片内包含有一个BCD码到B码的译码器、多路复用扫描电路、字段和字位驱动器以及存储每个数字的8×8RAM,每位数字都可以被寻址和更新,允许对每一位数字选择B码译码或不译码。采用三线串行方式与单片机接口,电路十分简单,只需要一个10k左右的外接电阻来设置所有LED的段电流。

寄存器地址D15~D12D11D10D9D8十六进制代码NO-OP×0000×0H数字0×0001×1H数字1×0010×2H数字2×0011×3H数字3×0100×4H数字4×0101×5H数字5×0110×6H数字6×0111×7H数字7×1000×8H译码方式×1001×9H亮度×1010×AH扫描界限×1011×BH停机×1100×CH显示测试×1111×FHMAX7219的内部寄存器及其地址

如图所示为8051单片机与MAX7219的一种接口,8051的P1.0连到MAX7219的DIN端,P1.1连到LOAD端,P1.2连到CLK端,采用软件模拟方式产生所需的工作时序。下面给出根据该图设计的MAX7219显示驱动程序例子,程序执行后在LED上显示8031字样。

主程序MAIN:MOVSP,#60H;设置堆栈指针MOVR7,#0AH;亮度寄存器MOVR5,#07H;亮度值LCALLDINPUT;调用7219命令写入子程序MOVR7,#0BH;扫描界限寄存器MOVR5,#07H;显示7位数字LCALLDINPUTMOVR7,#09H;译码方式寄存器MOVR5,#0FFH;#FFH=7-0位均译为B码,#00=不译码LCALLDINPUTMOVR7,#0CH;停机寄存器MOVR5,#01H;正常工作LCALLDINPUTMOV30H,#08H;显示8031MOV31H,#00HMOV32H,#03HMOV33H,#01HMOVR7,#30HLCALLDISPLY;调用7219显示子程序SJMP$

7219命令写入子程序

DINPUT:MOVA,R7;传递来的第1个参数保存在R7中

MOVR2,#08;作为MAX7219控制寄存器的8位地址值

LOOP1:RLCA;A的D7位移至P1.0,依次为D6~D0

MOVP1.0,C;8位地址输入DIN

CLRP1.2;P1.2输出时钟信号

SETBP1.2

DJNZR2,LOOP1

MOVA,R5;传递来的第2个参数保存在R5中

MOVR2,#08;作为写入控制寄存器的8位命令数据值

LOOP2:RLCA;A的D7位移至P1.0,依次为D6~D0

MOVP1.0,C;8位数据输入DIN

CLRP1.2;P1.2输出时钟信号

SETBP1.2

DJNZR2,LOOP2

CLRP1.1;P1.1输出LOAD信号,

SETBP1.1

RET7219显示子程序

DISPLY:MOVA,R7;R7的内容为7219显示缓冲区入口地址

MOVR0,A;R0指向显示缓冲区首地址

MOVR1,#01;R1指向8字节显示RAM首地址

MOVR3,#08

LOOP3:MOVA,@R0;取出显示数据→R5

MOVR5,A

MOVA,R1;取出显示RAM地址→R7

MOVR7,A

LCALLDINPUT;调用7219命令写入子程序

INCR0

INCR1

DJNZR3,LOOP3

RET8279可编程键盘/显示器接口技术8279的工作原理键盘部分提供64按键阵列(可扩展为128)的扫描接口,也可以接传感器阵列。键的按下可以是双键锁定或N键互锁。键盘输入经过反弹跳电路自动消除前后沿按键抖动影响之后,被选通送入一个8字符的FIFO(先进先出栈)存储器。如果送入的字符多于8个,则溢出状态置位。按键输入后将中断输出线升到高电平向CPU发中断申请。显示部分对7段LED、白炽灯或其他器件提供显示接口。8279有一个内部的16×8显示RAM,组成一对16×4存储器。显示RAM可由CPU写入或读出。显示方式有从右进入的计算器方式和从左进入的电传打字方式。显示RAM每次读写之后,其地址自动加1。8279内部逻辑结构框图I/O控制和数据缓冲

控制与定时寄器及定时控制扫描计数器

返回缓冲器和键盘消颤及控制

FIFO/传感器RAM和状态

显示地址寄存器和显示RAM

8279内部主要组成模块

8279功能命令一览表8279功能命令一览表(续表)8279与单片机的一般接口方法单片机在初始化8279后,把显示字符送到8279内部的一个16字节寄存器内,并将字符转换成段码,经A0~A3、B0~B3线把段码送到显示器,同时经SL0~SL3线发出4位数位选通码。4-16译码器对选通码进行译码后轮流选通各位显示器。SL0~SL2线同时连到3-8译码器。该译码器的输出用于扫描键盘8行。8279经8根返回线(RL0~RL7)读取键盘的状态。如果发现按键闭合则等待10ms,颤动过去后再检验按键是否闭合。若按键仍然闭合,则把被按键的键值选通输入8279内部的先进先出(FIFO)存储器,同时经INT线发出一个高电平,指出FIFO内已经有一个字符。INT线连接到CPU的中断请求输入线。当单片机接收到中断请求后,若开中断,则转到键盘服务程序,从FIFO中读取按键的键值。在这种接口中,单片机要做的事仅是初始化8279、送出要显示的字符、接到中断请求后读取按键的键值,其它工作均由8279自动完成。单片机与8279的具体接口电路8031的P2.7接到8279的片选端,最低位地址A0接到8279的C/D端,因此该接口对用户来说只有二个口地址:命令口地址7FFFH和数据口地址7FFEH。图中8279外接4×8键盘和8位共阴极LED显示器,采用编码扫描方式,译码器74LS138对扫描线译码后一方面接键盘的列线,同时通过驱动器接到显示器上。

8279初始化程序:INI79:MOVDPTR,#7FFFH;清除命令→8279 MOVA,#0D1H MOVX@DPTR,AWNDU:MOVXA,@DPTR;等8279清除结束JBACC.7,WNDUMOVA,#0;方式命令→8279MOVX@DPTR,AMOVA,#34H;扫描频率设置命令→8279MOVX@DPTR,AMOVIE,#84H;允许8279中断RET显示器更新程序:RDIR:MOVDPTR,#7FFFH;写显示RAM命令→8279MOVA,#90HMOVX@DPTR,AMOVR0,#78H;显示缓冲器首地址→R0MOVR7,#8MOVDPTR,#7FFEHRDLO:MOVA,@R0;取显示数据ADDA,#5;加偏移量MOVCA,@A+PC;查表转换为段码数据MOVX@DPTR,AINCR0DJNZR7,RDLORETSEG:DB3FH,06H,5BH,4FH;根据硬件线路设计的段码DB66H,6DH,7DH,07HDB7FH,6FH77H,7CH键输入中断服务程序:PKEYI:PUSHPSW PUSHDPL PUSHDPH PUSHACC PUSHB SETBPSW.3;选工作寄存器1区 MOVDPTR,#7FFFH;读FIFO状态字 MOVXA,@DPTR ANLA,#0FH JZPKYR;判FIFO中是否有数据? MOVA,#40H;读FIFO命令→8279 MOVX@DPTR,A MOVDPTR,#7FFEH MOVXA,@DPTR;读数据 MOVR2,A ANLA,#38H;计算键值 RRA

RRA RRA MOVB,#04H MULAB XCHA,R2 ANLA,#7 ADDA,R2 MOVR0,40;键值→(40H)指出的环形缓冲器单元 MOV@R0,A INCR0 MOVA,R0 ANLA,#3FH;环形缓冲器指针处理 ORLA,#30H MOV40H,A SETB0;置标志供主程序查询处理PKYR:POPB POPACC POPDPH POPDPL POPPSW RETILCD显示器接口

LCD的基本结构及工作原理LCD的特点是体积小、重量轻、功耗极低、抗干扰能力强。LCD的驱动方式

LCD常采用交流驱动,通常采用异或门把显示控制信号和显示频率信号合并为交变的驱动信号,如图所示。当显示控制电极上的波形与公共电极上的方波相位相反时,则为显示状态。显示控制信号由C端输入,高电平为显示状态。显示频率信号是一个方波。当异或门的C端为低电平时,输出端B的电位与A端相同,LCD两端的电压为0,LCD不显示,当异或门的C端为高电平时,B端的电位与A端相反,LCD两端呈现交替变化的电压,LCD显示。

段式LCD显示器的驱动接口显示器4N07,译码驱动器采用带锁存器的MC14543,可以将输入的BCD码转换为7段显示码输出。驱动方式由PH端控制,PH端输入显示方波信号。LD是内部锁存器选通端,LD为高电平时,允许A~D端输入BCD码数据,LD为低电平时,锁存输入数据。BI为高电平时为消隐。每块MC14543各驱动一位LCD,BCD码输入端A~D接到8051的P1.0~P1.3,锁存器选通端LD分别接到P1.4~P1.7,分别控制4块MC14543输入BCD码。MC14543的相位端PH接到8051的P3.7,由P3.7端提供一个显示用的低频方波信号,方波信号的产生由8031片内定时器T1的定时中断产生主程序DISBEQU60H;定义显示缓冲区ORG0000HINIT:LJMPSTART;主程序入口ORG001BHLJMPINTT1;定时器1中断入口ORG0030HSTART:MOVTMOD,#10H;置定时器T1为方式1MOVTH1,#0ECH;10ms定时,fosc=6MHzMOVTL1,#78HSETBTR1;启动T1SETBEA;开中断SETBET1…;其它工作LCALLDISP;调用显示子程序…;其它工作显示子程序:DISP:MOVR0,#DISB;R0指向显示缓冲区首地址MOVR2,#10H;设定最高位锁存控制标志DISP1:MOVA,@R0;取显示数据ANLA,#0FH;保留BCD码ORLA,R2;加上锁存控制位MOVP1,A;送入MC14543ANLP1,#0FH;置所有MC14543为锁存状态INCR0;R0指向显示缓冲区下一位MOVA,R2;锁存端控制标志送ARLAMOVR2,AJNBACC.0,DISP1;未完成4位则继续RET;已更新显示,返回定时器1中断服务程序:INTT:CPLP3.7;P3.7输出电平取反MOVTH1,#0ECH;置定时器计数初值MOVTL1,#78HRETI;中断返回点阵式液晶显示模块EPSON公司生产的EA-D系列点阵式液晶显示模块内部结构如图所示。它由点阵式液晶显示面板、SED1287专用集成电路和4个列驱动器组成。SED1278完成显示模块的时序控制,同时也可以驱动16行40列的点阵库。

显示数据存储器(DDRAM)与显示屏幕的物理位置是一一

温馨提示

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

最新文档

评论

0/150

提交评论