《微机原理课件第13章人机交互设备及接口》由会员分享,可在线阅读,更多相关《微机原理课件第13章人机交互设备及接口(71页珍藏版)》请在金锄头文库上搜索。
1、第13章 人机交互设备及接口,本章学习目标 本章主要讲解常用的人机交互设备的工作原理、通过接口与CPU的连接方法,以及对这些设备的编程方法,主要包括: l 键盘的工作原理、与主机连接以及编程方法 l 鼠标的基本工作原理及编程方法 l 打印机的基本结构、工作原理以及编程方法 l 扫描仪、数码相机和触摸屏的工作原理及工作过程,第13章人机交互设备及接口,13.1 概述,13.2键盘与鼠标,13.3 视频显示接口,13.4 打印机接口,13.5 其它外设简介,13.1 概述,所谓人机交互设备,是指人和计算机之间建立联系、交流信息的有关输入/输出设备。这些输入/输出设备直接与人的运动器官(如手、口)或
2、感觉器官(如眼、耳)有关。通过它们、人们把要执行的命令和数据送给计算机。同时又从计算机获得易于理解的信息。所谓人机交换设备接口是指这些设备同计算机连接的用到的接口电路。 常规的人机交互设备有键盘、显示器(LCD显示器和CRT显示器等)、打印机、鼠标器等。这些设备的输入输出是以计算机为中心的、信息以二进制、十六进制码或ASCII码形式进行传送。这种形式,计算机容易接受和便于处理,但人接收和处理起来却不方便、必须通过大脑的思维、判断和转换。,13.2 键盘与鼠标,13.2.1 键盘及接口电路,13.2.2 PC机键盘接口,13.2.3 鼠标及接口电路,13.2.1 键盘及接口电路,键盘的分类 (1
3、)编码键盘 编码键盘带有必要的硬件电路,能自动提供按键的ASCII编码,并能将数据保持到新键控下为止,还有去抖动和防止多键、串键等保护装置。编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。 (2)非编码键盘 它仅仅是按行、列排列起来的矩阵开关,其它的工作如识别键、提供代码、去抖动等均由软件来解决。目前微型机中,一般为了降低成本,简化硬件电路,大多采用非编码键盘,所以下面仅介绍非编码键盘的接口电路。,键盘的工作原理 常用的非编码键盘有线性键盘和矩阵键盘。线性键盘是指其中每一个按键均有条输入线送到计算机的接口,若有N个键,则需N条输入线,如图所示。 简单线性键盘在键盘中
4、,为了检测哪个键被按下,通常用硬件方法或软硬件结合的方法,但无论采用哪种方法,非编码键盘必须解决如下问题: l 识别键盘矩阵中被按键; l 清除按键时产生的抖动干扰; l 防止键盘操作的串键错误; l 产生被按下键相应的编码。 常用的按键识别方法有:行扫描法、行反转法和行、列扫描法。,图13-1 简单线性键盘,图13-2 矩阵键盘,(1)行扫描法识别按键 行扫描法识别按键的过程是:首先判断是否有键被按下,即先进行全扫描,将所有行线置成低电平;然后扫描全部列线,如果扫描的列值全是高电平,则说明没有任何一个键被按下;如果读入的列值不是全1,则说明有键按下,再用逐行扫描的方法确定哪一个键被按下。先扫
5、描第一行,即置该行为低电平,其他行为高电平,然后检查列线,如果某条列线为低电平,则说明第一行与该列相交的位置上的按键被按下;如果所有列线全是高电平,则说明第一行没有键被按下,接着扫描第二行,以此类推,直到找到被按下的键。,(2)行反转法识别按键 图13-2 矩阵键盘 行反转法又称线反转法,利用一个可编程的并行接口(如8255A)来实现。其基本原理是:将行线接一个并行口,先让它工作在输出方式,将列线出接到一个并行口,先让它工作在输入方式。编程使CPU通过输出端口往各行线全部送低电平,然后读入列线的值。如果有某一个键被按下,则必有一条列线为低电平。然后进行线反转,通过编程对两个并行端口进行方式设置
6、,使连接行线的端口工作在输入方式,并将刚才读到的列线值通过所连接的并行口再输出到列线,然后读取行线的值,那么闭合键所对应的行线必为低电平,这样当一个键被按下时,就可以读到一对唯一的列值和行值。,3. 抖动和重键问题 在键盘设计时,除了对键码的识别外,还有两个问题需要解决:抖动和重键。 当用手按下一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。抖动的持续时间随操作员而异,不过通常总是不大于10ms。大家容易想到,抖动问题不解决就会引起对闭合键的错误识别。 去抖动电路如下图所示。,(a)键开关抖动图 (b)硬件消除抖动示
7、意图,13.2.2 PC机键盘接口,IBM PC键盘特点 IBM PC系列键盘具有两个基本特点: (1)按键均为无触点的电容开关: (2)PC系列键盘属于非编码键盘 PC系列键盘不是由硬件电路向CPU输出按键所对应的ASCII码值,而是由单片机扫描程序识别按键的当前位置,然后向键盘接口输出该键的扫描码。按键的识别、键值的确定以及键代码存入缓冲区等工作全部由软件完成。,PC系列机键盘主要由三种基本类型的键组成: l 字符数字键:包括26个大写英文字母和26个小写英文字母,数字09以用%、$、#等常用字符。 l 扩展功能键:如Home,End,Backspace,Delete,Insert,PgU
8、p,PgD以及功能键F1F10。 l 其它键键组合使用的控制键:如Alt,Ctrl,Shift等。 字符数字键给计算机传送一个ASCII码字符,而扩展功能键产生一个动作,如按下Home键能把光标移到屏屏幕的左上角,End键使光标移到屏幕上文本的末尾。,2.微机与键盘的接口 目前PC机上常用的键盘接口有3种,一种是老式的直径13mm的PC键盘接口;第二种是最常用的直径8mm的PS/2键盘接口;第三种是USB接口的键盘。 扫描码:按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,这个位置值称为按键的扫描码,通过数据线将8位扫描码送往主机。 计算机系统与键盘发生联系通过硬件中
9、断09H或软件中断16H。硬件中断09H是由按键动作引发的中断。在此中断中对所有键盘进行了扫描码定义。,3. 键盘缓冲区的作用 键盘与CPU通信时所使用的两个硬件中断程序,均借助于键盘缓冲区来传递键值。 键盘缓冲区的作用体现在以下两个方面: (1)可实现键盘实时输入要求。用户按键完全是随机的,开避键盘缓冲区就可以实现实时处理键入的要求。 (2)满足随机应用的需要。应用程序需要键盘输入的时刻不一定与按键同步,键盘缓冲区可协调键盘与应用程序间的同步问题。此外,键盘缓冲区满足操作员快速键入的要求。,4. 键盘中断调用 我们可以用BIOS中断,也可以用DOS中断进行键盘输入。下面分别讨论这两种键盘中断
10、。 (1)BIOS中断调用 类型16H的中断提供了基本的键盘操作,它的中断处理程序包括了3个不同的功能分别根据AH寄存器中的子功能号来确定。,l 0号功能 功能:从键盘读入一个字符 入口参数:0送AH 出口参数:AL中的内容为字符码,AH中的内容为扫描码。 l 1号功能 功能:读键盘缓冲区的字符 入口参数:1送AH 出口参数:如果ZF=0,则AL中的内容为字符码,AH中的内容为扫描码; 如果ZF=1,则缓冲区空。,l 2号功能 功能:读键盘状态字节 入口参数:2送AH 出口参数:AL中的内容为键盘状态字节功能:读键盘缓冲区的字符 Shif,Ctrl,Alt,Num Lock,Scroll,In
11、s和Caps Lock这些键不具有ASCII码,但按动了它们能改变其它键所产生的代码。BIOS调用INT 16H中的AH=2的功能可以把表示这些键状态的字节键盘状态字节(KB-FLAG)回送到AL寄存器中。其中高4位表示了键盘方式(Ins,Caps Lock, Num Lock,Scroll)是ON(1)还是OFF(0);低4位表示Alt,Shift和Ctrl键是否按动。这8个键有时又称为变换键。,D0=1 按下右Shift键 D1=1 按下左Shift键 D2=1 按下控制键C trl D3=1 按下Alt键 D4=1 Scroll Lock键状态已改变 D5=1 Num Lock键状态已改
12、变 D6=1 Caps Lock键状态已改变 D7=1 Insert键状态已改变,【例13.1】 下面给出一个利用键盘I/O功能的程序例。用INT 16H(AH=0)调用实现键盘输入字符。 DATA SEGMENT BUFF DB 100 DUP(?) MESS DB NO CHARACTER!,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,100 MOV BX,OFFSET BUFF ;设内存缓冲区首址,LOP1:MOV AH,1 PUSH CX MOV
13、CX,0 MOV DX,0 INT 1AH ;设置时间计数器值为0 LOP2: MOV AH,0 INT 1AH; ;读时间计数值 CMP DL,100 JNZ LOP2 ;定时时间未到,等待 MOV AH,1 INT 16H ;判有无键入字符 JZ DONE ;无键输入,则结束 MOV AH,0 INT 16H ;有键输入,则读出键的ASCII码 MOV BX,AL ;存入内存缓冲区 INC BX POP CX LOOP LOP1 ;100个未输完,转LOP1,JMP EN DONE: MOV DX,OFFSET MESS MOV AH, 09H INT 21H ;显示提示信息 EN: MO
14、V AH,4CH INT 21H CODE ENDS END START,(2)DOS功能调用 DOS系统功能调用都是通过INT 21H号中断调用实现的,和键盘有关的功能调用主要有: l 1号系统功能调用键盘输入并回显。 l 6号系统功能调用直接控制台输入输出字符。 l 7号系统功能调用直接控制台输入无回显 l 8号系统功能调用键盘输入无回显 l 0AH号系统功能调用字符串输入到缓冲区,【例13.2】 利用09H(字符串显示)和0AH号系统功能调用,实现人机对话。程序段如下。 DATA SEGMENT MESS DBWHAT IS YOUR NAME?,0AH,0DH,$ IN_BUF DB
15、81 DB ? DB 81 DUP(?) DATA ENDS STACK SEGMENT STA DB 100 DUP(?) TOP EQU $-STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX,MOV AX,STACK MOV SS,AX MOV SP,TOP DISP: MOV DX,OFFSET MESS MOV AH,09H INT 21H KEYI: MOV DX,OFFSET IN_BUF MOV AH,0AH INT 21H MOV DL,0AH MOV
16、 AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H,DISPO: LEA SI,IN_BUF INC SI MOV AL,SI CBW INC SI ADD SI,AX MOV BYTE PTR SI,$ MOV DX,OFFSET IN_BUF2 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START,13.2.3 鼠标及接口电路,鼠标工作原理 鼠标是一种快速定位器,利用鼠标可方便地定位光标在显示屏幕上的位置。当鼠标在平面上移动时,随着移动方向和快慢的变化,会产生两个在高低电平之间不断变化的脉冲信号,CPU