730 likes | 993 Views
第 9 章 人机交互设备及接口. 本章学习目标 本章主要讲解常用的人机交互设备的工作原理、通过接口与 CPU 的连接方法,以及对这些设备的编程方法,主要包括: l 键盘的工作原理、与主机连接以及编程方法 l 鼠标的基本工作原理及编程方法 l 打印机的基本结构、工作原理以及编程方法 l 扫描仪、数码相机和触摸屏的工作原理及工作过程. 第 9 章人机交互设备及接口. 9.1 概述. 9.2 键盘与鼠标. 9.3 视频显示接口. 9.4 打印机接口. 9.5 其它外设简介. 9.1 概述.
E N D
第9章 人机交互设备及接口 • 本章学习目标 • 本章主要讲解常用的人机交互设备的工作原理、通过接口与CPU的连接方法,以及对这些设备的编程方法,主要包括: • l键盘的工作原理、与主机连接以及编程方法 • l鼠标的基本工作原理及编程方法 • l打印机的基本结构、工作原理以及编程方法 • l扫描仪、数码相机和触摸屏的工作原理及工作过程
第9章人机交互设备及接口 9.1 概述 9.2键盘与鼠标 9.3 视频显示接口 9.4 打印机接口 9.5 其它外设简介
9.1 概述 所谓人机交互设备,是指人和计算机之间建立联系、交流信息的有关输入/输出设备。这些输入/输出设备直接与人的运动器官(如手、口)或感觉器官(如眼、耳)有关。通过它们、人们把要执行的命令和数据送给计算机。同时又从计算机获得易于理解的信息。所谓人机交换设备接口是指这些设备同计算机连接的用到的接口电路。 常规的人机交互设备有键盘、显示器(LCD显示器和CRT显示器等)、打印机、鼠标器等。这些设备的输入输出是以计算机为中心的、信息以二进制、十六进制码或ASCII码形式进行传送。这种形式,计算机容易接受和便于处理,但人接收和处理起来却不方便、必须通过大脑的思维、判断和转换。
9.2 键盘与鼠标 9.2.1 键盘及接口电路 9.2.2 PC机键盘接口 9.2.3 鼠标及接口电路
9.2.1 键盘及接口电路 • 键盘的分类 • (1)编码键盘 • 编码键盘带有必要的硬件电路,能自动提供按键的ASCII编码,并能将数据保持到新键控下为止,还有去抖动和防止多键、串键等保护装置。编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。 • (2)非编码键盘 • 它仅仅是按行、列排列起来的矩阵开关,其它的工作如识别键、提供代码、去抖动等均由软件来解决。目前微型机中,一般为了降低成本,简化硬件电路,大多采用非编码键盘,所以下面仅介绍非编码键盘的接口电路。
键盘的工作原理 • 常用的非编码键盘有线性键盘和矩阵键盘。线性键盘是指其中每一个按键均有—条输入线送到计算机的接口,若有N个键,则需N条输入线,如图所示。 • 简单线性键盘在键盘中,为了检测哪个键被按下,通常用硬件方法或软硬件结合的方法,但无论采用哪种方法,非编码键盘必须解决如下问题: • l识别键盘矩阵中被按键; • l清除按键时产生的抖动干扰; • l防止键盘操作的串键错误; • l产生被按下键相应的编码。 • 常用的按键识别方法有:行扫描法、行反转法和行、列扫描法。
(1)行扫描法识别按键 行扫描法识别按键的过程是:首先判断是否有键被按下,即先进行全扫描,将所有行线置成低电平;然后扫描全部列线,如果扫描的列值全是高电平,则说明没有任何一个键被按下;如果读入的列值不是全1,则说明有键按下,再用逐行扫描的方法确定哪一个键被按下。先扫描第一行,即置该行为低电平,其他行为高电平,然后检查列线,如果某条列线为低电平,则说明第一行与该列相交的位置上的按键被按下;如果所有列线全是高电平,则说明第一行没有键被按下,接着扫描第二行,以此类推,直到找到被按下的键。
(2)行反转法识别按键 图9-2 矩阵键盘 行反转法又称线反转法,利用一个可编程的并行接口(如8255A)来实现。其基本原理是:将行线接一个并行口,先让它工作在输出方式,将列线出接到一个并行口,先让它工作在输入方式。编程使CPU通过输出端口往各行线全部送低电平,然后读入列线的值。如果有某一个键被按下,则必有一条列线为低电平。然后进行线反转,通过编程对两个并行端口进行方式设置,使连接行线的端口工作在输入方式,并将刚才读到的列线值通过所连接的并行口再输出到列线,然后读取行线的值,那么闭合键所对应的行线必为低电平,这样当一个键被按下时,就可以读到一对唯一的列值和行值。
3. 抖动和重键问题 在键盘设计时,除了对键码的识别外,还有两个问题需要解决:抖动和重键。 当用手按下一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。抖动的持续时间随操作员而异,不过通常总是不大于10ms。大家容易想到,抖动问题不解决就会引起对闭合键的错误识别。 去抖动电路如下图所示。
(a)键开关抖动图 (b)硬件消除抖动示意图
9.2.2 PC机键盘接口 • IBM PC键盘特点 • IBM PC系列键盘具有两个基本特点: • (1)按键均为无触点的电容开关: • (2)PC系列键盘属于非编码键盘 • PC系列键盘不是由硬件电路向CPU输出按键所对应的ASCII码值,而是由单片机扫描程序识别按键的当前位置,然后向键盘接口输出该键的扫描码。按键的识别、键值的确定以及键代码存入缓冲区等工作全部由软件完成。
PC系列机键盘主要由三种基本类型的键组成: l字符数字键:包括26个大写英文字母和26个小写英文字母,数字0~9以用%、$、#等常用字符。 l扩展功能键:如Home,End,Backspace,Delete,Insert,PgUp,PgD以及功能键F1~F10。 l其它键键组合使用的控制键:如Alt,Ctrl,Shift等。 字符数字键给计算机传送一个ASCII码字符,而扩展功能键产生一个动作,如按下Home键能把光标移到屏屏幕的左上角,End键使光标移到屏幕上文本的末尾。
2.微机与键盘的接口 目前PC机上常用的键盘接口有3种,一种是老式的直径13mm的PC键盘接口;第二种是最常用的直径8mm的PS/2键盘接口;第三种是USB接口的键盘。 扫描码:按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,这个位置值称为按键的扫描码,通过数据线将8位扫描码送往主机。 计算机系统与键盘发生联系通过硬件中断09H或软件中断16H。硬件中断09H是由按键动作引发的中断。在此中断中对所有键盘进行了扫描码定义。
3. 键盘缓冲区的作用 键盘与CPU通信时所使用的两个硬件中断程序,均借助于键盘缓冲区来传递键值。 键盘缓冲区的作用体现在以下两个方面: (1)可实现键盘实时输入要求。用户按键完全是随机的,开避键盘缓冲区就可以实现实时处理键入的要求。 (2)满足随机应用的需要。应用程序需要键盘输入的时刻不一定与按键同步,键盘缓冲区可协调键盘与应用程序间的同步问题。此外,键盘缓冲区满足操作员快速键入的要求。
4. 键盘中断调用 我们可以用BIOS中断,也可以用DOS中断进行键盘输入。下面分别讨论这两种键盘中断。 (1)BIOS中断调用 类型16H的中断提供了基本的键盘操作,它的中断处理程序包括了3个不同的功能分别根据AH寄存器中的子功能号来确定。
l0号功能 • 功能:从键盘读入一个字符 • 入口参数:0送AH • 出口参数:AL中的内容为字符码,AH中的内容为扫描码。 • l1号功能 • 功能:读键盘缓冲区的字符 • 入口参数:1送AH • 出口参数:如果ZF=0,则AL中的内容为字符码,AH中的内容为扫描码; • 如果ZF=1,则缓冲区空。
l2号功能 • 功能:读键盘状态字节 • 入口参数:2送AH • 出口参数:AL中的内容为键盘状态字节功能:读键盘缓冲区的字符 • Shif,Ctrl,Alt,Num Lock,Scroll,Ins和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个键有时又称为变换键。
D7 D6 D5 D4 D3 D2 D1 D0 • D0=1 按下右Shift键D1=1 按下左Shift键 • D2=1 按下控制键C trl D3=1 按下Alt键 • D4=1 Scroll Lock键状态已改变 • D5=1 Num Lock键状态已改变 • D6=1 Caps Lock键状态已改变 • D7=1 Insert键状态已改变
【例9.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 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: MOV AH,4CH INT 21H CODE ENDS END START
(2)DOS功能调用 • DOS系统功能调用都是通过INT 21H号中断调用实现的,和键盘有关的功能调用主要有: • l1号系统功能调用-键盘输入并回显。 • l6号系统功能调用-直接控制台输入输出字符。 • l7号系统功能调用-直接控制台输入无回显 • l8号系统功能调用-键盘输入无回显 • l0AH号系统功能调用-字符串输入到缓冲区
【例9.2】 利用09H(字符串显示)和0AH号系统功能调用,实现人-机对话。程序段如下。 DATA SEGMENT MESS DB'WHAT IS YOUR NAME?',0AH,0DH,'$' IN_BUF DB 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 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_BUF+2 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
9.2.3 鼠标及接口电路 • 鼠标工作原理 • 鼠标是一种快速定位器,利用鼠标可方便地定位光标在显示屏幕上的位置。当鼠标在平面上移动时,随着移动方向和快慢的变化,会产生两个在高低电平之间不断变化的脉冲信号,CPU接收这两个脉冲信号并对其计数。根据接收到的两个脉冲信号的个数,CPU控制屏幕上的鼠标指针在横(X)轴、纵(Y)轴两个方向上移动距离的大小。脉冲信号是由鼠标内的半导体光敏器件产生的。 • 根据结构的不同,鼠标一般分为光机式和光电式,或称之为机械式和光学式鼠标。
2. 鼠标接口 鼠标接口分类:鼠标按接口分类主要有串口鼠标、USB鼠标及PS/2鼠标。 串口鼠标:串口鼠标一般采用RS—232C标准接口进行通信。 USB鼠标:由于USB设备具有即插即用,支持热插拔等优点,很多设备都采用了USB接口,鼠标也不例外。选择USB接口的鼠标先要考虑主机上是否具有空余的USB接口。 PS/2鼠标PS/2鼠标是最早用在IBM PS/2系列上的鼠标,并由此而得名。
3.鼠标编程应用: Microsoft为鼠标提供了一个软件中断指令INT33H,只要加载了支持该标准的鼠标驱动程序,在应用程序中可直接调用鼠标器进行操作。INT33H有多种功能,可通过在AX中设置功能号来选择。
9.3 视频显示接口 9.3.1 CRT显示器 9.3.2 CRT显示器接口电路编程方法 9.3.3 LED显示与LCD显示
9.3.1 CRT显示器 1. 显示器的分类 显示技术是传递视觉信息的技术。 根据显示原理的不同,目前至少已有6种类型的显示器:阴极射线显示器(CRT)、发光二极管显示器(LED)、液晶显示器(LCD)、等离子体显示器(PDP)、电致发光显示器(EL)、真空荧光显示器(VFD)。 2. CRT显示器性能指标 CRT显示器是目前台式机中最常用的显示设备,显示器的性能通过下面列出的有关显示器主要技术指标反映出来。
(1)尺寸:显示器的尺寸是指显示器屏幕的对角线的长度。 (2)分辨率:每帧画面的像素数决定了显示器画面的清晰度。分辨率(Resolution)是指整个屏幕每行每列的像素数,它与具体的显示模式有关。 (3)点距:在显示器中,最常用的两个参数是尺寸和点距,有时还包括最大分辨率。 (4)垂直扫描频率:显像管的电子束通过垂直扫描和水平扫描完成屏幕的重画,每完成一次垂直扫描就完成一个完整的屏幕刷新。垂直扫描频率(Vertical Scanning Frequency),又称场频、刷新领率,指显示器在某一显示方式下,所能完成的每秒从上到下刷新的次数,单位为H2。垂直扫描频率越高,图像越稳定,闪烁感越小。显示器使用垂直扫描频率在60-90Hz之间,一般在72HZ以上的刷新频率下,闪烁感明显减少,较好的彩显垂直扫描频率可达100 Hz。
(5)水平扫描频率:水平扫描频率(Horizontal Scanning Frequency)又称行频,指电子束每秒在屏幕上水平扫描的次数,单位为kHz。行频的范围越宽,可支持的分辨率就越高。 (6)隔行扫描和逐行扫描:水平扫描有两种方法,即隔行扫描和非隔行扫描(逐行扫描)方法。采用哪一种方法对显示器的性能影响很大,现在一般显示器都采用远行扫描法。隔行扫描的方法是电子枪先扫描奇数行,后扫描偶数行,由于一帧图像分两次扫描,所以屏幕有闪烁现象。逐行扫描指逐行一次性扫描完组成一帧图像 (7)带宽:带宽是显示器所能接收信号的频率范围,即最高频率和最低频率之差。它是评价显示器性能的很重要的参数之一。
4. 视频显示原理 在显示器上显示图像,实际上是在光栅扫描的过程中,将图像信号分解成按时间分布的视频信号去控制电子束在各条光栅位置上点的亮度和色彩。为使图像稳定且不消失,必须确保视频信号发送规律在时间上与水平和垂直同步扫描电流保持一致,同时,要把一帧图像存放在显示缓存中,以帧频的速率用缓存的内容刷新屏幕。 显示器可以实现字符和图形两种显示方式,无论哪一种方式,都要求将视频信息存储到VRAM中。
5. 视频显示标准 (1)MDA标准:MDA(Monochrome Display Adapter)是单色显示适配器。它是IBM规定的PC视频显示的第一个标准。 (2)CGA标准:CGA(Color Graphics Adapter)是彩色图形适配器。 (3)EGA标准:EGA(Enhanced Graphics Adapter)是增强图形适配器。 (4)VGA标准:VGA(Video Graphics Array)是视频图形阵列。 (5)TVGA标准:TVGA是Supper VGA产品,由Trident公司推出,它兼容VGA全部显示标准,并扩展了若干字符显示和图形显示的新标准,具有更高的分辨率和更多的色彩选择。
9.3.2 CRT显示器编程方法 1. 设置显示方式(0号功能) 功能:设置显示器的显示方式。 入口参数:(AH)=0,AL=设置方式(0~7)。 出口参数:无。 下面列出部分显示方式号: AL 显示方式 00 40×25黑白文本方式 01 40×25彩色文本方式 02 80×25黑白文本方式 03 80×25彩色文本方式 04 320×200 4色图形方式 05 320×200黑白图形方式 06 640×200黑白图形方式 07 80×25黑白文本方式(单色显示器)
【例9.3】 利用BIOS中断调用将显示器设置成80×25彩色文本方式。 指令序列如下: MOV AH,00H MOV AL,03H INT 10H
2. 设置光标类型(1号功能) 功能:根据CX给出光标的大小。 入口参数:(AH)=1,CH=光标开始行,CL=光标结束行。 出口参数:无。 3. 设置光标位置(2号功能) 功能:根据DX设定光标位置。 入口参数:(AH)=2,(BH)=页号,(DH)=行号,(DL)=列号。 出口参数:无。
4. 读当前光标位置(3号功能) 功能:读光标位置。 入口参数;(AH)=3,BH=页号。 出口参数:(DH)=行号,(DL)=列号,(CX)=光标大小。 5. 初始窗口或向上滚动(6号功能) 功能:屏幕或窗口向上滚动若干行。 入口参数:(AH)=6,AL=上滚行数,(CX)=上滚窗口左上角的行、列号。(DX)=上滚窗口右下角的行、列号。(BH)=空白行的属性。 出口参数:无。
6. 初始窗口或向下滚动(7号功能) 功能:屏幕或窗口向下滚动若干行。 入口参数:(AH)=7,(AL)=下滚行数,(CX)=下滚窗口左上角的行号、列号。(DX)=下滚窗口右下角的行号、列号。(BH)=空白行的属性。 出口参数:无。 7. 读当前光标位置的字符与属性(8号功能) 功能:读取当前光标位置的字符值与属性。 入口参数:AH=08H,BH=页号。 出口参数:AL为读出的字符,AH为字符属性。
D7 D6 D5 D4 D3 D2 D1 D0 8. 在当前光标位置写字符和属性(9号功能) 功能:在当前光标位置显示指定属性的字符。 入口参数:(AH)=9,(BH)=页号,(AL)=字符的ASCII码,(BL)=字符属性,(CX)=写入字符数。 出口参数:无。 属性字节具体描述如下:
数值 颜色 数值 颜色 000 黑 001 蓝 010 绿 011 青 100 红 101 绛 110 褐 111 浅灰 其中: D7:表示显示闪烁 D3:表示辉度 D6、D5、D4:表示背景颜色 D2、D1、D0:表示前景颜色 颜色值描述为:
9. 在当前光标位置写字符(10号功能) 功能:在当前光标位置显示字符。 入口参数:(AH)=0AH,(BH)=页号,(AL)=字符的ASCII码,(CX)=写入字符数。 出口参数:无。 功能同09号,只是不设置属性。 10. 设置彩色组或背景颜色(11号功能) 功能:设置背景颜色。 入口参数:(AH)=0BH,(BH)=0或1,BH为0时,设置背景颜色。当BH为1时 ,可设置彩色组,即为显示的像素点确定颜色组。
(BL)=背景颜色(0~15)或彩色组(0~1) 色彩代码为 00H为黑色 08H为灰色 01H为蓝色 09H为浅蓝色 02H为绿色 0AH为浅绿色 03H为青色 0BH为浅青色 04H为红色 0CH为浅青色 05H为绛色 0DH为浅绛色 06H为褐色 0EH为黄色 07H为浅灰 0FH为白色 出口参数:无。
【例9.4】 设置彩色图形方式,在屏幕中央显示一个带条纹的矩形。背景颜色设置为黄色,矩形边框设置为红色,横条颜色为绿色。 程序序列如下: CODE SEGMENT ASSUME CS:CODE START: MOV AH,0 MOV AL,4 ;设置320×200彩色图形方式 INT 10H MOV AH,0BH MOV BH,0 ;设置背景颜色为黄色 MOV BL,0EH INT 10H MOV DX,50 MOV CX,80 ;行号送DX,列号送CX CALL LINE1 ;调LINE1,显示矩形左边框
【例9.4】 设置彩色图形方式,在屏幕中央显示一个带条纹的矩形。背景颜色设置为黄色,矩形边框设置为红色,横条颜色为绿色。 程序序列如下: CODE SEGMENT ASSUME CS:CODE START: MOV AH,0 MOV AL,4 ;设置320×200彩色图形方式 INT 10H MOV AH,0BH MOV BH,0 ;设置背景颜色为黄色 MOV BL,0EH INT 10H MOV DX,50 MOV CX,80 ;行号送DX,列号送CX CALL LINE1 ;调LINE1,显示矩形左边框
【例9.4】 设置彩色图形方式,在屏幕中央显示一个带条纹的矩形。背景颜色设置为黄色,矩形边框设置为红色,横条颜色为绿色。 程序序列如下: CODE SEGMENT ASSUME CS:CODE START: MOV AH,0 MOV AL,4 ;设置320×200彩色图形方式 INT 10H MOV AH,0BH MOV BH,0 ;设置背景颜色为黄色 MOV BL,0EH INT 10H MOV DX,50 MOV CX,80 ;行号送DX,列号送CX CALL LINE1 ;调LINE1,显示矩形左边框
MOV DX,50 MOV CX,240 ;修改行号,列号 CALL LINE1 ;调LINE1,显示矩形右边框 MOV DX,50 MOV CX,81 ;置行号、列号 MOV AL,2 ;选择颜色为红色 CALL LINE2 ;调LINE2,显示矩形上边框 MOV DX,150 MOV CX,81 CALL LINE2 ;调LINE2,显示矩形下边框 MOV DX,60 LP3: MOV CX,81 ;置矩形内横线初始位置 MOV AL,1 ;选择横条颜色为绿色 CALL LINE2 ;调LINE2,显示绿色横线