jlmao微机原理ch9并行接口part2.ppt
文本预览下载声明
2005-04-26 Kunming University of Science Technology 第九章 可编程外围接口芯片8255A及其应用-part2毛剑琳Department of Automationkm_mjl@ Outline 9.1 8255工作原理 ?? 结构和功能 ?? 控制字 ?? 工作方式和C口状态字 9.2 8255的应用举例 ?? 基本输入输出应用举例 ?? 键盘接口 ?? 七段LED显示器及接口电路 ?? 8255A在PC/XT机中的应用(自学) 一、基本输入/输出举例 在工业控制等实际应用中,经常需要检测某些开关量的状态。例如,在某一系统中,有8个开关K7~K0,要求不断检测它们的通断状态,并随时在发光二极管LED7~LED0上显示出来。开关断开,相应的LED点亮;开关合上,LED熄灭。我们选用8086CPU,8255A和74LS138译码器等芯片,构成如图所示的硬件电路,来实现上述功能。 硬件连接图 此问题的解决需要4步: 1、确定8255A的端口地址 2、初始化命令字 3、编制功能程序 4、 整理程序 Step 1: 确定8255A的端口地址 8255A的端口地址 =芯片的片选地址+片内地址 Step 2:初始化命令字 根据系统要求,确定端口的工作方式和I/O方式 PA口:基本I/O=方式0,输入 PB口:基本I/O=方式0,输出 PC口:未用 方式控制字为 初始化程序为: MOV DX, 0F6H ; 控制寄存器 MOV AL, ; 控制字 OUT DX, AL ; 写入控制字 Step 3: 编制功能程序 根据系统要求,工作流程如下: 检测键盘状态:读入PA口状态, 根据键盘状态,进行显示:输出状态到LED灯。 循环上述过程。 注意:输入状态和输出状态之间的关系 开关断开(1)=要求LED亮(1) 开关按下(0)=要求LED灭(0) 功能程序为: TEST_IT: MOV DX, 0F0H ; 指向A口 IN AL, DX ; 从A口读入开关状态 MOV DX, 0F2H ; 指向B口 OUT DX, AL ; B口控制LED,指示开关状态 JMP TEST_IT ; 循环检测 Step 4: 整理程序 系统程序如下: MOV DX, 0F6H ; 控制寄存器 MOV AL, ; 控制字 OUT DX, AL ; 写入控制字 TEST_IT: MOV DX, 0F0H ; 指向A口 IN AL, DX ; 从A口读入开关状态 MOV DX, 0F2H ; 指向B口 OUT DX, AL ; B口控制LED,指示开关状态 JMP TEST_IT ; 循环检测 二、键盘接口 键盘是最常用的外设。可以用来制造键盘的按键开关有好多种: 最常用的有机械式、薄膜式、电容式和霍尔效应式等4种。 从原理上讲,键盘的构成有以下方法: 一线一键的结构:如例一,每个键要用一条线,每8个开关还要占用一个8位的并行端口。一个具有64个键的键盘需要64条连线,与8个8位的并行端口相连。适用范围:仅有几个键的小键盘。 行列矩阵结构的键盘。下面以机械式开关构成的16个键的键盘为例,来讨论键盘接口的工作原理(这种原理对采用其它类型的开关的键盘也是适用的)。 1、行列矩阵式键盘示意图 键按下的检测原理 无键按下时,由于接到+5V的上拉电阻的作用,列线被置成高电平。 某键按下后,该键所在的行线和列线接通,如向被按下键所在行线输出低电平信号,对应列线也将为低电平。 当从B口读取列线信号时,便能检测到该列线上的低电平。读取B口的状态时,还能读到行线上的低电平信号。根据读入的行和列状态中低电平的位置,便能确定哪个键被压下。???? 2、键扫描过程 ① 检测是否所有键都松开,若没有则反复检测; ② 当所有键都松开,再检测是否有键压下,若无键按下则反复检测; ③ 若有键按下,要消除键抖动,确认有键按下; ④ 对按下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被按下了。如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。 ⑤ 该键释放后,再回到②。 3、键扫描中的方法 检测矩阵中是否有键压下的一种简单方法 自输出口A向所有行线输出0电平,再通过B口的低4位读取列值,若其中有0值,便是有
显示全部