1、1第 6 章 并行接口n教学重点n 8255A的工作方式和编程的工作方式和编程n 8255A的应用的应用n 简易键盘的扫描识别程序简易键盘的扫描识别程序n LED数码管的多位显示数码管的多位显示2并行数据传输方式n并行传输以计算机的字长为传输单位(通常是并行传输以计算机的字长为传输单位(通常是8位、位、16位或位或32位),一次传送位),一次传送1个字长的数据个字长的数据n并行传输并行传输微机系统中最基本的信息交换方法微机系统中最基本的信息交换方法n例如:系统板上各部件之间,接口电路板上各部件之例如:系统板上各部件之间,接口电路板上各部件之间间n适合于外部设备与微机之间进行近距离、大量适合于外
2、部设备与微机之间进行近距离、大量和快速的信息交换和快速的信息交换n例如:微机与并行接口打印机、磁盘驱动器例如:微机与并行接口打印机、磁盘驱动器36.1 并行接口电路8255An8255A是具有多种功能的可编程并行接口电路芯片是具有多种功能的可编程并行接口电路芯片n其内部最基本的接口部件是:其内部最基本的接口部件是:n三态缓冲器三态缓冲器n锁存器锁存器n此外,还包括与此外,还包括与CPU的联络电路及与外设的联络电路:的联络电路及与外设的联络电路:n状态寄存器状态寄存器n控制寄存器控制寄存器n端口译码电路端口译码电路n控制电路(如读写控制、中断控制)控制电路(如读写控制、中断控制)n8255有有3
3、个个8位的数据端口(位的数据端口(A/B/C),共),共24个个I/O引脚,引脚,各端口共有各端口共有3种输入输出工作方式种输入输出工作方式n基本输入基本输入/输出输出(A/B/C口)口)n选通输入或选通输出选通输入或选通输出(A/B口)口)n双向选通双向选通(A口)口)46.1.1 8255A的内部结构和引脚数据数据总线总线缓冲器缓冲器内部控制线内部控制线内部数据线内部数据线D0D7A组组控制控制A组组端口端口C上部上部B组组控制控制B组组端口端口BB组组端口端口C下部下部读写读写控制控制逻辑逻辑PC0PC3CL口口PB0PB7B口口PC4PC7CH口口PA0PA7A口口-RD-WRA0A1
4、-CSRESETA组组端口端口A51.连接外设的数据端口n端口端口A:PA0-PA7,8位端口,支持工作方式位端口,支持工作方式0、1、2n端口端口B:PB0-PB7,8位端口,支持工作方式位端口,支持工作方式0、1n端口端口C:PC0-PC7,拆分为两个拆分为两个4位端口,仅支持工作方式位端口,仅支持工作方式0n端口端口A:PA0-PA7(A组组控制控制)n常作数据端口使用,功能最强大常作数据端口使用,功能最强大n端口端口B:PB0-PB7(B组控制组控制)n常作数据端口使用常作数据端口使用n端口端口C:PC4-PC7(A组控制组控制),PC0-PC3(B组控制组控制)n可作数据、状态或控制
5、端口使用可作数据、状态或控制端口使用n可拆分成两个可拆分成两个4位端口分别输入或输出位端口分别输入或输出n每位可独立进行输出控制(位控制)每位可独立进行输出控制(位控制)n使用最灵活,较难掌握使用最灵活,较难掌握62.与处理器的接口-CS A1 A0I/O地址地址读操作读操作-RD写操作写操作-WR0 0 00 0 10 1 00 1 160H61H62H63H读端口读端口A读端口读端口B读端口读端口C非法非法写端口写端口A写端口写端口B写端口写端口C写写方式字方式字和和位控字位控字76.1.2 8255A的工作方式n方式方式0:基本输入输出方式基本输入输出方式(不带联络)(不带联络)n适用于
6、无条件传送和查询方式的接口电路适用于无条件传送和查询方式的接口电路n方式方式1:选通输入输出方式选通输入输出方式(带输入联络或输出(带输入联络或输出联络)联络)n适用于查询和中断方式的接口电路适用于查询和中断方式的接口电路n方式方式2:双向选通方式双向选通方式(同时带输入联络和输出(同时带输入联络和输出联络)联络)n适用于可双向传送数据的外设适用于可双向传送数据的外设n适用于查询和中断方式的接口电路适用于查询和中断方式的接口电路8方式0的输入时序(数据来自外设)外设提供数据外设提供数据输入端口输入端口D0D7-RD-CS、A1A0请体会这里请体会这里8255A的数据缓冲作用的数据缓冲作用数据数
7、据8255外设外设CPU内总线内总线外总线外总线9方式0的输出时序(数据来自CPU)-WRCPU数据数据数据数据输出端口输出端口D0D7-CS、A1A08255A对对CPU输出的数据进行锁存输出的数据进行锁存8255外设外设CPU内总线内总线外总线外总线10方式1输入引脚:端口APC4PC5PC3PA7PA0INTEAIBFAINTRA-STBA中断允许触发器中断允许触发器输入缓冲器满信号输入缓冲器满信号表示表示A口已经接收数据口已经接收数据数据选通信号数据选通信号表示外设已经准备好数据表示外设已经准备好数据中断请求信号中断请求信号请求请求CPU接收数据接收数据外设数据外设数据征用征用C口口3
8、引脚和引脚和1个控制位个控制位11方式1输入引脚:端口BPC2PC1PC0PB7PB0INTEBIBFBINTRB-STBB中断允许触发器中断允许触发器输入缓冲器满信号输入缓冲器满信号表示表示B口已经接收数据口已经接收数据数据选通信号数据选通信号表示外设已经准备好数据表示外设已经准备好数据中断请求信号中断请求信号请求请求CPU接收数据接收数据外设数据外设数据征用征用C口口3引脚和引脚和1个控制位个控制位12方式1 输入 联络信号n-STB选通信号,低电平有效选通信号,低电平有效n由外设提供的输入信号,当其有效时,将输入设备送由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至来的数据锁
9、存至8255A的输入锁存器的输入锁存器nIBF输入缓冲器满信号,高电平有效输入缓冲器满信号,高电平有效n8255A输出的联络信号。当其有效时,表示数据已输出的联络信号。当其有效时,表示数据已锁存在输入锁存器锁存在输入锁存器nINTR中断请求信号,高电平有效中断请求信号,高电平有效n8255A输出的信号,可用于向输出的信号,可用于向CPU提出中断请求,提出中断请求,要求要求CPU读取外设数据读取外设数据13方式1 输入 时序外设数据外设数据INTRIBF 数据数据输入端口输入端口D0D7-STB-RD-STB和和IBF是外设和是外设和8255A间的一对应答联络信号,间的一对应答联络信号,为的是可
10、靠地输入数据为的是可靠地输入数据14方式1中断控制n8255A的中断由中断允许触发器的中断由中断允许触发器INTE控制控制n置位允许中断,复位禁止中断置位允许中断,复位禁止中断n对对INTE的操作通过写入端口的操作通过写入端口C的对应位实现,的对应位实现,INTE触发器对应端口触发器对应端口C的位是作应答联络信号的位是作应答联络信号的输入信号的哪一位,只要对那一位置位的输入信号的哪一位,只要对那一位置位/复位复位就可以控制就可以控制INTE触发器触发器n选通输入方式下选通输入方式下n端口端口A的的INTEA对应对应PC4n端口端口B的的INTEB对应对应PC215方式1输出引脚:端口APC6P
11、C7PC3PA7PA0INTEA-OBFAINTRA-ACKA输出缓冲器满信号输出缓冲器满信号表示表示CPU已经输出了数据已经输出了数据外设响应信号外设响应信号表示外设已经接收到数据表示外设已经接收到数据中断请求信号中断请求信号请求请求CPU再次输出数据再次输出数据征用征用C口口3引脚和引脚和1个控制位个控制位中断允许触发器中断允许触发器通过位控通过位控PC6 设置设置INTEA输出数据输出数据16方式1输出引脚:端口BPC2PC1PC0PB7PB0INTEB-OBFBINTRB-ACKB输出缓冲器满信号输出缓冲器满信号表示表示CPU已经输出了数据已经输出了数据外设响应信号外设响应信号表示外设
12、已经接收到数据表示外设已经接收到数据中断请求信号中断请求信号请求请求CPU再次输出数据再次输出数据征用征用C口口3引脚和引脚和1个控制位个控制位中断允许触发器中断允许触发器通过位控通过位控PC2设置设置INTEB输出数据输出数据17方式1输出联络信号n-OBF输出缓冲器满信号,低电平有效输出缓冲器满信号,低电平有效n8255A输出给外设的一个控制信号,当其有效时,输出给外设的一个控制信号,当其有效时,表示表示CPU已将输出数据锁存在已将输出数据锁存在8255A指定的端口,外指定的端口,外设可以来取设可以来取n-ACK响应信号,低电平有效响应信号,低电平有效n外设提供的响应信号,通知外设提供的响
13、应信号,通知8255A其端口数据已被其端口数据已被外设接收外设接收nINTR中断请求信号,高有效中断请求信号,高有效n当输出设备已接受数据后,当输出设备已接受数据后,8255A输出此信号向输出此信号向CPU提出中断请求,要求提出中断请求,要求CPU继续提供数据继续提供数据端口端口A的的INTEA对应对应PC6端口端口B的的INTEB对应对应PC218方式1 输出 时序8255外设外设CPU内总线内总线外总线外总线 INTR CPU数据数据数据数据输出端口输出端口D0D7-WR-OBF-ACK-OBF和和-ACK是外设和是外设和8255A间的一对应答联络间的一对应答联络信号,为的是可靠地输出数据
14、信号,为的是可靠地输出数据19方式2 双向选通方式n方式方式2将方式将方式1的的选通输入选通输入与与选通输出选通输出功能组合功能组合成一个双向数据端口,可以发送数据和接收数成一个双向数据端口,可以发送数据和接收数据据n只有端口只有端口A可以工作于方式可以工作于方式2,需要利用端口,需要利用端口C的的5个信号线,其作用与方式个信号线,其作用与方式1相同相同n方式方式2的数据输入过程与方式的数据输入过程与方式1的输入方式一样的输入方式一样n方式方式2的数据输出过程与方式的数据输出过程与方式1的输出方式有一的输出方式有一点不同:数据输出时点不同:数据输出时8255A不是在不是在-OBF有效时有效时向
15、外设输出数据,而是在外设提供响应信号向外设输出数据,而是在外设提供响应信号-ACK有效时有效时才送出数据才送出数据20方式2 双向选通引脚PC6PC7PC3PA7PA0INTE1-OBFAINTRA-ACKAPC4PC5IBFA-STBAINTE2数据数据输入中断和输出中断输入中断和输出中断通过或门输出通过或门输出INTRA信号信号征用征用C口口5引脚和引脚和2个控制位个控制位中断允许触发器中断允许触发器(控制中断输出)(控制中断输出)通过位控通过位控PC6设置设置INTE1中断允许触发器中断允许触发器(控制中断输出)(控制中断输出)通过位控通过位控PC4设置设置INTE221方式2 双向选通
16、时序该例中:该例中:CPU先输出数据,再读取外设输入的数据先输出数据,再读取外设输入的数据 INTR 输出数据输出数据输入数据输入数据输入数据输入数据PA0PA7D0D7IBF-WR-OBF-ACK-STB-RD输出数据输出数据226.1.3 8255A的编程n初始化编程:只写初始化编程:只写 1 个方式控制字到控制口个方式控制字到控制口n控制口控制口I/O地址:地址:A1A011n工作过程中:通过数据端口对外设数据进行读写工作过程中:通过数据端口对外设数据进行读写n数据口数据口A、B和和C的的I/O地址,分别为:地址,分别为:00、01、10nIBM PC/XT机上,数据口机上,数据口A/B
17、/C和控制口的和控制口的I/O地地址分别为:址分别为:60H、61H、62H和和63H231.向控制口写方式字控制字格式D7D6D5D4D3D2D1D0101001011 A口工作方式口工作方式 00 方式方式0 01 方式方式1 1x 方式方式2A口输出口输出/输入输入0 输出输出1 输入输入 CH口输口输出出/输入输入0 输出输出1 输入输入 B口工作口工作方式方式0 方式方式0 1 方式方式1B口输口输出出/输入输入0 输出输出1 输入输入CL口输口输出出/输入输入0 输出输出1 输入输入A组控制组控制B组控制组控制表示:表示:A口方式口方式1输出,输出,CH口输出,口输出,B口方式口方
18、式1输出输出,CL口输入。口输入。B5h241.向控制口写方式字示例n要求:要求:nA口:方式口:方式1输入输入nCH口:输出口:输出nCL口:输入口:输入nB口:方式口:方式0输出输出n方式控制字:方式控制字:1 0110 001 B或或B1Hn初始化的程序段:初始化的程序段:mov dx,0fffeh;假设控制端口为假设控制端口为FFFEHmov al,0b1h;方式控制字方式控制字out dx,al;送到控制端口送到控制端口252.读写数据端口(A口/B口/C口)n初始化编程后:初始化编程后:n当数据端口作为输入接口时,当数据端口作为输入接口时,CPU执行输入执行输入IN指令,指令,CP
19、U将从输入设备得到外设数据将从输入设备得到外设数据n当数据端口作为输出接口时,当数据端口作为输出接口时,CPU执行输出执行输出OUT指令,将把指令,将把CPU的数据送给输出设备的数据送给输出设备n8255A具有锁存输出数据的能力具有锁存输出数据的能力n对设置为输出的端口同样可以输入(读)对设置为输出的端口同样可以输入(读)n此时不是读取外设数据,而是读取的是前次此时不是读取外设数据,而是读取的是前次CPU输出给外设的数据(锁存在锁存器中)输出给外设的数据(锁存在锁存器中)262.读写数据端口:示例n利用利用8255A的输出锁存能力,可实现对某一位的的输出锁存能力,可实现对某一位的输出控制输出控
20、制 n对输出端口对输出端口B的的PB7位置位的程序段:位置位的程序段:mov dx,0fffah;B端口假设端口假设为为FFFAHin al,dx;读出读出B端口原输出内容端口原输出内容or al,80h;使使PB71out dx,al;输出新的内容输出新的内容273.涉及C口的操作归纳1n在控制上,在控制上,C口上半部(口上半部(CH)和)和A口被编为口被编为A组,组,C口下口下半部(半部(CL)和)和B口被编为口被编为B组。即组。即它被拆分成它被拆分成两个两个4位端口位端口分别进行控制分别进行控制:n两个两个4位端口均位端口均只能工作于只能工作于方式方式0(指未被征用的引脚)(指未被征用的
21、引脚)n但可但可分别选择输入或者输出分别选择输入或者输出nC口具有唯一的地址,可按口具有唯一的地址,可按8位方式进行读位方式进行读/写写,此时:,此时:n设置为输出的引脚可读可写(输出锁存器)设置为输出的引脚可读可写(输出锁存器)n设置为输入的引脚可读(引脚)、写操作无意义设置为输入的引脚可读(引脚)、写操作无意义n在选通方式下,对被征用的引脚可读(分别映射到在选通方式下,对被征用的引脚可读(分别映射到中断允许位中断允许位、输入输入/输出缓冲器状态位输出缓冲器状态位、中断请求状态位中断请求状态位)。)。nC口还可通过口还可通过位控字位控字进行进行按位的写按位的写(只写(只写C口口1位):位):
22、n对设置为输出的引脚可写(输出锁存器)对设置为输出的引脚可写(输出锁存器)n在选通方式下,对被征用的输入引脚可写(映射到中断允许位)在选通方式下,对被征用的输入引脚可写(映射到中断允许位)283.涉及C口的操作归纳2n当当A和和B口工作在方式口工作在方式1或方式或方式2时,时,C口的口的部分引脚部分引脚或或全部引脚全部引脚将将被征用:被征用:nA口方式口方式1将征用将征用C口口3个引脚:个引脚:n输出:输出:PC6/PC7(输出联络)输出联络),PC3(中断)中断)n输入:输入:PC4/PC5(输入联络)输入联络),PC3(中断)中断)nB口方式口方式1将征用将征用C口口3个引脚:个引脚:n输
23、出:输出:PC2/PC1(输出联络)输出联络),PC0(中断中断)n输入:输入:PC2/PC1(输入联络)输入联络),PC0(中断中断)nA口方式口方式2将征用将征用5个引脚:个引脚:nPC4/PC5(输入联络),输入联络),PC6/PC7(输出联络输出联络),),PC3(中断)中断)nC口口未被征用未被征用的引脚仍将工作在的引脚仍将工作在方式方式0,但必须成组,但必须成组进行设置,即进行设置,即CH或或CL中的引脚必须同为输入或同中的引脚必须同为输入或同为输出。为输出。293.涉及C口的操作归纳3n对对C口的数据输出有两种办法口的数据输出有两种办法n向向C口口直接直接写字节数据写字节数据该数
24、据将被写进该数据将被写进C端口的输端口的输出锁存器中,并从设置为输出的引脚输出,但对设置出锁存器中,并从设置为输出的引脚输出,但对设置为输入的引脚无效。为输入的引脚无效。n向向控制口控制口写位控字写位控字使使C口设置为输出的某个引脚口设置为输出的某个引脚输出输出1或或0。n在选通方式下向在选通方式下向控制口控制口写位控字写位控字还可置位或复位还可置位或复位8255内部的中断允许触发器。在选通方式下,该触发内部的中断允许触发器。在选通方式下,该触发器已被映射在器已被映射在C口被征用的某个输入引脚上。口被征用的某个输入引脚上。30向控制口写入位控字n位控字位控字用于控制用于控制C口的口的输出引脚输
25、出引脚(CH/CL口工作于基本口工作于基本方式)或方式)或内部的中断允许位内部的中断允许位(A/B口工作于选通方式),口工作于选通方式),n位控字位控字应写入应写入8255的的控制口控制口,例如:,例如:mov al,0dh out 控制口控制口,aln当当CH工作在工作在非选通输出非选通输出方式时,令方式时,令PC6引脚引脚输出输出1;n当当A口工作在口工作在选通输出选通输出或或双向选通输出双向选通输出方式时,将相应的方式时,将相应的中断允许位中断允许位INTEA或或INTE1置置1(开中断)。(开中断)。D7D6D5D4D3D2D1D00标志标志xxx位编码位编码位位数据数据0 xxx11
26、00dh313.涉及C口的操作归纳4n读取读取C口数据有两种情况:口数据有两种情况:n针对未被针对未被A和和B端口征用的引脚端口征用的引脚:n将从定义为输入的位读到将从定义为输入的位读到引脚上的输入引脚上的输入信息信息n将从定义为输出的位读到前次将从定义为输出的位读到前次输出锁存的输出锁存的信息信息n针对已被针对已被A和和B端口征用作为联络线的引脚端口征用作为联络线的引脚:n将读到反映将读到反映8255A工作状态的工作状态的状态字状态字,其中包,其中包括:括:n数据缓冲器的状态(数据缓冲器的状态(-OBFx 或或 IBFx)n中断允许的状态(中断允许的状态(INTEx)n中断请求的状态(中断请
27、求的状态(INTRx)326.2 8255A的应用n作为通用的并行接口电路芯片,作为通用的并行接口电路芯片,825A具具有广泛的应用,如有广泛的应用,如:n应用在应用在IBM PC/XT微机上微机上n应用于打印机接口电路应用于打印机接口电路n用于连接简易键盘用于连接简易键盘n用于驱动用于驱动LED数码管数码管n等等等等336.2.1 8255A在IBM PC/XT上的应用n工作在基本输入工作在基本输入/输出方式输出方式0n端口端口A为为方式方式0输入,用来读取键盘扫描码输入,用来读取键盘扫描码n端口端口B工作于工作于方式方式0输出,例如输出,例如控制扬声器控制扬声器等等n端口端口C为为方式方式
28、0输入,读取系统状态和配置输入,读取系统状态和配置n系统的初始化编程:系统的初始化编程:mov al,1 0011 001 b;方式控制方式控制字字99Hout 63h,al34打印机接口的信号与时序n主机把数据送给引脚主机把数据送给引脚DATA0DATA7n同时送出数据选通信号同时送出数据选通信号-STROBEn打印期间,打印机在打印期间,打印机在BUSY信号线上发出忙信号信号线上发出忙信号n打印机处理好输入的数据时打印机处理好输入的数据时n撤消忙信号撤消忙信号n同时又送出一个响应信号同时又送出一个响应信号-ACK35以打印机为例说明8255应用n打印机接口的信号与时序BUSY(出)出)DA
29、TA07(入)入)-ACK(出)出)-STROBE(入)入)打印机忙打印机响应一般用于查询一般用于查询一般用于选通一般用于选通366.2.2 用8255A方式0与打印机接口BUSY DATA078255APC7PC2PA0PA7打印机打印机-STROBE378255A的初始化mov dx,0fffeh;控制口地址:控制口地址:FFFEHmov al,1 0000 001B;方式控制字:方式控制字:91Hout dx,al;A口方式口方式0 输出,输出,CH输出、输出、CL输入输入mov al,0 000 111 1B;位控字,令位控字,令PC71,即即-STROBE=1(无效无效)out dx
30、,al例6.138打印子程序:查询printcprocpush axpush dxprn:mov dx,0fffch;读取端口读取端口Cin al,dx;查询打印机状态查询打印机状态and al,04h;测试测试PC2(BUSY)jnz prn ;为为1,打印机忙,则循环等待,打印机忙,则循环等待例6.139打印子程序:输出mov dx,0fff8h ;为为0,打印机不忙,则输出数据,打印机不忙,则输出数据mov al,ahout dx,al ;将打印数据从端口将打印数据从端口A输出输出例6.140打印子程序:打印mov dx,0fffeh;从从PC7送出控制负脉冲送出控制负脉冲mov al,
31、0 000 111 0B;置置-STROBE0(有效有效)out dx,alnop;产生一定宽度的负脉冲产生一定宽度的负脉冲nopmov al,0 000 111 1B;置置-STROBE=1(无效无效)out dx,al ;打印机打印机-STROBE端输入负脉冲端输入负脉冲例6.141打印子程序:返回pop dxpop axretprintcendp例6.1426.2.3 用8255A方式1与打印机接口1000pf2K15321441LS123单稳单稳电路电路+5VDATA078255APC6INTRPC3PC7PA0PA7打印机打印机-ACK-ACK-OBF-STROBE调整调整-STRO
32、BE负脉冲的宽度负脉冲的宽度438255A方式1与打印机接口时序配合PA0PA7(DATA07)-ACK-OBF-STROBE打印机在方式打印机在方式1 1工作时的时序工作时的时序448255A的初始化mov dx,0fffehmov al,0a0h ;方式字方式字1 0100 000out dx,almov al,0ch ;位控字,令位控字,令INTEA(PC6)为)为0,禁止中断,禁止中断out dx,almov cx,counter;打印字节数送打印字节数送CXmov bx,offset buffer;取字符串首地址取字符串首地址call prints;调用打印子程序调用打印子程序例6.
33、245打印子程序:输出printsprocpush ax;保护寄存器保护寄存器push dxprint1:mov al,bx;取一个数据取一个数据mov dx,0fff8hout dx,al;从端口从端口A输出输出 例6.246打印子程序:查询mov dx,0fffchprint2:in al,dxtest al,80h;检测检测PC7,即,即-OBFA状态状态jz print2;为为0,说明打印机方面未响应,说明打印机方面未响应,;继续检测继续检测 例6.247打印子程序:返回inc bx;为为1时打印机已接收数据时打印机已接收数据loop print1;准备输出下一个数据准备输出下一个数据
34、pop dx;打印结束,恢复寄存器打印结束,恢复寄存器pop axret;返回返回printsendp例6.2486.3 键盘及其接口n键盘是微机系统的标准输入设备键盘是微机系统的标准输入设备n编码键盘编码键盘:按键时自动产生编码输出,:按键时自动产生编码输出,比如比如PC键盘在键盘在,按键与释放会自动向,按键与释放会自动向CPU送出送出16位的编码。位的编码。n非编码键盘非编码键盘:按键时不会自动产生编码输出,:按键时不会自动产生编码输出,需要需要CPU主动去检查识别,在构成较为简单的主动去检查识别,在构成较为简单的嵌入式系统应用,以实现较为简单的数据输入,嵌入式系统应用,以实现较为简单的数
35、据输入,其结构可分为:其结构可分为:n简单按键简单按键每个按键连接每个按键连接1根根I/O线线n矩阵式键盘矩阵式键盘多根行及列多根行及列I/O线构成矩阵,按键线构成矩阵,按键跨接在交叉点上。跨接在交叉点上。496.3.1 非编码键盘线性键盘n线性键盘线性键盘n每个按键连接每个按键连接1个输入引个输入引脚脚n读入读入0时反映键被按下时反映键被按下n读入读入1时反映健未被按下时反映健未被按下n对对I/O引脚资源消耗大引脚资源消耗大+5V10K506.3.1 非编码键盘矩阵式键盘n矩阵式键盘矩阵式键盘n每行连接一个每行连接一个I/O引脚引脚n每列连接一个每列连接一个I/O引脚引脚n在行列交叉点上跨接
36、在行列交叉点上跨接按键按键n通过扫描识别按键通过扫描识别按键+5V10K检测线输入检测线输入控控制制线线输输出出511、逐行扫描法识别矩阵式键盘n粗扫粗扫n行线送全行线送全0,列线检测到全,列线检测到全1,说明无键按下;否则,说明无键按下;否则,有键按下,遂进入下一步逐行扫描。有键按下,遂进入下一步逐行扫描。n逐行扫描逐行扫描n某行送某行送0其余送其余送1,此时,此时若列线检测到全若列线检测到全1,说明,说明该行无键按下,换下一该行无键按下,换下一行继续扫描;若列线检行继续扫描;若列线检测到非全测到非全1,说明该行有,说明该行有键按下,通过组合此时键按下,通过组合此时的行码和列码可形成与的行码
37、和列码可形成与特定按键相对应的识别特定按键相对应的识别码。码。n通过查表环节可获得按通过查表环节可获得按键键值(按键的排列序键键值(按键的排列序号)。号)。+5V10K检测线输入检测线输入控控制制线线输输出出52第1段:是否有键按下key1:mov al,00mov dx,rowport;rowport为连接行线的端口地址为连接行线的端口地址out dx,al;使所有行线为低电平使所有行线为低电平 mov dx,colport;colport为连接列线的端口地址为连接列线的端口地址 in al,dx;读取列值读取列值cmp al,0ffh;判断列线是否读到全判断列线是否读到全1jz key1;
38、是,无闭合键,循环等待是,无闭合键,循环等待call delay;否,延迟否,延迟20ms清除抖动清除抖动键盘扫描程序53第2段:识别按键(扫描)mov cx,8;扫描行数送扫描行数送CXmov ah,0feh;第一行扫描初值送第一行扫描初值送AHkey2:mov al,ahmov dx,rowportout dx,al;输出行码(扫描码)输出行码(扫描码)mov dx,colportin al,dx;读到列码读到列码键盘扫描程序54第2段:识别按键(判断)cmp al,0ffh;判断列线是否全判断列线是否全1jnz key3;否,有按键,转下一步处理否,有按键,转下一步处理rol ah,1;
39、是,无按键,扫描码移位是,无按键,扫描码移位loop key2;拟扫下一行拟扫下一行jmp key1;所有行都没有键按下,返回粗扫所有行都没有键按下,返回粗扫key3:;此时,此时,al列码,列码,ah行码行码键盘扫描程序552.行列反转法识别矩阵式键盘n第一步第一步,先将,先将行线行线设为输出、列线设为检测输入设为输出、列线设为检测输入nCPU通过输出端口将通过输出端口将行线行线(控制线)全部设置为低电平,(控制线)全部设置为低电平,然后从输入端口读取然后从输入端口读取列线列线(检测线),若(检测线),若列码列码读到全读到全1说说明无键按下,否则有键按下,转第二步。明无键按下,否则有键按下,
40、转第二步。n第二步第二步,将,将行线行线和和列线列线作用反转,即作用反转,即列线列线设为输出,设为输出,行线行线设为检测输入。将前一步读到的设为检测输入。将前一步读到的列码列码从从列线列线端口输出,并端口输出,并读取读取行线行线的输入码(的输入码(行码行码)n当一个键被按下时,必然涉及一对特定的当一个键被按下时,必然涉及一对特定的行码行码和和列码列码,以,以此组成按键特定的此组成按键特定的识别码识别码,通过查表环节可获得按键键值。,通过查表环节可获得按键键值。条件:连接行线和列线的接口电路必须能动态地改条件:连接行线和列线的接口电路必须能动态地改变行线和列线的输入变行线和列线的输入/输出方式输
41、出方式56第1段:是否有键按下 ;设置行线接输出端口,列线接输入端口设置行线接输出端口,列线接输入端口key2:mov al,00mov dx,rowportout dx,al;设置行线输出全设置行线输出全0mov dx,colportin al,dx;读取列码读取列码cmp al,0ffh;判是否全判是否全1jz key2;是,无键闭合,循环等待是,无键闭合,循环等待push ax;否,有闭合键,保存列码否,有闭合键,保存列码 push ax键盘扫描程序57第2段:识别按键(反转法);重新设置行线接输入口,列线接输出口重新设置行线接输入口,列线接输出口mov dx,colportpop ax
42、out dx,al;输出前面保存的列码输出前面保存的列码mov dx,rowportin al,dx;读取行码读取行码pop bx;将行码、列码组合将行码、列码组合mov ah,bl;此时,此时,al行值,行值,ah列值列值键盘扫描程序58行列值表和键代码表 ;按键的识别码表按键的识别码表tabledw 0fefeh;键键0的识别码(的识别码(16位)位)dw 0fdfeh;键键1的识别码的识别码dw 0fbfeh;键键2的识别码的识别码;其他键的识别码其他键的识别码 ;按键键值表按键键值表chardb 0;键键0的键值的键值db 1;键键1的键值的键值db 2;键键2的键值的键值;其他键的键
43、值其他键的键值键盘扫描程序59第3段:查找键代码mov si,offset table;识别码表首址识别码表首址mov di,offset char;键值表表首址键值表表首址mov cx,64;CX键的总数键的总数key3:cmp ax,si;ax与表中识别码相比较与表中识别码相比较 jz key4;相同,说明找到,跳到相同,说明找到,跳到key4inc si;不同,继续比较不同,继续比较inc siinc diloop key3jmp key1;全部比较完,都不同,全部比较完,都不同,;说明是串键说明是串键键盘扫描程序60第4段:等待按键释放key4:mov al,di;获取键代码送获取键代
44、码送AL ;判断按键是否释放,没有则等待判断按键是否释放,没有则等待call delay ;按键释放,延时消除抖动按键释放,延时消除抖动 ;后续处理后续处理键盘扫描程序613.按键抖动和串键问题n机械按键按键和释放时存在机械按键按键和释放时存在按键按键抖动抖动现象现象n当键按下或释放时,因接触电阻的变化对数字电路当键按下或释放时,因接触电阻的变化对数字电路来说会导致输入的不确定性。来说会导致输入的不确定性。n抖动的持续时间通常不大于抖动的持续时间通常不大于10ms。n可采用可采用硬件消抖电路硬件消抖电路或软件延时的方法来或软件延时的方法来去抖去抖。n串键指两个或多个键同时闭合串键指两个或多个键
45、同时闭合n出现串键时,读取的码值中必然出现一个以上的出现串键时,读取的码值中必然出现一个以上的0n用户决定是否给予识别处理用户决定是否给予识别处理。62串键处理n认为是无效的按键认为是无效的按键不予识别不予识别n认为是有效的组合键认为是有效的组合键加以识别加以识别n只承认先识别出来的键只承认先识别出来的键n连锁法:直到所有键都释放后,读入下一个键连锁法:直到所有键都释放后,读入下一个键n巡回法:等被识别的键释放以后,就可以对其巡回法:等被识别的键释放以后,就可以对其他闭合键作识别,而不必等待全部键释放他闭合键作识别,而不必等待全部键释放636.4 LED数码管及其接口n发光二极管发光二极管LE
46、D是是最简单的显示设最简单的显示设备备n由由8段段LED组成的组成的LED数码管数码管nLED数码管广泛用于单板微型机、数码管广泛用于单板微型机、微型机控制系统及数字化仪器中微型机控制系统及数字化仪器中nLED数码管可以显示内存地址和数数码管可以显示内存地址和数据等据等641.LED数码管的工作原理n主要部分是主要部分是7段段LED发光管发光管n各段顺时针排列,分别称为各段顺时针排列,分别称为a、b、c、d、e、f、g、dp(或(或h,即即小数点,有时不用)小数点,有时不用)n通过通过7个发光段的不同组合可显个发光段的不同组合可显示示n可显示可显示09十个数码十个数码n也可以显示也可以显示AF
47、(实现实现16进制数进制数的显示)的显示)n还可以显示个别特殊字符,如、还可以显示个别特殊字符,如、P、H 等等abcdefg65LED数码管的结构共阳极共阳极共阳极共阳极+5Vabcdefgh共阴极共阴极abcdefgh共阴极共阴极662.单个LED数码管的显示8255APA0PA1PA2PA3PA4PA5PA6PA7同同相相驱驱动动电电路路abcdefghcom+5V对一般数字电路而言,其灌电流(输出低电平)的能力对一般数字电路而言,其灌电流(输出低电平)的能力要大于拉电流(输出高电平)的能力要大于拉电流(输出高电平)的能力共阳数码管共阳数码管送送0点亮点亮送送0点亮点亮67单个数码管的显
48、示LEDtbdb 0c0h,0f9h,0a4h;共阳七段码表共阳七段码表db mov al,1;要显示的数码在表中的位置要显示的数码在表中的位置mov bx,offset LEDtb;bx指向七段码表指向七段码表xlat;通过换码取要显示的七段码通过换码取要显示的七段码;alds:bxalmov dx,portout dx,al;输出七段码输出七段码软件译码683.多个LED数码管的显示n以动态扫描显示以动态扫描显示8个数码管为例个数码管为例n硬件硬件使用使用两两个个8位的输出端口,其中:位的输出端口,其中:n锁存输出七段码的端口,通过公用的段驱动电路来驱锁存输出七段码的端口,通过公用的段驱动
49、电路来驱动多个数码管各段动多个数码管各段n锁存输出位选通码的端口,每次只点亮一个数码管锁存输出位选通码的端口,每次只点亮一个数码管n软件软件用轮流点亮(扫描)的方法实现多位用轮流点亮(扫描)的方法实现多位数码显示,扫描频率应控制在数码显示,扫描频率应控制在16次次/秒以上,当秒以上,当扫描频率达扫描频率达50次次/秒时,显示将无闪烁感。秒时,显示将无闪烁感。69多个LED数码管的显示8锁存锁存同相同相驱动驱动锁存锁存反相反相驱动驱动七段码端口七段码端口位选通码端口位选通码端口8共阳共阳数码管数码管控制控制控制控制数据数据送送0时点亮相应段,时点亮相应段,七段码:七段码:1111 1001B 将
50、显示数码将显示数码“1”送送1时选通相应数码管,时选通相应数码管,选通码:选通码:0000 0001B 将选中最左边的数码管将选中最左边的数码管170段控制端口电路D0D1D2D3D4D5D6D7阳极阳极位位0a b c d e f g h位位1位位2段码D0D7段控制段控制锁锁存存/同同相相驱驱动动segport,-IOW71段控制端口作用n控制哪些控制哪些段段点亮,决定具体显示什么数码点亮,决定具体显示什么数码n段控制端口送出七段码到数码管段控制端段控制端口送出七段码到数码管段控制端n此端口为此端口为8个数码管的共用端口个数码管的共用端口段控制:段控制:Di0,相应段相应段点亮点亮D7D6