第11章键盘与LED显示器接口技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微型计算机技术第11章键盘与LED显示器接口技术键盘及其接口电路LED数码显示器及其接口电路微型计算机技术9.1键盘及其接口电路9.1.1键盘•键盘按用途分为通用键盘和专用键盘。有机械按键,电容按键,导电橡胶按键,薄膜按键。1、通用键盘:微机系统中84键,101/102/104键,107键等。内含单片机,串行输出,双字节扫描码。2、专用键盘:根据自己需要设计键盘。•按照按键的识别方式分为编码和非编码键。1、编码键盘:通过硬件电路产生被按按键的键码和一个选通脉冲,可作为CPU的中断请求信号。2、非编码键盘:将按键排列成行、列矩阵,按键只是使相应接点接通或断开,在程序配合下产生被按键的编码。微型计算机技术9.1.2键盘的工作原理1、线性键盘•每个键对应I/O端口的一位,没有按键闭合时,各位均处于高电位;当某键被按下时,对应位与地接通,则为低电位,而其他仍为高电位。因此,CPU通过读入I/O端口数据并判断哪一位为“0”,即可知哪一个键被按下,从而转到相应功能的处理程序去执行。线性键盘原理图微型计算机技术按键抖动按键就是无锁开关,由于机械运动的抖动和接触的不稳定,按键在按下和释放时有抖动。按键过程前跳沿后跳沿识别区按键过程图•按键时间大于100mS•前跳沿和后跳沿小于20ms:抖动过程一般持续5~10ms•软件去抖:避免抖动常用软件延迟来让过抖动区,此消除抖动的方法为软件去抖。微型计算机技术2、矩阵键盘•当较多的按键需要识别时,常将按键设计成阵列形式。•一般地,一个键盘阵列可以有N行和M列,共有N*M个按键,称为N*M键盘阵列,或N*M键盘矩阵。•识别矩阵键盘上的闭合键的方法通常有行扫描法和反转法。第1列第2列第3列第4列矩阵键盘原理图微型计算机技术行扫描法•将行线接一并行口,输出方式;将列线也接并行口,输入方式,行扫描法识别按键分两步:识别是否有键按下:先将所有行线置为低电平,读取列线值,若此时列线值全为1,说明无键按下;否则说明有键按下。判别是哪一个键按下:编程改变行扫描码,使行线逐行为0,其余行为1,然后读取列值,看是否有列线变成0,逐行扫描。当读到某一列线的值为0时,说明行与列线相交的位置上的键被按下,可以退出扫描,根据此时的行扫描码和列线值,便能识别闭合的到底是哪一个键。微型计算机技术行扫描法8255A微型计算机技术键盘接口电路应用举例例:设上图电路中,8255A的地址为200h-203h,利用行扫描法编写按键识别程序,将按下键的行号与列号的编码存于BX中。分析:8255的A口用作输出口,B口用作输入口,AH存放输出给A口的内容,AL存放从B口读入的列的内容。逐行输出0识别不同按键的过程是:先将AH的D0位置0,其余位置1,即AH=0feh,并将AH的内容输出给PA口的行线,使键盘阵列的第1行输出为0,然后从PB口读入列线状态放在AL中,若AL不为全1,说明第1行有键按下。例如,若第1行第1列交叉点的键按下,则读入到AL的内容为0feh(AL的D0位为0,其余位为1),则该键按下时,AH和AL的内容就可组成一个行与列的编码为AHAL=fefeh。微型计算机技术当行线的第1行输出0时,如果从PB口读入的内容为全1,说明第1行无键按下,这时将AH寄存器的0左移一位,使AH=0fdh,再输出给PA口的行线,第PA口的第2行输出为0,仿第一行的方法,可判别第二行是否有键按下。每个按键的编码都是唯一的。因共有4行按键,所以,在识别过程中从PA口最多输出4行0。用CX作为行输出计数器,将CX的初值设为4,表示共需从PA口输出4行0,每从PA口输出一行0,就将CX内容就减1,当CX减至0时,就从PA口输出完4行0。在程序设计时,将各个键对应的代码放在一个表中,程序通过查表来确定具体按下的为哪一个键。微型计算机技术按键识别程序PORTAEQU200HPORTBEQU201HPORTDEQU203Hmovdx,PORTD;控制口地址送dxmoval,10000010B;8255的A口和B口工作在方式0;A口出,B口入outdx,al;向8255写控制字nokey:movdx,PORTAmoval,0outdx,al;从8255的A口输出全0给键盘阵列行线movdx,PORTBinal,dx;从8255的B口读入键盘阵列的列线状态oral,0f0h;将与键盘列线无关的高4位行线置1cmpal,0ffh;比较从列线读入的是否为全1jenokey;是全1,则无键按下,转微型计算机技术movcx,1000again:loopagain;延时去抖动movcx,4;有键按下,A口共有4行逐行输出0moval,0feh;首先从A口的D0位输出0movah,al;行输出的值存于ah中next:movdx,PORTAoutdx,al;从行线输出movdx,PORTBinal,dx;读入列线状态oral,0f0h;将与列线无关的高4位置1cmpal,0ffh;判8255PB口读入的是否为全1jnefindkey;不为全1,说明有键按下rolah,1;否则行输出的0移至下一行moval,ahloopnext;4行查完否,未完继续jmpnokey;4行查完未发现有键按下findkey:movBX,AX;将AH和AL中的行码和列码存于BX中微型计算机技术9.2LED数码显示器及其接口电路9.2.1LED的工作原理•常用的LED器件:七段数码管和“米”字数码管,如下图所示。它们是由若干只发光二极管做在一起组成字型构成的,可加一小数点。每位LED驱动电流5~30mA。(a)七段LED外形图(b)米字数码管微型计算机技术LED的工作原理若要使LED显示信息,那么对于共阳极LED,其公共端应接高电平(或+5V),而对于共阴极LED,其公共端应接地。七段LED原理图“米”字LED原理图微型计算机技术9.2.2LED数码显示器接口电路微型计算机技术多位显示问题的解决(动态显示)•实际使用时,往往要用几个显示管实现多位显示。这时,如果每一个LED占用一个独立的输出端口,那么,所占用的输出通道就太多了,而且,驱动电路的数目也很多。•计算机系统中常用的办法:LED一般用动态扫描,硬件上用公用的驱动电路来驱动各显示管,每位LED驱动电流10~30mA。在软件上用扫描方法来实现数码显示,使硬件电路简单,发光效率高;但发光控制复杂。微型计算机技术LED与微机接口电路74HC273D7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0CLKSEGDIS74HC273D7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0DIGDISCLKD7D6D5D4D3D2D1D0A7A6A5A4A3A2A1A0G1G2Y7Y6Y5Y4Y3Y2Y1Y0I6I5I4I3I2I1I0O6O5O4O3O2O1O0MC141374HC244HGFEDCBALED与微机接口电路1108微型计算机技术例:设上图中CPU采用8088,显示器为共阴极LED数码管。段驱动采用74HC244(8位三态缓冲器),位驱动采用MC1413(7位反相输出)。SEGDIS为段锁存器,口地址211H;DIGDIS为位锁存器,口地址210H(可由译码电路决定其地址值)。试用动态扫描方式显示。•编程设计思路:利用8253的定时器0输出OUT0通过总线中的IRQ2(8259A输入端),每隔20ms定时向CPU发中断,每进一次中断将4个数码管都显示一次。即每秒显示50次。设8253CLK0的频率为250KHz,则定时器0的时间常数N0=500082538259A250KHZIR2OUT0CLK0GATE0+5v微型计算机技术INT00EQU20H;8259A偶端口地址INT01EQU21H;8259A奇端口地址TIME0EQU200H;8253定时器0端口地址TCTLEQU203H;8253控制口地址SEGDEQU211H;LED段端口地址DIGDEQU210H;LED位端口地址;堆栈段;数据段……DISMDB4DUP(10H);显示缓冲区DTBL:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HDB00H,40H,46H,73H,76H,38H,3EH,37HDB21H,0CH,03H,18H,31H,63H,5CH,0FH微型计算机技术;代码段(部分)CODESEGMENT……START:……;段基址赋值MOVDISM,14H;MOVDISM+1,0EH;MOVDISM+2,15H;MOVDISM+3,15H;初始显示信息HELL(HELLO);初始化8253CLIMOVDX,TCTLMOVAL,00110100;定时器0,方式2OUTDX,ALMOVDX,TIME0MOVAX,5000OUTDX,ALMOVAL,AHOUTDX,AL微型计算机技术……;0AH号中断向量设置(略)MOVDX,INT01INAL,DXANDAL,0FBH;开放IRQ2中断对应的屏蔽位OUTDX,ALSTIAGAN:MOVCX,5000;延时等待硬件中断TT:LOOPTTMOVAH,01HINT16H;BIOS中断键盘功能,判断是否有键被按下JZAGAN;无键,转CLIMOVDX,INT01INAL,DXORAL,04H;关闭IRQ2中断对应的屏蔽位OUTDX,ALSTIMOVAX,4C00H;返回DOSINT21H微型计算机技术;中断服务子程序T0SV:PUSHAXPUSHBXPUSHCXMOVDX,DIGDMOVAL,00HOUTDX,AL;关显示,熄灭所有数码管LEASI,DISM;指向数码管显示缓冲区首址MOVCL,08H;位指针,指向第一位数码管LEABX,DTBL;取字型表首址DIS1:MOVAL,[SI]XLAT;查表,换码,得到该显示字符对应的段码(在AL中)MOVDX,SEGDOUTDX,AL;输出段码,显示字型MOVAL,CLMOVDX,DIGD;OUTDX,AL;输出位码,扫描选中当前一位微型计算机技术PUSHCXMOVCX,350HDELAY:LOOPDELAY;等待一段时间POPCXCMPCL,01H;是否已显示完4位LEDJZQUITINCSI;指向数码管显示缓冲下一个地址RORCL,1;位指针指向下一位数码管JMPDIS1QUIT:MOVDX,DIGDMOVAL,00HOUTDX,AL;熄灭所有数码管MOVDX,INT00MOVAL,20HOUTDX,AL;发中断结束命令POPCXPOPBXPOPAXSTIIRETCODEENDSENDSTART

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功