第8章人机交互设备接口1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DB 64 DUP('STACK...') STACK ENDS DSEG SEGMENT PARA 'DATA' TABLE DW 262 ;C
DW 294 ;D DW 330 ;E DW 349 ;F DW 392 ;G DW 440 ;A DW 494 ;B DW 523 ;C DW 700 DSEG ENDS
CSEG SEGMENT PARA 'CODE‘
ASSUME CS:CSEG,DS:DSEG,SS:STACK
MAIN PROC FAR
MOV AX,DSEG
MOV DS,AX
NEW_NOTE: MOV AH,0 ;读取一个按键 INT 16H CMP AL,0DH ;判断刚才敲入的键是否是回车? JE EXIT ;是,退出 MOV BX,OFFSET TABLE
PUSH AX
;将AL中的扫描码入栈保存
IN AL,61H ;读B口原输出状态
MOV AH,AL
;暂存于AH
OR AL,80H ;置PB7=1,清除LS322T和中断请求触发器
OUT 61H,AL
POP AX ;弹出扫描码至AL中 MOV AH,AL ;AH中也为键扫描码键处理
实验二 微机键盘、8259与8255 综合实验
②线反转法:该方法的基本思想是通过行列颠倒两次扫描 来识别闭合键。 (4)键码产生
一般在内存区中键立一个键盘编码表,通过查表获得按键的键码。
二、PC微机键盘及接口
① 键盘由单片机、译码器和16行×8列的键开关矩阵三大 部分组成。
② 按键采用电容开关,即按键时的上下动作使电容量发 生变化,从而实现开关接通或断开的目的。
2.键盘接口电路
(1)接口功能
➢串行接收键盘送来的扫描码,完成串行转换后保存;
➢接收一个键盘扫描码后,立即产生一个中断请求信号;
➢保存的扫描码可供CPU读取,并通过软件进行相应转 换处理; ➢接收CPU的命令,输出到键盘,并接收键盘回送的响 应信号。 (2)接口电路
根据接口电路应完成的功能,接口电路可由串行并转换电路、 时钟同步电路、中断请求触发器及一些门电路组成。
实验目的:
1. 理解键盘的基本工作原理和过程。
2. 掌握8259中断控制器的工作原理、编程方 法。
3. 掌握中断服务程序的设计方法。
4. 熟悉8255作为数据接口和控制端信号引脚 的作用
实验内容
1、编写一键盘中断处理程序:计算键盘中断次 数,并用该程序替换系统键盘中断处理程序,使 当按键8次(键盘中断产生16次)后,显示中断次 数并结束应用。 2、置换系统的09H型中断服务程序,完成对键盘 中断次数的统计。在该中断服务程序中,必须对 键盘控制器(口地址61H)复位。复位键盘控制 器只需读出 端口61H的内容,并将最高位置1,再 写入该端口。此外,按键按下和抬起均会引起中 断,所以实际中断次数等于按键次数乘2。 3 、将按键的扫描码输出到屏幕上,并统计中断 次数。
;读入扫描码(用户可对此键值进行处理)
PUSH DX
MOV DL,AL
CALL SHWORD
POP DX
IN AL,61H
;读入控制字节
MOV AH,AL
OR AL,80H
OUT 61H,AL
;复位键盘
CLI
;关中断
MOV AL,61H
;中断结束命令送中断控制器
OUT 20H,AL
IRET
;中断返回
一、键盘接口的功能和原理 1. 接口功能
键盘接口必须具有去抖动、防串键、按键识别和键码产生 4个基本功能。 (1)去抖动
每个按键在按下或松开时,都会产生短时间的抖动。抖动的持 续时间与键的质量相关,一般为5~20ms。 所谓去抖动是指在识别被按键和释放键时必须避开抖动状 态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。 去抖动问题可通过软件延时或硬件电路解决。
XOR DX,DX
;清计数器
A1: STI
;开中断
CMP DX,10H
;是否按了8次键
JZ A2
;是,结束程序运行
JMP A1
;否则继续等待键盘中断
A2: PUSH DX
;保存计数值
CLI
;关中断
;恢复原中断向量 MOV AH,25H MOV AL,9 H ; MOV DX, OLD_SEG MOV DS,DX MOV DX, OLD_OFF INT 21H
MYINT ENDP
SHWORD PROC NEAR MOV CL,4
AGA: ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT2 ADD AL,7
NEXT2: ADD AL,30H MOV AH,0EH INT 10H
;2→16进制显示
LOOP AGA MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H RET SHWORD ENDP CODE ENDS END START
CMP AL,'1' JB NEW_NOTE ;小于转 CMP AL,'9' JA NEW_NOTE ;大于转
AND AX,0FH ;取AL低四位不变,其余为0 SHL AX,1 ;AX*2,没有这两句,按键跳一个 有音,因为TABLE中存储的是字节DW
SUB AX,2 ;AX-2 ,AX=(AX-1)*2
8255A PB7 PB6
CLK DATA RESET GND +5V
PCLK RESET
+5V
+5V
1
LS322
SE OA
DS OB
S/P
D0 D1
OE
CLR OH
CLK OH G
DQ CLK R
D
CLK R
Q
DQ CLK CLR PR Q
图8.5 微机键盘接口电路
8255A PA7 PA6
PA0
DATA SEGMENT OLD_OFF DW ? OLD_SEG DW ? MKBAK DB ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA
START PROC FAR
MOV AX,DATA
MOV DS,AX
IN AL,21H ;保留8259初始屏蔽字的状态
③ 它是一种由单片机扫描、编码的智能化键盘。 ④ 它是一个与主机箱分开的独立部件,通过一根五芯电
缆与主机相连接。 硬中断程序:中断号为09H,当按键动作引发IRQ1时,
该程序负责把键盘扫描码转换成ASCII码,然后存入键 盘缓冲区。
软中断程序INT 16H:ROM BIOS中的键盘功能调用程序,
该调用的功能是从键盘缓冲区取出按键产生的ASCII码。
该调用有三个功能号:0,1,2 0号:从键盘读一字符 al=字符ASCII码 ah=扫描码 1号:读键盘缓冲区的字符,影响ZF标志位 2号:取键盘状态字节 AL=状态字节
状态字节定义如下: INSERT CAPSLOCK NUMLOCK SCROLLLOCK ALT CTRL
LSHIFT RSHIFT
(2)防串键 防串键是为了解决多个键同时按下或者前一按键没有释放
又有新下时产生的问题。 ①双键锁定:当检测到有两个或两个以上的键被按下时,
只把最后释放的键当作有效键,并产生相应键码。 ②N键轮回:当检测到有多个键被按下时,能根据发现它
们的顺序依次产生相应键的键码。 (3)按键识别
①行扫描法:该方法的基本思想是,由程序对键盘进行逐 行扫描,通过检测到的列输出的状态来确定闭合键。
实验三 8253与键盘综合实验 模拟钢琴
实验目的:
1、了解键盘作为人机交互设备的基本功能 2、熟悉键盘操作的常用系统功能函数 3、键盘与8253的交互 实验内容:
通过键盘模拟钢琴琴键控制8253发声实 现钢琴的模拟弹奏
模拟钢琴程序代码
EXTRN SOUNDF:FAR STACK SEGMENT PARA 'STACK'
MOV SI,AX MOV DI,[BX][SI];子程序入口参数,频率 MOV BX,100 ;延时响
CALL SOUNDF
JMP NEW_NOTE
EXIT: MOV AH,4CH
INT 21H
MAIN ENDP
MOV MKBAK,AL
CLI
;关中断
AND AL,11111101B ;打开键盘屏蔽
OUT 21h,AL
;中断向量修改程序 MOV AH,35H ; 取原中断向量 MOV AL,9 H ; 9为键盘的中断类型号 INT 21H MOV OLD_OFF,BX ;保存原中断向量到字变量中 MOV BX,ES MOV OLD_SEG,BX MOV AH,25H ;设置新的中断向量 MOV AL,9 H MOV DX, SEG MYINT MOV DS,DX MOV DX, OFFSET MYINT INT 21H
MOV AL,MKBAK
;恢复系统8259屏蔽字
OUT 21h,AL
STI
;开中断
POP DX
;显示计数值
CALL SHWORD
MOV AX,4C00H
INT 21H
RET
START ENDP
MYINT PROC FAR
;自定义键盘中断处理程序
STI
;开中断
INC DX
;计数加一
IN AL,60H
IRQ1
初始化程序中对8255A的设置:
MOV AL,99H ;模式0,A口,C口输入,B口输出
OUT 63H,AL ;将方式控制字写控制寄存器
MOV AL,40H ;PB7=0,PB6=1, 允许LS322工作方式输出 OUT 61H,AL
IRQ1中断服务程序中扫描码的读取与控制: IN AL,60H ;读8255AA口获 取扫描码
DW 294 ;D DW 330 ;E DW 349 ;F DW 392 ;G DW 440 ;A DW 494 ;B DW 523 ;C DW 700 DSEG ENDS
CSEG SEGMENT PARA 'CODE‘
ASSUME CS:CSEG,DS:DSEG,SS:STACK
MAIN PROC FAR
MOV AX,DSEG
MOV DS,AX
NEW_NOTE: MOV AH,0 ;读取一个按键 INT 16H CMP AL,0DH ;判断刚才敲入的键是否是回车? JE EXIT ;是,退出 MOV BX,OFFSET TABLE
PUSH AX
;将AL中的扫描码入栈保存
IN AL,61H ;读B口原输出状态
MOV AH,AL
;暂存于AH
OR AL,80H ;置PB7=1,清除LS322T和中断请求触发器
OUT 61H,AL
POP AX ;弹出扫描码至AL中 MOV AH,AL ;AH中也为键扫描码键处理
实验二 微机键盘、8259与8255 综合实验
②线反转法:该方法的基本思想是通过行列颠倒两次扫描 来识别闭合键。 (4)键码产生
一般在内存区中键立一个键盘编码表,通过查表获得按键的键码。
二、PC微机键盘及接口
① 键盘由单片机、译码器和16行×8列的键开关矩阵三大 部分组成。
② 按键采用电容开关,即按键时的上下动作使电容量发 生变化,从而实现开关接通或断开的目的。
2.键盘接口电路
(1)接口功能
➢串行接收键盘送来的扫描码,完成串行转换后保存;
➢接收一个键盘扫描码后,立即产生一个中断请求信号;
➢保存的扫描码可供CPU读取,并通过软件进行相应转 换处理; ➢接收CPU的命令,输出到键盘,并接收键盘回送的响 应信号。 (2)接口电路
根据接口电路应完成的功能,接口电路可由串行并转换电路、 时钟同步电路、中断请求触发器及一些门电路组成。
实验目的:
1. 理解键盘的基本工作原理和过程。
2. 掌握8259中断控制器的工作原理、编程方 法。
3. 掌握中断服务程序的设计方法。
4. 熟悉8255作为数据接口和控制端信号引脚 的作用
实验内容
1、编写一键盘中断处理程序:计算键盘中断次 数,并用该程序替换系统键盘中断处理程序,使 当按键8次(键盘中断产生16次)后,显示中断次 数并结束应用。 2、置换系统的09H型中断服务程序,完成对键盘 中断次数的统计。在该中断服务程序中,必须对 键盘控制器(口地址61H)复位。复位键盘控制 器只需读出 端口61H的内容,并将最高位置1,再 写入该端口。此外,按键按下和抬起均会引起中 断,所以实际中断次数等于按键次数乘2。 3 、将按键的扫描码输出到屏幕上,并统计中断 次数。
;读入扫描码(用户可对此键值进行处理)
PUSH DX
MOV DL,AL
CALL SHWORD
POP DX
IN AL,61H
;读入控制字节
MOV AH,AL
OR AL,80H
OUT 61H,AL
;复位键盘
CLI
;关中断
MOV AL,61H
;中断结束命令送中断控制器
OUT 20H,AL
IRET
;中断返回
一、键盘接口的功能和原理 1. 接口功能
键盘接口必须具有去抖动、防串键、按键识别和键码产生 4个基本功能。 (1)去抖动
每个按键在按下或松开时,都会产生短时间的抖动。抖动的持 续时间与键的质量相关,一般为5~20ms。 所谓去抖动是指在识别被按键和释放键时必须避开抖动状 态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。 去抖动问题可通过软件延时或硬件电路解决。
XOR DX,DX
;清计数器
A1: STI
;开中断
CMP DX,10H
;是否按了8次键
JZ A2
;是,结束程序运行
JMP A1
;否则继续等待键盘中断
A2: PUSH DX
;保存计数值
CLI
;关中断
;恢复原中断向量 MOV AH,25H MOV AL,9 H ; MOV DX, OLD_SEG MOV DS,DX MOV DX, OLD_OFF INT 21H
MYINT ENDP
SHWORD PROC NEAR MOV CL,4
AGA: ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT2 ADD AL,7
NEXT2: ADD AL,30H MOV AH,0EH INT 10H
;2→16进制显示
LOOP AGA MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H RET SHWORD ENDP CODE ENDS END START
CMP AL,'1' JB NEW_NOTE ;小于转 CMP AL,'9' JA NEW_NOTE ;大于转
AND AX,0FH ;取AL低四位不变,其余为0 SHL AX,1 ;AX*2,没有这两句,按键跳一个 有音,因为TABLE中存储的是字节DW
SUB AX,2 ;AX-2 ,AX=(AX-1)*2
8255A PB7 PB6
CLK DATA RESET GND +5V
PCLK RESET
+5V
+5V
1
LS322
SE OA
DS OB
S/P
D0 D1
OE
CLR OH
CLK OH G
DQ CLK R
D
CLK R
Q
DQ CLK CLR PR Q
图8.5 微机键盘接口电路
8255A PA7 PA6
PA0
DATA SEGMENT OLD_OFF DW ? OLD_SEG DW ? MKBAK DB ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA
START PROC FAR
MOV AX,DATA
MOV DS,AX
IN AL,21H ;保留8259初始屏蔽字的状态
③ 它是一种由单片机扫描、编码的智能化键盘。 ④ 它是一个与主机箱分开的独立部件,通过一根五芯电
缆与主机相连接。 硬中断程序:中断号为09H,当按键动作引发IRQ1时,
该程序负责把键盘扫描码转换成ASCII码,然后存入键 盘缓冲区。
软中断程序INT 16H:ROM BIOS中的键盘功能调用程序,
该调用的功能是从键盘缓冲区取出按键产生的ASCII码。
该调用有三个功能号:0,1,2 0号:从键盘读一字符 al=字符ASCII码 ah=扫描码 1号:读键盘缓冲区的字符,影响ZF标志位 2号:取键盘状态字节 AL=状态字节
状态字节定义如下: INSERT CAPSLOCK NUMLOCK SCROLLLOCK ALT CTRL
LSHIFT RSHIFT
(2)防串键 防串键是为了解决多个键同时按下或者前一按键没有释放
又有新下时产生的问题。 ①双键锁定:当检测到有两个或两个以上的键被按下时,
只把最后释放的键当作有效键,并产生相应键码。 ②N键轮回:当检测到有多个键被按下时,能根据发现它
们的顺序依次产生相应键的键码。 (3)按键识别
①行扫描法:该方法的基本思想是,由程序对键盘进行逐 行扫描,通过检测到的列输出的状态来确定闭合键。
实验三 8253与键盘综合实验 模拟钢琴
实验目的:
1、了解键盘作为人机交互设备的基本功能 2、熟悉键盘操作的常用系统功能函数 3、键盘与8253的交互 实验内容:
通过键盘模拟钢琴琴键控制8253发声实 现钢琴的模拟弹奏
模拟钢琴程序代码
EXTRN SOUNDF:FAR STACK SEGMENT PARA 'STACK'
MOV SI,AX MOV DI,[BX][SI];子程序入口参数,频率 MOV BX,100 ;延时响
CALL SOUNDF
JMP NEW_NOTE
EXIT: MOV AH,4CH
INT 21H
MAIN ENDP
MOV MKBAK,AL
CLI
;关中断
AND AL,11111101B ;打开键盘屏蔽
OUT 21h,AL
;中断向量修改程序 MOV AH,35H ; 取原中断向量 MOV AL,9 H ; 9为键盘的中断类型号 INT 21H MOV OLD_OFF,BX ;保存原中断向量到字变量中 MOV BX,ES MOV OLD_SEG,BX MOV AH,25H ;设置新的中断向量 MOV AL,9 H MOV DX, SEG MYINT MOV DS,DX MOV DX, OFFSET MYINT INT 21H
MOV AL,MKBAK
;恢复系统8259屏蔽字
OUT 21h,AL
STI
;开中断
POP DX
;显示计数值
CALL SHWORD
MOV AX,4C00H
INT 21H
RET
START ENDP
MYINT PROC FAR
;自定义键盘中断处理程序
STI
;开中断
INC DX
;计数加一
IN AL,60H
IRQ1
初始化程序中对8255A的设置:
MOV AL,99H ;模式0,A口,C口输入,B口输出
OUT 63H,AL ;将方式控制字写控制寄存器
MOV AL,40H ;PB7=0,PB6=1, 允许LS322工作方式输出 OUT 61H,AL
IRQ1中断服务程序中扫描码的读取与控制: IN AL,60H ;读8255AA口获 取扫描码