微机接口第九章8255A

上传人:s9****2 文档编号:578462630 上传时间:2024-08-24 格式:PPT 页数:116 大小:1.26MB
返回 下载 相关 举报
微机接口第九章8255A_第1页
第1页 / 共116页
微机接口第九章8255A_第2页
第2页 / 共116页
微机接口第九章8255A_第3页
第3页 / 共116页
微机接口第九章8255A_第4页
第4页 / 共116页
微机接口第九章8255A_第5页
第5页 / 共116页
点击查看更多>>
资源描述

《微机接口第九章8255A》由会员分享,可在线阅读,更多相关《微机接口第九章8255A(116页珍藏版)》请在金锄头文库上搜索。

1、 I/O接口概述接口概述本章内容本章内容本章内容本章内容 并行接口并行接口 8255A学习目的学习目的学习目的学习目的 掌握可编程并行接口芯片掌握可编程并行接口芯片 8255A的连接与编程的连接与编程 微机系统的信息交换有微机系统的信息交换有并行通信并行通信和和串行通信串行通信两种方式。两种方式。 并行通信是以微机的字长为传输单位;并行通信是以微机的字长为传输单位;并行通信是以微机的字长为传输单位;并行通信是以微机的字长为传输单位;适合于外部设备与微机之间进行近距离、大适合于外部设备与微机之间进行近距离、大适合于外部设备与微机之间进行近距离、大适合于外部设备与微机之间进行近距离、大量和快速的信

2、息交换。量和快速的信息交换。量和快速的信息交换。量和快速的信息交换。 实现并行通信的接口称之为并实现并行通信的接口称之为并行接口。行接口。 概概 述述 8255A是是Intel86系系列列微微处处理理机机的的配配套套并并行行接接口口芯芯片片,它它可可为为86系系列列CPU与与外外部部设设备备之之间间提提供供并并行行输输入入/输输出通道。出通道。一、一、一、一、8255A8255A的内部结构和引脚信号的内部结构和引脚信号的内部结构和引脚信号的内部结构和引脚信号1. 8255A1. 8255A内部结构内部结构内部结构内部结构8255A可可 编编 程程 外外 围围 设设 备备 接接 口口(Progr

3、ammable Peripheral Interface, 简简写写为为PPI) ,其内部结构如图所示。其内部结构如图所示。11.1 可可编程并行接口芯片编程并行接口芯片8255A图图图图11.1 8255A11.1 8255A内部结构内部结构内部结构内部结构A组控制部件数据总线缓冲器读/写控制部件B组控制部件 RESETA0A1A组端口A8位A组A组端口C(高4位)B组端口C(低4位)8位B组端口BPA7PA0PC7PC4PC3PC0PB7PB0双向D7D08255A包包括括四四大大部部分分:数数据据总总线线缓缓冲冲器器、读读写写控控制制部部件件、A组组和和B组组控控制制部部件件、端端口口A

4、、B、C。(1) 并行输入并行输入 / 输出端口输出端口A、B、C端端口口A:包包含含一一个个8位位数数据据输输出出锁锁存存器器/缓缓冲冲器器和和一一个个8位位数数据据输输入入锁锁存存器器,输输入输出数据均受到锁存。入输出数据均受到锁存。端端口口B和和C: 都都包包含含一一个个8位位数数据据输输入入缓缓冲冲器器和和一一个个8位位的的数数据据输输出出锁锁存存器器/缓缓冲冲器器,输出数据能锁存,输入数据不锁存。输出数据能锁存,输入数据不锁存。端端口口C:可可分分成成两两个个4位位端端口口,分分别别定定义义为为输输入入或或输输出出端端口口,还还可可定定义义为为控控制制、状状态端口,配合端口态端口,配

5、合端口A和端口和端口B工作。工作。(2) A组和组和B组控制部件组控制部件A组组A口:PA0PA7C口的高4位:PC4PC7B组组B口:PB0PB7C口的低4位:PC0PC3 A组,组,B组的控制寄存器,组的控制寄存器,接收来自数据总线的控制字,接收来自数据总线的控制字,并根据控制字确定各端口的工并根据控制字确定各端口的工作状态和工作方式。作状态和工作方式。(3) 数据总线缓冲器数据总线缓冲器三三态态双双向向8位位缓缓冲冲器器,是是8255A与与CPU 之之间间的的数数据据接接口口。传传送送输输入入数数据据、输出数据、控制命令字。输出数据、控制命令字。(4)读读/写控制部件写控制部件接接收收来

6、来自自CPU地地址址总总线线信信号号和和控控制制信信号号,并发出命令到两个控制组并发出命令到两个控制组 (A组和组和B组组)。CS:片选信号,接片选信号,接CPU高位地址的译码输出高位地址的译码输出WR:写写信信号号,WR有有效效,CPU向向8255A写写入入控控制或数据信息。制或数据信息。RD:读信号读信号,RD有效有效,CPU读读8255A的数据或状的数据或状 态;态;RESET:复位信号。RESET有效时,清 8255A 所有控制寄存器内容, 并将各端口置成输入方式。2. 8255A2. 8255A的引脚的引脚的引脚的引脚8255A采采 用用 40线线 双双列列直直插插封封装装,引引脚脚

7、图图如如图图所示。所示。图11.2 8255A引脚定义432140371834.27D7D0A0A1RESETVCCGND986536358255APPI数数据据总总线线控控制制线线电电源源线线通道通道A通道通道B通道通道CCPU接口外设接口.PA7PA0.PB7PB0.PC7PC025141516 171312 11 10 * PA7PA0:A端口数据信号引脚* PB7PB0:B端口数据信号引脚* PC7PC0:C端口数据信号引脚* D7D0: 8255A的8位数据线* A1A0: 端口选择信号 当当A1A0=00时时 选择端口选择端口A当当A1A0=01时时 选择端口选择端口B当当A1A0

8、=10时时 选择端口选择端口C当当A1A0=11时时 选择控制端口选择控制端口表11.1 8255A的读写操作控制 8255A共共有有两两个个控控制制字字:即即工工作作方方式控制字和对式控制字和对C口置位口置位/复位控制字。复位控制字。1. 1. 控制字控制字控制字控制字(1)工作方式控制字:工作方式控制字:控制字和各位的含义如图所示。二二 、 8255A的控制字及其工作方式的控制字及其工作方式D7 D6 D5 D4 D3 D2 D1 D0B组端口C(PC3PC0)1=输入, 0=输出端口B1=输入,0=输出方式选择0方式0, 1=方式1A组端口C(PC7PC4)1=输入, 0=输出端口A1=

9、输入,0=输出方式选择00端口A方式0, 01=端口A方式1,1=端口A方式2方式设置标志1=有效图11.3 8255A工作方式控制字格式(2) (2) (2) (2) 端口端口端口端口C C C C的置位的置位的置位的置位/ / / /复位控制字复位控制字复位控制字复位控制字控制字的格式如图所示。控制字的格式如图所示。图11.4 8255A 置位/复位控制字格式D7 D6 D5 D4 D3 D2 D1 D0位的置位/复位1=置位,0=复位位 选 择D3 D2 D1 通道C位按位置位/复位控制标志0=有效0 0 0 PC00 0 1 PC10 1 0 PC20 1 1 PC31 0 0 PC4

10、1 0 1 PC51 1 0 PC61 1 1 PC7不使用设置为000关于控制字要说明几点:关于控制字要说明几点:(1) 设设置置方方式式控控制制字字时时,A口口、B口口作作为为整整体体设设置置,而而C口口要要分分成成上上、下下两两部部分分分分别别设设置置。三三个个端端口口的的工工作作方方式式由由一一个个控控制制字字规规定定。(2) C口口按按位位置置位位/复复位位控控制制字字不不是是送送到到C口口地地址址,而而是是送送到到控控制制寄寄存存器器地地址址;且且一一个个控制字只能使控制字只能使C口口一位置位或复位一位置位或复位。(3) 方方式式控控制制字字和和按按位位置置位位/复复位位控控制制字

11、字均均写写入入同同一一个个控控制制寄寄存存器器地地址址,二二者者通通过过最最高高位位D7来来区区别别。D7=1为为方方式式控控制制字字,D7=0为为按按位置位位置位/复位控制字。复位控制字。(1 1) 方式方式方式方式0 0 基本输入基本输入基本输入基本输入/ /输出方式输出方式输出方式输出方式方方方方式式式式0 0是是是是一一一一种种种种基基基基本本本本输输输输入入入入输输输输出出出出工工工工作作作作方方方方式式式式,它它它它的的的的2424条条条条I/OI/O线线线线可可可可以以以以全全全全部部部部都都都都用用用用作作作作传传传传送送送送数数数数据据据据,不不不不设设设设置置置置应应应应答

12、答答答信信信信号号号号线线线线,常常常常用用用用于于于于无无无无条条条条件件件件传传传传送送送送,输输输输出出出出有有有有锁锁锁锁存,输入只有缓冲能力而无锁存功能。存,输入只有缓冲能力而无锁存功能。存,输入只有缓冲能力而无锁存功能。存,输入只有缓冲能力而无锁存功能。方式方式方式方式0 0控制字具体格式如图控制字具体格式如图控制字具体格式如图控制字具体格式如图11.511.5所示所示所示所示2. 2. 工作方式工作方式工作方式工作方式图11.5 8255A工作方式0控制字格式 由控制字中由控制字中D4 4D3 3D1 1D0 0 等等4位的不同位的不同取值取值,可定义方式可定义方式0的的16种工

13、作方式的组种工作方式的组合合,如表如表11.2所示。所示。 方式方式0中,端口中,端口C被分成两个被分成两个4位位端口,它们可被定义为输入或输出端端口,它们可被定义为输入或输出端口,口,CPU与与3个端口之间交换数据,个端口之间交换数据,可直接由可直接由CPU执行执行IN和和OUT指令来完指令来完成。成。表表表表11.2 11.2 方式方式方式方式0 0的工作状态组合的工作状态组合的工作状态组合的工作状态组合序号序号序号序号控制字控制字控制字控制字D D7 7,D,D0 0A A组组组组B B组组组组端口端口端口端口A A端口端口端口端口C C高高高高4 4位位位位(PC(PC7 7PCPC4

14、 4) )端口端口端口端口B B端口端口端口端口C C低低低低4 4位位位位(PC(PC3 3PCPC0 0) )1 11000000010000000输出输出输出输出输出输出输出输出输出输出输出输出输出输出输出输出2 21000000110000001输出输出输出输出输出输出输出输出输出输出输出输出输入输入输入输入3 31000001010000010输出输出输出输出输出输出输出输出输入输入输入输入输出输出输出输出4 41000001110000011输出输出输出输出输出输出输出输出输入输入输入输入输入输入输入输入5 51000100010001000输出输出输出输出输入输入输入输入输出输出

15、输出输出输出输出输出输出6 61000100110001001输出输出输出输出输入输入输入输入输出输出输出输出输入输入输入输入7 71000101010001010输出输出输出输出输入输入输入输入输入输入输入输入输出输出输出输出8 81000101110001011输出输出输出输出输入输入输入输入输入输入输入输入输入输入输入输入9 91001000010010000输入输入输入输入输出输出输出输出输出输出输出输出输出输出输出输出10101001000110010001输入输入输入输入输出输出输出输出输出输出输出输出输入输入输入输入11111001001010010010输入输入输入输入输出输出

16、输出输出输入输入输入输入输出输出输出输出12121001001110010011输入输入输入输入输出输出输出输出输入输入输入输入输入输入输入输入13131001100010011000输入输入输入输入输入输入输入输入输出输出输出输出输出输出输出输出14141001100110011001输入输入输入输入输入输入输入输入输出输出输出输出输入输入输入输入15151001101010011010输入输入输入输入输入输入输入输入输入输入输入输入输出输出输出输出16161001101110011011输入输入输入输入输入输入输入输入输入输入输入输入输入输入输入输入(2) (2) 工作方式工作方式工作方式

17、工作方式11选通式输入选通式输入选通式输入选通式输入/ /输出方式输出方式输出方式输出方式 方式方式1选通输入选通输入方式1操作使端口A或端口B作为锁存输入设备工作。端口C也可按方式1操作使用但不是对数据,而是对控制信号,或当端口A或端口B为选通输入端口时的握手信号。下下图图示示出出8255A方方式式1选选通通输输入入时时的的内内部部结构图。结构图。图11.6工作方式1输入控制字格式(a)端口A方式1输入(b)端口B方式1输入图11.7方式1输入端口状态IBF: 输 入 缓 冲 器 满 信 号 , 向 外 设 输 出,高电平有效。STB:选通信号。由外设输入,低电平 有效。INTR:中断请求信

18、号,高电平有效。INTE:中断允许信号,它是通过端口PC4(端口A)或PC2(端口B)的位来编程的内部位。 方式方式1选通输出选通输出当端口A或端口B为方式1输出时,各指定PC的3条线作为8255A与外设及CPU之间应答信号。下图为方式1选通输出操作的内部结构图。 图11.8 方式1输出控制字格式图11.9 方式1输出端口状态INTRAPC3PC6PC7PA70方式1输出端口APC4,5I/OINTEA2WR方式1输出端口BINTRBPC0PC2PC1INTEBPB70WR(a)端口A方式1输出(b)端口B方式1输出OBF:输出缓冲器满信号。向外设 输出,低电平有效。ACK: 外设应答信号。由

19、外设输入, 低电平有效。INTE:中断允许信号。INTR:中断请求信号。高 电平有效。(3) 工作方式工作方式22双向选通输入双向选通输入/ /输出方式输出方式方式2只允许A组采用,此时端口A变为双向,允许数据在同一组8条线上发送和接收。下图示出方式下图示出方式2操作内部结构图。操作内部结构图。图11.10 端口A方式2控制字 图11.11 端口A工作在方式2的端口状态OBFA:输出缓冲器满信号,向外设输出,低电平有效。ACKA:应答信号,由外设输入,低电平有效。STBA: 数据选通输入信号。由外设输入, 低电平有效。IBFA:输入缓冲器满信号,向外设输出,高电平有效。INTE:中断允许信号

20、(INTE1和INTE2)。高电平有效。INTRA:中断请求信号,高电平有效。 8255A中中端端口口A工工作作在在方方式式2时时,允允许许端端口口B工工作作于于方方式式0或或方方式式1,完完成成输输入入/输输出出功功能能。4种种组组合合状状态态及及其其工作方式控制字格式如表工作方式控制字格式如表11.3。表表表表11.3 11.3 方式方式方式方式2 2的组合状态与控制字格式的组合状态与控制字格式的组合状态与控制字格式的组合状态与控制字格式3. 8255A的工作方式初始化(初始化)的工作方式初始化(初始化) 根据根据8255A8255A与与CPUCPU接口硬件电路图接口硬件电路图确确 定定8

21、255A8255A四个端口地址。四个端口地址。 根据根据8255A8255A的具体应用,的具体应用,确定确定8255A8255A工工 作方式控制字内容。作方式控制字内容。 利用输出指令,将工作方式利用输出指令,将工作方式控制字送控制字送 至控制命令寄存器中。至控制命令寄存器中。 4. 8255A中中PC口置位口置位/复位操作复位操作 根据根据8255A与与CPU接口硬件电路接口硬件电路确定确定 8255A四个端口的端口地址。四个端口的端口地址。 根据对根据对PC口具体哪一位操作,口具体哪一位操作,确定确定 8255A的按位置位的按位置位/复位控制字内容。复位控制字内容。 利用输出指令,将按位置

22、位利用输出指令,将按位置位/复位复位控制控制 字送至字送至8255A控制命令寄存器中。控制命令寄存器中。 目目前前打打印印机机一一般般采采用用并并行行接接口口Centronics标标准准,其其主主要要信信号号与与传传送送时时序序如如图图11.12。打打印印机机接接收收主主机机传传送送数据的过程是这样的:数据的过程是这样的:11.2 8255A的应用实例的应用实例一、一、 8255A与打印机接口与打印机接口1 1、用方式、用方式、用方式、用方式0 0与打印机接口与打印机接口与打印机接口与打印机接口 当当当当主主主主机机机机准准准准备备备备好好好好输输输输出出出出打打打打印印印印的的的的一一一一个

23、个个个数数数数据据据据时时时时,通通通通过过过过8255A8255A把把把把数数数数据据据据送送送送给给给给打打打打印印印印机机机机接接接接口口口口的的的的数数数数据据据据引引引引脚脚脚脚DATADATA0 0DATADATA7 7,同同同同时时时时送送送送出出出出一一一一个个个个数数数数据据据据选选选选通通通通信信信信号号号号STROBESTROBE 给给给给打打打打印印印印机机机机。打打打打印印印印机机机机收收收收到到到到该该该该信信信信号号号号后后后后,把把把把数数数数据据据据锁锁锁锁存存存存到到到到内内内内部部部部缓缓缓缓冲冲冲冲区区区区,同同同同时时时时在在在在BUSYBUSY信信信

24、信号号号号线线线线上上上上发发发发出出出出忙忙忙忙信信信信号号号号。待待待待打打打打印印印印机机机机处处处处理理理理好好好好输输输输入入入入数数数数据据据据时时时时,打打打打印印印印机机机机撤撤撤撤消消消消忙忙忙忙信信信信号号号号,同同同同时时时时向向向向主主主主机机机机送送送送出出出出一一一一个个个个响响响响应应应应信信信信号号号号ACKACK。主主主主机机机机根根根根据据据据信信信信号号号号BUSYBUSY或或或或信信信信号号号号ACKACK决决决决定定定定是是是是否输出下一个数据。否输出下一个数据。否输出下一个数据。否输出下一个数据。图11.12 方式0的打印机接口 本例中,本例中,CP

25、U与与8255A采用查询方式输采用查询方式输出数据。端口出数据。端口A设置为方式设置为方式0,输出打印数据,输出打印数据,端口端口C的的PC7产生负脉冲选通信号,产生负脉冲选通信号,PC2连接连接打印机的打印机的BUSY信号查询其状态,信号查询其状态,PC0连接打连接打印机的印机的ACK信号。信号。 假设假设8255A的的A、B、C口的口的I/O地址为地址为FFF8H、FFFAH和和FFFCH,控制端口地址为,控制端口地址为FFFEH。 ;初始化程序段初始化程序段 MOV DX , 0FFFEH MOV AL , 81H ; A口方式口方式0输出输出, C口上半部输出口上半部输出, ;下半部输

26、入下半部输入 OUT DX , AL ; 输出工作方式字输出工作方式字 MOV AL , 0FH ; C口的置位口的置位/复位控制字复位控制字, ; 使使PC7 = 1, 即置即置STROBE= 1 OUT DX , AL PUSH AX ;输出打印数据子程序输出打印数据子程序, 打印数据打印数据 ; 在在AH中中 PUSH DXPM: MOV DX , 0FFFCHIN AL, DX ;查询;查询PC2AND AL, 04H ;BUSY=0?JNZ PM ;忙忙,则等待则等待,D2=1 表示忙表示忙MOV DX, 0FFF8H ;不忙,则输出数据不忙,则输出数据MOV AL, AHOUT D

27、X, ALMOV DX, 0FFFEHMOV AL,0EH ;使使PC7=0,即置即置 = 0OUT DX, ALSTROBENOP ;适当延时,产生一定宽;适当延时,产生一定宽 度的低电平度的低电平NOPMOV AL, 0FH ;使;使PC7=1,置置 = 1OUT DX, ALPOP DX POP AXRETSTROBE2 2、用方式、用方式、用方式、用方式1 1与打印机接口与打印机接口与打印机接口与打印机接口 8255A8255A的端口的端口的端口的端口A A工作于选通输出方式,工作于选通输出方式,工作于选通输出方式,工作于选通输出方式,PCPC7 7作为作为作为作为 OBFOBFA A

28、输出信号,输出信号,输出信号,输出信号,PCPC6 6作为作为作为作为ACKACKA A 输入信号,而输入信号,而输入信号,而输入信号,而PCPC3 3作作作作为为为为INTRINTRA A输出信号;另外,可用程序控制输出信号;另外,可用程序控制输出信号;另外,可用程序控制输出信号;另外,可用程序控制INTEINTEA A(PC(PC6 6) ),决定是否采用中断方式。,决定是否采用中断方式。,决定是否采用中断方式。,决定是否采用中断方式。打印机接口的时序与打印机接口的时序与打印机接口的时序与打印机接口的时序与8255A8255A的选通输出方式的的选通输出方式的的选通输出方式的的选通输出方式的

29、时序类似,但略有差别,用单稳电路时序类似,但略有差别,用单稳电路时序类似,但略有差别,用单稳电路时序类似,但略有差别,用单稳电路74LS12374LS123即可满即可满即可满即可满足双方的时序要求,见图足双方的时序要求,见图足双方的时序要求,见图足双方的时序要求,见图11.1311.13。图11.13 方式1的打印机接口 假设假设8255A的的A、B、C口的口的I/O地址为地址为FFF8H、FFFAH和和FFFCH。控制端口的地址为控制端口的地址为FFFEH。以下为。以下为采用选通方式输出缓冲区采用选通方式输出缓冲区BUF中的中的打印字符的子程序,输出的字节数打印字符的子程序,输出的字节数为为

30、M。PRINT PROC PUSH AX ;保护寄存器;保护寄存器 PUSH BX PUSH CX PUSH DX MOV DX , 0FFFEH ;设定设定A口为选通输出方式口为选通输出方式 MOV AL , 0A0H OUT DX , AL MOV AL , 0CH ;使使INTEA(PC6)为为0 , 禁止禁止 中断中断 OUT DX , AL MOV CX , M ;打印字节数送打印字节数送CX MOV BX , OFFSET BUF ; 取缓冲区首址取缓冲区首址 送送BX PRINT1: MOV AL , BX ; 取一个数据取一个数据 MOV DX , 0FFF8H OUT DX

31、, AL ; 从从A口输出口输出 MOV DX , 0FFFCHPRINT2: IN AL , DX ;读读C口口 TEST AL , 80H ;检测检测OBFA(PC7) ;是否为是否为1? JZ PRINT2 ; 为为0,则继续检测,则继续检测 INC BX ;为为1,说明数据已输出,说明数据已输出 LOOP PRINT1 ;准备取下一个数据输出准备取下一个数据输出 POP DX ; 打印结束,恢复寄存器打印结束,恢复寄存器 POP CX POP BX POP AX RET ; 返回返回PRINT ENDP 本例与上例的主要区别是:在上例中,本例与上例的主要区别是:在上例中,由软件对由软件

32、对PC7复位和置位来产生打印机的复位和置位来产生打印机的选通信号,而本例中,选通信号,而本例中,8255A工作在选通工作在选通方式,当执行输出指令时,自动由硬件从方式,当执行输出指令时,自动由硬件从PC7(OBFA)输出负脉冲选通信号。当打)输出负脉冲选通信号。当打印机印机ACK变为有效时,自动将变为有效时,自动将PC7置为高置为高电平。电平。 最简单的键盘如图最简单的键盘如图最简单的键盘如图最简单的键盘如图11.14(a)11.14(a)所示,其中每个所示,其中每个所示,其中每个所示,其中每个键对应键对应键对应键对应I/OI/O端口的一位。没有键闭合时,各位均端口的一位。没有键闭合时,各位均

33、端口的一位。没有键闭合时,各位均端口的一位。没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位处于高电平;当有一个键按下时,就使对应位处于高电平;当有一个键按下时,就使对应位处于高电平;当有一个键按下时,就使对应位接地而成为低电平,而其它位仍为高电平。这接地而成为低电平,而其它位仍为高电平。这接地而成为低电平,而其它位仍为高电平。这接地而成为低电平,而其它位仍为高电平。这样,样,样,样,CPUCPU只要检测到某一位为只要检测到某一位为只要检测到某一位为只要检测到某一位为0 0,便可判别出对,便可判别出对,便可判别出对,便可判别出对应键已按下。应键已按下。应键已按下。应键已按下。二、二

34、、 8255A与键盘接口与键盘接口1 1、键盘的工作原理、键盘的工作原理、键盘的工作原理、键盘的工作原理图11.14 键盘的结构 用图用图用图用图11.14(a)11.14(a)的结构设计键盘有一个很大的的结构设计键盘有一个很大的的结构设计键盘有一个很大的的结构设计键盘有一个很大的缺点:缺点:缺点:缺点:占用的占用的占用的占用的I/OI/O端口也太多端口也太多端口也太多端口也太多。所以,这种简单。所以,这种简单。所以,这种简单。所以,这种简单结构只用在只有几个键的小键盘中。结构只用在只有几个键的小键盘中。结构只用在只有几个键的小键盘中。结构只用在只有几个键的小键盘中。 通常使用的键盘是矩阵结构

35、的。以通常使用的键盘是矩阵结构的。以通常使用的键盘是矩阵结构的。以通常使用的键盘是矩阵结构的。以33=933=9个键为例,如图个键为例,如图个键为例,如图个键为例,如图11.14(b)11.14(b),这个矩阵分为,这个矩阵分为,这个矩阵分为,这个矩阵分为3 3行行行行3 3列,如果键列,如果键列,如果键列,如果键5 5按下,则第按下,则第按下,则第按下,则第1 1行和第行和第行和第行和第2 2列线接通而列线接通而列线接通而列线接通而形成通路。如果第形成通路。如果第形成通路。如果第形成通路。如果第1 1行线接低电平,则键行线接低电平,则键行线接低电平,则键行线接低电平,则键5 5的的的的闭合,

36、会使第闭合,会使第闭合,会使第闭合,会使第2 2列线也输出低电平。列线也输出低电平。列线也输出低电平。列线也输出低电平。2 2、键的识别、键的识别、键的识别、键的识别(1)行扫描法行扫描法 图图图图11.1511.15是一个是一个是一个是一个8 8行行行行8 8列组成的键盘。列组成的键盘。列组成的键盘。列组成的键盘。行扫行扫行扫行扫描法识别按键的原理如下描法识别按键的原理如下描法识别按键的原理如下描法识别按键的原理如下:先使第:先使第:先使第:先使第0 0行接低电行接低电行接低电行接低电平,其余行为高电平,然后看第平,其余行为高电平,然后看第平,其余行为高电平,然后看第平,其余行为高电平,然后

37、看第0 0行是否有键行是否有键行是否有键行是否有键闭合。这是通过检查列线电位来实现的,即闭合。这是通过检查列线电位来实现的,即闭合。这是通过检查列线电位来实现的,即闭合。这是通过检查列线电位来实现的,即在第在第在第在第0 0行接低电平时,看是否有哪条列线变成行接低电平时,看是否有哪条列线变成行接低电平时,看是否有哪条列线变成行接低电平时,看是否有哪条列线变成低电平。低电平。低电平。低电平。 图11.15 键盘接口电路 如果没有任何一条列线为低电平,如果没有任何一条列线为低电平,则说明第则说明第0行没有任何键被按下。此后,行没有任何键被按下。此后,再将第再将第1行接低电平,检测是否有变为低行接低

38、电平,检测是否有变为低电平的列线。如此重复地扫描,直到最电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行后一行。在扫描过程中,当发现某一行有键闭合时,便退出扫描,通过组合行有键闭合时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。线和列线即可识别此刻按下的是哪一键。 实际应用中,一般先快速检查实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键盘中是否有键按下,然后再确定按键的具体位置。为此,先使所有行线键的具体位置。为此,先使所有行线为低,然后检查列线。这时如果列线为低,然后检查列线。这时如果列线有一位为有一位为0,则说明必有键被按下,则说明必有键被按

39、下, 采用扫描法可进一步确定按键的具体采用扫描法可进一步确定按键的具体位置。位置。 图图11.15中将行线与中将行线与8255A端口端口B相连,相连,端口端口B设置为输出。设置为输出。CPU使端口使端口B的某一的某一位为位为0,便相当于将该行线接低电平;某,便相当于将该行线接低电平;某位为位为1,则该行线接高电平。,则该行线接高电平。将列线与端将列线与端口口A相连,端口相连,端口A设置为输入。设置为输入。CPU只要只要读取端口读取端口A的数据,就可以判别是否有键的数据,就可以判别是否有键被按下及是第几列的键被按下。被按下及是第几列的键被按下。 从上面的原理可知,从上面的原理可知,从上面的原理可

40、知,从上面的原理可知,键盘扫描程序的第一键盘扫描程序的第一键盘扫描程序的第一键盘扫描程序的第一步步步步应该判断是否有键被按下。为此,使输出端应该判断是否有键被按下。为此,使输出端应该判断是否有键被按下。为此,使输出端应该判断是否有键被按下。为此,使输出端口各位全为口各位全为口各位全为口各位全为0 0,即相当于将所有行线接低电平。,即相当于将所有行线接低电平。,即相当于将所有行线接低电平。,即相当于将所有行线接低电平。然后,从输入端口读取数据,如果读得的数据然后,从输入端口读取数据,如果读得的数据然后,从输入端口读取数据,如果读得的数据然后,从输入端口读取数据,如果读得的数据不是不是不是不是FF

41、HFFH,则说明必有列线处于低电平,从而,则说明必有列线处于低电平,从而,则说明必有列线处于低电平,从而,则说明必有列线处于低电平,从而可断定必有键被按下。此时,为了消除键的抖可断定必有键被按下。此时,为了消除键的抖可断定必有键被按下。此时,为了消除键的抖可断定必有键被按下。此时,为了消除键的抖动,调用延迟程序。如果读得的数据是动,调用延迟程序。如果读得的数据是动,调用延迟程序。如果读得的数据是动,调用延迟程序。如果读得的数据是FFHFFH,则程序在循环中等待。这段程序如下:则程序在循环中等待。这段程序如下:则程序在循环中等待。这段程序如下:则程序在循环中等待。这段程序如下:KEY1: MOV

42、 AL , 00H MOV DX , ROWPORT ;ROWPORT为行线为行线 ;端口地址端口地址 OUT DX , AL ;使所有行线为低使所有行线为低 MOV DX , COLPORT ; COLPORT为列线为列线 ;端口地址端口地址 IN AL , DX ;读取列值读取列值 CMP AL , 0FFH ;判定是否有列线为低电平判定是否有列线为低电平 JZ KEY1 ;没有没有,无闭合键无闭合键,则循环等待则循环等待 CALL DELAY ;有有, 则延迟则延迟20ms清除抖动清除抖动 键盘扫描程序的第二步键盘扫描程序的第二步键盘扫描程序的第二步键盘扫描程序的第二步是逐行扫描以判是逐

43、行扫描以判是逐行扫描以判是逐行扫描以判断哪一个键被按下了。开始时,将计数值设断哪一个键被按下了。开始时,将计数值设断哪一个键被按下了。开始时,将计数值设断哪一个键被按下了。开始时,将计数值设置为行数。扫描初值置为行数。扫描初值置为行数。扫描初值置为行数。扫描初值1111111011111110使第使第使第使第0 0行为低电行为低电行为低电行为低电平,其它行为高。输出扫描初值后,马上读平,其它行为高。输出扫描初值后,马上读平,其它行为高。输出扫描初值后,马上读平,其它行为高。输出扫描初值后,马上读取列线的值,看是否有列线处于低电平。若取列线的值,看是否有列线处于低电平。若取列线的值,看是否有列线

44、处于低电平。若取列线的值,看是否有列线处于低电平。若无,则将扫描初值循环左移一位,变为无,则将扫描初值循环左移一位,变为无,则将扫描初值循环左移一位,变为无,则将扫描初值循环左移一位,变为1111110111111101,同时,计数值减,同时,计数值减,同时,计数值减,同时,计数值减1 1,如此下去,直,如此下去,直,如此下去,直,如此下去,直到计数值为到计数值为到计数值为到计数值为0 0,或找到按键所在行时止,程序,或找到按键所在行时止,程序,或找到按键所在行时止,程序,或找到按键所在行时止,程序段如下:段如下:段如下:段如下: MOV AH , 0FEH ;扫描初值送;扫描初值送AH MO

45、V CX , 8 ;行数送;行数送CXKEY2: MOV AL , AH MOV DX , ROWPORT OUT DX , AL ;输出行值(扫描值);输出行值(扫描值) MOV DX , COLPORT IN AL , DX ;读进列值;读进列值 CMP AL , 0FFH ; 判断有无键按下判断有无键按下 JNZ KEY3 ;有,则转下一步处理有,则转下一步处理 ROL AH , 1 ; 无无 , 则修改扫描值则修改扫描值, ;准备下一行扫描准备下一行扫描 LOOP KEY2 ; 计计数数一一次次 , 未未扫扫完完8 行行, 则则 继续循环继续循环 JMP KEY1 ; 所所有有行行都都

46、没没有有键键按按下下,则则 返回继续检测返回继续检测KEY3: ; 进进行行后后续续, 处处理理此此时时AL=列列值值, AH=行值行值 ; 将行线接一个数据端口,先让它工作在输将行线接一个数据端口,先让它工作在输将行线接一个数据端口,先让它工作在输将行线接一个数据端口,先让它工作在输出方式;将列线也接到一个数据端口,先让它出方式;将列线也接到一个数据端口,先让它出方式;将列线也接到一个数据端口,先让它出方式;将列线也接到一个数据端口,先让它工作在输入方式。程序使工作在输入方式。程序使工作在输入方式。程序使工作在输入方式。程序使CPUCPU通过输出端口往通过输出端口往通过输出端口往通过输出端口

47、往各行线上送低电平,然后读入列线值。如果此各行线上送低电平,然后读入列线值。如果此各行线上送低电平,然后读入列线值。如果此各行线上送低电平,然后读入列线值。如果此时有某键被按下,则程序再对两个端口进行方时有某键被按下,则程序再对两个端口进行方时有某键被按下,则程序再对两个端口进行方时有某键被按下,则程序再对两个端口进行方式设置,使接行线的端口改为输入方式,接列式设置,使接行线的端口改为输入方式,接列式设置,使接行线的端口改为输入方式,接列式设置,使接行线的端口改为输入方式,接列线的端口改为输出方式。并将刚才读得的列值线的端口改为输出方式。并将刚才读得的列值线的端口改为输出方式。并将刚才读得的列

48、值线的端口改为输出方式。并将刚才读得的列值从列线所接端口输出,再读取行线的输入值,从列线所接端口输出,再读取行线的输入值,从列线所接端口输出,再读取行线的输入值,从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为那么,闭合键所在的行线值必定为那么,闭合键所在的行线值必定为那么,闭合键所在的行线值必定为0 0。 (2) 行反转法行反转法 这样,当一个键被按下时,必定这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。但可以读得一对唯一的行值和列值。但是,要实现上述行反转法,行、列线是,要实现上述行反转法,行、列线所接的数据端口应能够改变输入、输所接的数据端口应能够改变输

49、入、输出方式出方式,而而8255A的的3个端口正好具有个端口正好具有这个功能。这个功能。 为了查找键代码,键盘程序设计时,可将各为了查找键代码,键盘程序设计时,可将各为了查找键代码,键盘程序设计时,可将各为了查找键代码,键盘程序设计时,可将各个键对应的行、列值放在一个表中,程序通过查个键对应的行、列值放在一个表中,程序通过查个键对应的行、列值放在一个表中,程序通过查个键对应的行、列值放在一个表中,程序通过查表来确定哪一个键被按下,进而在另一个表中找表来确定哪一个键被按下,进而在另一个表中找表来确定哪一个键被按下,进而在另一个表中找表来确定哪一个键被按下,进而在另一个表中找到这个键的代码。到这个

50、键的代码。到这个键的代码。到这个键的代码。 如果遇到多个键同时闭合的情况,则输入的如果遇到多个键同时闭合的情况,则输入的如果遇到多个键同时闭合的情况,则输入的如果遇到多个键同时闭合的情况,则输入的行值或者列值中一定有一个以上的行值或者列值中一定有一个以上的行值或者列值中一定有一个以上的行值或者列值中一定有一个以上的0 0,而由程序,而由程序,而由程序,而由程序预先建立的键值表中不会有此值,因而可以判为预先建立的键值表中不会有此值,因而可以判为预先建立的键值表中不会有此值,因而可以判为预先建立的键值表中不会有此值,因而可以判为重键而重新查找。用这种方法可以方便地解决重重键而重新查找。用这种方法可

51、以方便地解决重重键而重新查找。用这种方法可以方便地解决重重键而重新查找。用这种方法可以方便地解决重键问题。键问题。键问题。键问题。KEY1: ;KEY1: ;设置行线接输出端口设置行线接输出端口设置行线接输出端口设置行线接输出端口ROWPORT,ROWPORT, ; ;列列列列线线线线接接接接输输输输入入入入端端端端口口口口COLPORT, COLPORT, 并并并并 ; ;判断是否有键按下判断是否有键按下判断是否有键按下判断是否有键按下KEY2: MOV AL , 00HKEY2: MOV AL , 00H MOV DX , ROWPORT MOV DX , ROWPORT OUT DX ,

52、 AL ; OUT DX , AL ; 行线全为低行线全为低行线全为低行线全为低 MOV DX , COLPORT MOV DX , COLPORT IN AL , DX ; IN AL , DX ; 读取列值读取列值读取列值读取列值 CMP AL , 0FFH CMP AL , 0FFH JZ KEY2 ; JZ KEY2 ; 无闭合键无闭合键无闭合键无闭合键 , , 循环等待循环等待循环等待循环等待 PUSH AX ; PUSH AX ; 有闭合键有闭合键有闭合键有闭合键 , , 保存列值保存列值保存列值保存列值 PUSH AX PUSH AX ; ;设置行线接输入端口设置行线接输入端口设

53、置行线接输入端口设置行线接输入端口ROWPORTROWPORT, ; ;列线接输出端口列线接输出端口列线接输出端口列线接输出端口COLPORT, COLPORT, MOV DX , COLPORTMOV DX , COLPORTPOP AXPOP AXOUT DX , AL ; OUT DX , AL ; 输出列值输出列值输出列值输出列值MOV DX , ROWPORTMOV DX , ROWPORTIN AL , DX ; IN AL , DX ; 读取行值读取行值读取行值读取行值 POP BX ; POP BX ; 结合行列值结合行列值结合行列值结合行列值 ,此时,此时,此时,此时MOV

54、AH , BL ; AL=MOV AH , BL ; AL=行值行值行值行值 ,AH=AH=列值列值列值列值 ; ;查找键代码查找键代码查找键代码查找键代码MOV SI , OFFSET TABLE ; TABLEMOV SI , OFFSET TABLE ; TABLE为键值表为键值表为键值表为键值表MOV MOV DI DI , , OFFSET OFFSET CHAR CHAR ; ; CHARCHAR为为为为键键键键对对对对应应应应的的的的代代代代码码码码表表表表 MOV CX , 64 ; MOV CX , 64 ; 键的个数键的个数键的个数键的个数KEY3: CMP AX, SI

55、;KEY3: CMP AX, SI ;与键值比较与键值比较与键值比较与键值比较 JZ KEY4 ; JZ KEY4 ; 相同相同相同相同 ,说明查到,说明查到,说明查到,说明查到 INC SI ; INC SI ;不相同不相同不相同不相同 ,继续比较,继续比较,继续比较,继续比较 INC SI INC SI INC DI INC DI LOOP KEY3 LOOP KEY3 JMP KEY1 ; JMP KEY1 ;全部比较完全部比较完全部比较完全部比较完, , 仍无相同仍无相同仍无相同仍无相同, , 说明是重键说明是重键说明是重键说明是重键 KEY4: MOV AL , DI ; KEY4:

56、 MOV AL , DI ; 获取键代码送获取键代码送获取键代码送获取键代码送ALAL ; ; 判断按键是否释放,没有则等待判断按键是否释放,没有则等待判断按键是否释放,没有则等待判断按键是否释放,没有则等待 CALL DELAY ; CALL DELAY ; 按键释放按键释放按键释放按键释放, , 延时消除抖动延时消除抖动延时消除抖动延时消除抖动 ; ;后续处理后续处理后续处理后续处理TABLE DW 0FEFEH ; TABLE DW 0FEFEH ; 键键键键0 0的行列值(键值)的行列值(键值)的行列值(键值)的行列值(键值) DW 0FDFEH ; DW 0FDFEH ;键键键键1

57、1的行列值的行列值的行列值的行列值 DW 0FBFEH ; DW 0FBFEH ;键键键键2 2的行列值的行列值的行列值的行列值 ; ;全部键的行列值全部键的行列值全部键的行列值全部键的行列值CHAR DB ;CHAR DB ;键键键键0 0的代码的代码的代码的代码 DB ; DB ;键键键键1 1的代码的代码的代码的代码 ; ;全部键的代码全部键的代码全部键的代码全部键的代码 当当当当用用用用手手手手按按按按下下下下一一一一个个个个键键键键时时时时,往往往往往往往往会会会会出出出出现现现现按按按按键键键键在在在在闭闭闭闭合合合合和和和和断断断断开开开开位位位位置置置置之之之之间间间间跳跳跳跳

58、几几几几下下下下才才才才稳稳稳稳定定定定到到到到闭闭闭闭合合合合状状状状态态态态的的的的情情情情况况况况;在在在在释释释释放放放放一一一一个个个个键键键键时时时时,也也也也会会会会出出出出现现现现类类类类似似似似的的的的情情情情况况况况,这这这这就就就就是是是是抖抖抖抖动动动动。抖抖抖抖动动动动持持持持续续续续时时时时间间间间随随随随操操操操作作作作员员员员而而而而异异异异,一一一一般般般般不不不不大大大大于于于于10ms10ms。抖抖抖抖动动动动问问问问题题题题不不不不解解解解决决决决就就就就会会会会引引引引起起起起对对对对闭闭闭闭合合合合键键键键的的的的错错错错误误误误识别。识别。识别。识

59、别。 利用硬件很容易消除抖动,如图利用硬件很容易消除抖动,如图利用硬件很容易消除抖动,如图利用硬件很容易消除抖动,如图11.1611.16的硬件的硬件的硬件的硬件消抖电路所示。消抖电路所示。消抖电路所示。消抖电路所示。3 3、抖动和重键问题、抖动和重键问题、抖动和重键问题、抖动和重键问题图图图图11.16 11.16 抖动和硬件消抖电路抖动和硬件消抖电路抖动和硬件消抖电路抖动和硬件消抖电路 所所谓谓重重键键就就是是指指两两个个或或多多个个键键同同时时闭闭合合。出出现现重重键键时时,读读取取的的键键值值必必然然出出现现有有一一个个以以上上的的0。于于是是就就产产生生了了到到底底识识别哪一个键的问

60、题。别哪一个键的问题。 对对重重键键问问题题的的处处理理,简简单单的的情情况况下下,可可以以不不予予识识别别,即即认认为为重重键键是是一一个个错错误误的按键。的按键。 通通通通常常常常情情情情况况况况,则则则则是是是是只只只只承承承承认认认认先先先先识识识识别别别别出出出出来来来来的的的的键键键键,对对对对此此此此时时时时同同同同时时时时按按按按下下下下的的的的其其其其它它它它键键键键均均均均不不不不作作作作识识识识别别别别,直直直直到到到到所所所所有有有有键键键键都都都都释释释释放放放放以以以以后后后后,才才才才读读读读入入入入下下下下一一一一个个个个键键键键,称称称称为为为为连连连连锁锁锁

61、锁法法法法。另另另另外外外外还还还还有有有有一一一一种种种种巡巡巡巡回回回回法法法法,它它它它的的的的基基基基本本本本思思思思想想想想是是是是:等等等等被被被被识识识识别别别别的的的的键键键键释释释释放放放放以以以以后后后后,就就就就可可可可以以以以对对对对其其其其它它它它闭闭闭闭合合合合键键键键作作作作识识识识别别别别,而而而而不不不不必必必必等等等等待待待待全全全全部部部部键键键键释释释释放放放放。显显显显然然然然巡巡巡巡回回回回法法法法比比比比较较较较适适适适合合合合于于于于快快快快速键入操作速键入操作速键入操作速键入操作。 LEDLED数数数数码码码码管管管管的的的的主主主主要要要要部

62、部部部分分分分是是是是七七七七段段段段发发发发光光光光二二二二极极极极管管管管,如如如如图图图图11.1711.17(a a)所所所所示示示示。这这这这七七七七段段段段发发发发光光光光二二二二极极极极管管管管分分分分别别别别称称称称为为为为a a、b b、c c、d d、e e、f f、g g,有有有有的的的的产产产产品品品品还还还还附附附附带带带带有有有有一一一一个个个个小小小小数数数数点点点点h h,通通通通过过过过7 7个个个个发发发发光光光光段段段段的的的的不不不不同同同同组组组组合合合合,可可可可以以以以显显显显示示示示0 09 9和和和和A AF F共共共共1616个个个个字字字字

63、母母母母数数数数字字字字或或或或其其其其它它它它异异异异形形形形字字字字符。符。符。符。三、三、8255A与与LED数码管接口数码管接口1 1、LEDLED数码管的工作原理数码管的工作原理数码管的工作原理数码管的工作原理 LEDLED数数数数码码码码管管管管有有有有共共共共阳阳阳阳极极极极、共共共共阴阴阴阴极极极极两两两两种种种种结结结结构构构构,如如如如图图图图11.17(b)11.17(b)和和和和(c)(c)所所所所示示示示。表表表表11.411.4表表表表示示示示了了了了共共共共阴阴阴阴极极极极与与与与共共共共阳阳阳阳极极极极结结结结构构构构字字字字符符符符0 0F F的的的的编编编编

64、码码码码表表表表。编编编编码码码码的的的的低低低低位为位为位为位为a a,高位为,高位为,高位为,高位为g g。 由由由由于于于于发发发发光光光光二二二二极极极极管管管管发发发发光光光光时时时时,通通通通过过过过的的的的平平平平均均均均电电电电流流流流为为为为10mA10mA20mA20mA,而而而而通通通通常常常常的的的的输输输输出出出出锁锁锁锁存存存存器器器器不不不不能能能能提提提提供供供供这这这这么么么么大大大大的的的的电电电电流流流流,所所所所以以以以LEDLED各各各各段段段段必必必必须须须须接接接接驱动电路,如图驱动电路,如图驱动电路,如图驱动电路,如图11.17(d)11.17(

65、d)所示。所示。所示。所示。(a)(a)数码管外型数码管外型数码管外型数码管外型 图图图图11.17 LED11.17 LED数码管数码管数码管数码管(b)(b)共阳极结构共阳极结构共阳极结构共阳极结构(d) (d) 与与与与8255A8255A的连接的连接的连接的连接 (c) (c) 共阴极结构共阴极结构共阴极结构共阴极结构 图图图图11.17 LED11.17 LED数码管数码管数码管数码管显示数字编码共阴极 共阳极 0 3FH C0H 1 06H F9H 2 5BH A4H 3 4FH B0H 4 66H 99H 5 6DH 92H 6 7DH 82H 7 07H F8H 8 7FH 8

66、0H 9 67H 98H A 77H 88H B 7CH 83H C 39H C6H D 5EH A1H E 79H 86H F 71H 8EH . 80H 7FH表表表表11.411.4七段七段七段七段LEDLED编码表编码表编码表编码表 为为为为了了了了将将将将一一一一位位位位十十十十六六六六进进进进制制制制数数数数在在在在一一一一个个个个LEDLED上上上上显显显显示示示示出出出出来来来来,就就就就需需需需要要要要将将将将十十十十六六六六进进进进制制制制数数数数译译译译为为为为LEDLED的的的的7 7位位位位显显显显示代码。示代码。示代码。示代码。 硬硬硬硬件件件件译译译译码码码码:采

67、采采采用用用用专专专专用用用用的的的的带带带带驱驱驱驱动动动动的的的的LEDLED段段段段译码器。译码器。译码器。译码器。 软软软软件件件件译译译译码码码码:在在在在程程程程序序序序设设设设计计计计时时时时,将将将将0 0F F这这这这1616个数字(也可为个数字(也可为个数字(也可为个数字(也可为0 09 9)对应的显示代码)对应的显示代码)对应的显示代码)对应的显示代码组成一个表。组成一个表。组成一个表。组成一个表。 比比比比如如如如,用用用用共共共共阴阴阴阴极极极极数数数数码码码码管管管管如如如如图图图图11.17(d)11.17(d)所所所所示示示示连连连连接接接接,则则则则0 0的的

68、的的显显显显示示示示代代代代码码码码为为为为3FH3FH,1 1的的的的显显显显示示示示代代代代码码码码为为为为06H06H,并并并并在在在在表表表表中中中中按按按按顺顺顺顺序序序序排排排排列列列列,则则则则要要要要显显显显示示示示的的的的数数数数字字字字可可可可以以以以很很很很方方方方便便便便地地地地通通通通过过过过80868086的的的的换换换换码码码码指指指指令令令令译码为该数字对应的显示代码。译码为该数字对应的显示代码。译码为该数字对应的显示代码。译码为该数字对应的显示代码。1 1 1 1位数字的位数字的位数字的位数字的LEDLEDLEDLED显示程序如下:显示程序如下:显示程序如下:

69、显示程序如下: MOV MOV BX BX , , OFFSET OFFSET BUFDATA BUFDATA ; ; BUFDATABUFDATA区区区区存存存存放放放放 待显示的数字待显示的数字待显示的数字待显示的数字 MOV AL , BX ; MOV AL , BX ; 取出要显示的数字取出要显示的数字取出要显示的数字取出要显示的数字 MOV BX , OFFSET TABLE ; MOV BX , OFFSET TABLE ;取显示代码表首地址取显示代码表首地址取显示代码表首地址取显示代码表首地址 XLAT ; XLAT ;换码为显示代码换码为显示代码换码为显示代码换码为显示代码 M

70、OV DX , PORT ;PORT MOV DX , PORT ;PORT为与数码管为与数码管为与数码管为与数码管 ; ;相接的端口地址相接的端口地址相接的端口地址相接的端口地址 OUT DX , AL ; OUT DX , AL ; 输出显示输出显示输出显示输出显示 TABLE DB 3FH , 06H , 5BH , ; TABLE DB 3FH , 06H , 5BH , ; 显示代码表显示代码表显示代码表显示代码表 实实实实际际际际使使使使用用用用时时时时,往往往往往往往往要要要要用用用用几几几几个个个个数数数数码码码码管管管管实实实实现现现现多多多多位位位位显显显显示示示示。如如如

71、如果果果果每每每每一一一一个个个个数数数数码码码码管管管管占占占占用用用用一一一一个个个个独独独独立立立立的的的的输输输输出出出出端端端端口口口口,将将将将占占占占用用用用太太太太多多多多的的的的通通通通道道道道,驱驱驱驱动动动动电电电电路路路路的的的的数数数数目目目目也很多。也很多。也很多。也很多。 图图图图11.1811.18是是是是多多多多位位位位显显显显示示示示的的的的接接接接口口口口电电电电路路路路示示示示意意意意图图图图,这这这这是是是是一一一一种种种种常常常常用用用用的的的的方方方方案案案案。在在在在这这这这种种种种方方方方案案案案中中中中,硬硬硬硬件件件件上上上上用用用用公公公

72、公共共共共的的的的驱驱驱驱动动动动电电电电路路路路来来来来驱驱驱驱动动动动各各各各数数数数码码码码管管管管;软软软软件件件件上上上上用用用用扫扫扫扫描方法实现数字显示描方法实现数字显示描方法实现数字显示描方法实现数字显示。2 2、多位显示、多位显示、多位显示、多位显示反反相相驱驱动动器器位位控控制制端端口口同同相相驱驱动动器器段段控控制制端端口口图图图图11.18 11.18 多位数码管显示接口示意图多位数码管显示接口示意图多位数码管显示接口示意图多位数码管显示接口示意图 从从从从图图图图中中中中可可可可以以以以看看看看到到到到,用用用用2 2个个个个8 8位位位位输输输输出出出出端端端端口口

73、口口就就就就可可可可以以以以实实实实现现现现8 8个个个个数数数数码码码码管管管管的的的的显显显显示示示示控控控控制制制制。其其其其中中中中,一一一一个个个个端端端端口口口口用用用用作作作作位位位位控控控控制制制制,即即即即控控控控制制制制哪哪哪哪个个个个(位位位位)数数数数码码码码管管管管显显显显示示示示。对对对对于于于于图图图图11.1811.18的的的的共共共共阳阳阳阳极极极极数数数数码码码码管管管管,当当当当位位位位控控控控制制制制端端端端口口口口的的的的控控控控制制制制码码码码某某某某位位位位为为为为低低低低电电电电平平平平时时时时,经经经经反反反反相相相相驱驱驱驱动动动动,便便便便

74、在在在在相相相相应应应应的的的的数数数数码码码码管管管管的的的的阳阳阳阳极极极极加加加加上上上上了了了了高高高高电电电电平平平平,这这这这个个个个数数数数码码码码管管管管就可以显示数据。就可以显示数据。就可以显示数据。就可以显示数据。 但但但但具具具具体体体体显显显显示示示示什什什什么么么么数数数数码码码码,则则则则由由由由另另另另一一一一个个个个端端端端口口口口,即即即即段段段段控控控控制制制制端端端端口口口口决决决决定定定定。段段段段控控控控制制制制端端端端口口口口通通通通过过过过段段段段驱驱驱驱动动动动电电电电路路路路送送送送出出出出显显显显示示示示代代代代码码码码到到到到数数数数码码码

75、码管管管管响响响响应应应应段段段段。此此此此端端端端口口口口由由由由8 8个个个个数数数数码码码码管管管管共共共共用用用用,因因因因此此此此当当当当CPUCPU送送送送出出出出一一一一个个个个显显显显示示示示代代代代码码码码时时时时,各各各各数数数数码码码码管管管管的的的的阴阴阴阴极极极极都都都都收收收收到到到到了了了了此此此此代代代代码码码码。但但但但是是是是,只只只只有有有有位位位位控控控控制制制制码码码码中中中中为为为为低低低低的的的的位位位位所所所所对对对对应应应应的的的的数数数数码码码码管管管管才才才才显显显显示示示示数数数数字,其它管子并不发光。字,其它管子并不发光。字,其它管子并

76、不发光。字,其它管子并不发光。 综综综综上上上上所所所所述述述述,只只只只要要要要CPUCPU通通通通过过过过段段段段控控控控制制制制端端端端口口口口送送送送出出出出段段段段代代代代码码码码,然然然然后后后后通通通通过过过过位位位位控控控控制制制制端端端端口口口口送送送送出出出出位位位位代代代代码码码码,指指指指定定定定的的的的数数数数码码码码管管管管便便便便显显显显示示示示相相相相应应应应的的的的数数数数字字字字。如如如如果果果果CPUCPU顺顺顺顺序序序序地地地地输输输输出出出出段段段段码码码码和和和和位位位位码码码码,依依依依次次次次让让让让每每每每个个个个数数数数码码码码管管管管显显显

77、显示示示示数数数数字字字字,并并并并不不不不断断断断地地地地重重重重复复复复,当当当当重重重重复复复复频频频频率率率率达达达达到到到到一一一一定定定定程程程程度度度度,利利利利用用用用人人人人眼眼眼眼的的的的视视视视觉觉觉觉暂暂暂暂留留留留特特特特性性性性,从数码管上便可见到相当稳定的数字显示。从数码管上便可见到相当稳定的数字显示。从数码管上便可见到相当稳定的数字显示。从数码管上便可见到相当稳定的数字显示。 程程程程序序序序设设设设计计计计时时时时可可可可以以以以开开开开辟辟辟辟一一一一个个个个BUFDATABUFDATA缓缓缓缓冲冲冲冲区区区区,依依依依次次次次存存存存放放放放要要要要显显显

78、显示示示示的的的的数数数数字字字字。还还还还需需需需要要要要建建建建立立立立一一一一个个个个显显显显示示示示代代代代码码码码表表表表TABLETABLE,依依依依次次次次存存存存放放放放0 0F F对对对对应应应应的的的的七七七七段段段段显显显显示示示示代代代代码码码码。显显显显示示示示代代代代码码码码是是是是和和和和硬硬硬硬件件件件连连连连接接接接有有有有关关关关的的的的,在在在在图图图图11.1811.18的的的的接接接接口口口口电电电电路路路路中中中中,数数数数字字字字0 0的的的的显显显显示示示示代代代代码码码码为为为为C0HC0H,1 1的显示代码为的显示代码为的显示代码为的显示代码

79、为F9HF9H,。 下面是一段将下面是一段将下面是一段将下面是一段将8 8位数码管依次显示一遍的子程序。位数码管依次显示一遍的子程序。位数码管依次显示一遍的子程序。位数码管依次显示一遍的子程序。 MOV DI , OFFSET BUFDATA ; MOV DI , OFFSET BUFDATA ;指向数字缓冲区指向数字缓冲区指向数字缓冲区指向数字缓冲区 MOV CL , 0FEH ; MOV CL , 0FEH ; 指向最右边数码管指向最右边数码管指向最右边数码管指向最右边数码管DISP: MOV AL , DI ; DISP: MOV AL , DI ; 取出数字取出数字取出数字取出数字 M

80、OV BX , OFFSET TABLE ; MOV BX , OFFSET TABLE ;指向显示代码表指向显示代码表指向显示代码表指向显示代码表 XLAT ; XLAT ;得到显示代码得到显示代码得到显示代码得到显示代码 MOV DX , SEGPORT MOV DX , SEGPORT ; ; SEGPORTSEGPORT为为为为段段段段控控控控制制制制 端口端口端口端口 OUT DX , AL ; OUT DX , AL ; 送出段码送出段码送出段码送出段码 MOV AL , CL ; MOV AL , CL ; 取出位显示代码取出位显示代码取出位显示代码取出位显示代码 MOV DX

81、, BITPORT ; BITPORT MOV DX , BITPORT ; BITPORT为位控制端口为位控制端口为位控制端口为位控制端口 OUT DX , AL ; OUT DX , AL ; 送出位码送出位码送出位码送出位码 CALL DELAY ; CALL DELAY ; 延时延时延时延时1ms1ms,让数码管有充分的点,让数码管有充分的点,让数码管有充分的点,让数码管有充分的点亮时间亮时间亮时间亮时间 INC DI ; INC DI ; 指向下一个数字指向下一个数字指向下一个数字指向下一个数字 ROL CL , 1 ; ROL CL , 1 ; 指向下一个数码管指向下一个数码管指向

82、下一个数码管指向下一个数码管 CMP CL , 0FEH ; CMP CL , 0FEH ; 是否指向最右边的数码管是否指向最右边的数码管是否指向最右边的数码管是否指向最右边的数码管 JNZ DISP ; JNZ DISP ; 没有,显示下一个数字没有,显示下一个数字没有,显示下一个数字没有,显示下一个数字 RET ; 8 RET ; 8位数码管都显示一遍位数码管都显示一遍位数码管都显示一遍位数码管都显示一遍 , , 返回返回返回返回 TABLE DB 0C0H , 0F9H , 0A4H , 0B0H ;TABLE DB 0C0H , 0F9H , 0A4H , 0B0H ;显示代码表显示代

83、码表显示代码表显示代码表 DB 99H , 92H , 82H , 0F8H DB 99H , 92H , 82H , 0F8H DB 80H , 98H , 88H , 83H DB 80H , 98H , 88H , 83H DB 0C6H , 0A1H , 86H , 8EH DB 0C6H , 0A1H , 86H , 8EHBUFDATA DB 8 DUP ( 0 ) ;BUFDATA DB 8 DUP ( 0 ) ;数字缓冲区数字缓冲区数字缓冲区数字缓冲区例例例例:设设设设8255A8255A的的的的端端端端口口口口地地地地址址址址为为为为344H347H344H347H。由由由由

84、1616个个个个按按按按键键键键组组组组成成成成4 4 4 4矩矩矩矩阵阵阵阵式式式式键键键键盘盘盘盘,编编编编写写写写程程程程序序序序读读读读取取取取按按按按键键键键( (定定定定义义义义键键键键值值值值为为为为0F)0F)将将将将键键键键值值值值写写写写入入入入输输输输出出出出口口口口,在在在在数码管上显示,以观察输入的键位。数码管上显示,以观察输入的键位。数码管上显示,以观察输入的键位。数码管上显示,以观察输入的键位。电路图如图所示。电路图如图所示。四、四、8255A与键盘与键盘/LED接口接口8255A与键盘和LED连接电路8255APB0PB1PB2PB3PB4PB5PB6PB7PC

85、7PC6PC5PC4PC3PC2PC1PC0LED3LED2LED1LED0+5VD0D7D0D7RDWRA0A1RSTCSIORIOWA0A1ResetY1程序流程如下:程序流程如下:开始在CRT上显示提示信息写8255A控制字80H字型码送B口延时且关指示灯写8255A控制字88H有键按下行扫描键盘列扫描键盘延时消抖等待释放S1S4按下否 退 出YNNY流程图相应程序如下:相应程序如下:DATA SEGMENTdisc DB 0BBH, 0A0H, 097H, 0B5H, 0ACH, 3DHDB 3FH, 0A1H, 0BFH, 0BDH, 0AFH, 3EH, 0B6HDB 1FH, 0

86、FH ; 0f 显示段码表显示段码表DISO DB Press any of the keys to quit ! . 24H; 提示信息提示信息DQQ DB 0DATA EndsCODE SEGMENTMAIN PROC FARASSUME CS:CODE DS:DATA START: MOV AL, 3 ; 清屏幕清屏幕MOV AH, 0INT 10HMOV AX, DATA ;显示提示信息;显示提示信息MOV DS, AXMOV AH, 2 ;光标定位;光标定位MOV BH, 0MOV DX, 0614HINT 10HMOV DX, OFFSET DISO;显示:;显示:“Press”Q

87、WE: MOV DX, 347H ;8255A控制寄存器初始化控制寄存器初始化MOV AL, 80H ;B口、口、C口设为输出口设为输出OUT DX, ALMOV DX, 345H ; 345H为为8255A的的B口地址口地址MOV BL, DQQMOV BH, 0MOV DI, BXMOV AL, DI;取;取0F显示字形码显示字形码OUT DX, AL;将显示字形码送;将显示字形码送B口口MOV DX,346H;8255A C口地址口地址MOV AL,0E0HOUT DX,AL;MOV BX,DLYC1LPO:MOV CX,DLYC2;延时;延时LP1:LOOP LP1DEC BXJNZ

88、LPOKS:MOV DX,350H;指示灯显示;指示灯显示MOV AL,DQQ;按下键的二进制值;按下键的二进制值OUT DX,ALMOV DX,347H;8255A初始化,写控制字初始化,写控制字88HMOV AL,88H; PC0PC3为输出,为输出,PC4PC7为输入为输入OUT DX,AL; B口输出,方式口输出,方式0,A口输出。口输出。KSLP:MOV DX,346H ; 读键盘读键盘IN AL,DXAND AL,0F0HCMP AL,0F0HJNE KP;有键按下,转处理判别;有键按下,转处理判别MOV DX,350H;若键未按,查;若键未按,查S1S4键是否退出键是否退出IN

89、AL,DXAND AL,0F0HCMP AL,0F0HJNE KPR ;S1S4任一健按下,则转任一健按下,则转KPR退出退出JMP KSLPKP:MOV CX,0F000H ;扫描键盘;扫描键盘KP0:LOOP KP0 ;消抖延时;消抖延时MOV DX,346HIN AL,DXAND AL,0F0HCMP AL,0F0HJE KSLP ;消抖后无键按下,则转回,视作干扰;消抖后无键按下,则转回,视作干扰MOV CX,0004H ;扫描;扫描4行行MOV DX,346HMOV BX,0F700H ;BH扫描输出行码,先扫第扫描输出行码,先扫第0行行(PC3=0) ;BL键值键值KP1:MOV

90、AL, BH; 行扫描行扫描OUT DX, ALIN AL, DXAND AL, 0F0HCMP AL, 0F0HJNE KP2 ; 是这一行的键按下,转出判断列是这一行的键按下,转出判断列ADD BL, 04H; 键值加键值加4ROR BH, 1 ; 准备扫描下一行准备扫描下一行LOOP KP1JMP QWE ;4行扫完未找到,转显示行扫完未找到,转显示KP2:MOV CX,0004H ;扫描;扫描4列列KP3:ROL AL,1 ;列扫描;列扫描TEST AL,01JZ KP4;AL=0,即是此列,转出,即是此列,转出INC BL;键值加;键值加1LOOP KP3KP4:MOV DQQ,BL

91、;键盘送显示缓存键盘送显示缓存KS5:MOV DX,346H;等待键释放;等待键释放IN AL,DXAND AL,0F0HCMP AL,0F0HJNE KS5;仍按下,继续等待;仍按下,继续等待MOV CX,0F000HKP6:LOOP KP6;消抖延时;消抖延时MOV DX,346HIN AL,DXAND AL,0F0HCMP AL,0F0HJNE KS5JMP QWE ;键处理结束;键处理结束KPR:MOV AL,0;退出;退出MOV DX,0350H;关所有的;关所有的LED灯灯OUT DX,ALMOV AX,4C00HINT 21HMain ENDPCODE ENDSEND START116

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号