630 likes | 814 Views
第七章 用户交互接口. 7.1 键盘接口 7.2 打印机接口 7.3 显示器接口. 本章学习目标. 键盘和键盘接口工作原理 打印机接口工作原理 MC6845 CRT 控制器 CGA 的显示模式和逻辑结构、显示程序. 7.1 键盘接口. 键盘: 是微型计算机系统中最基本的人机对话输入设备。 键盘按键: 有机械式、电容式、导电橡胶式、薄膜式等多种,但不管何种形式,其作用都是 一个使电路接通与断开的开关 。 键盘是矩阵式结构. 7.1. 键盘的矩阵式结构. 键盘的分类. 1.编码键盘 键盘 本身带有实现接口主要功能所必需的硬件电路。
E N D
第七章 用户交互接口 7.1 键盘接口 7.2 打印机接口 7.3 显示器接口
本章学习目标 • 键盘和键盘接口工作原理 • 打印机接口工作原理 • MC6845 CRT控制器 • CGA的显示模式和逻辑结构、显示程序
7.1键盘接口 键盘:是微型计算机系统中最基本的人机对话输入设备。 键盘按键:有机械式、电容式、导电橡胶式、薄膜式等多种,但不管何种形式,其作用都是一个使电路接通与断开的开关。 键盘是矩阵式结构
7.1 键盘的矩阵式结构
键盘的分类 1.编码键盘 键盘本身带有实现接口主要功能所必需的硬件电路。 2.非编码键盘 键盘只简单地提供按键开关的行列矩阵。
7.1 键盘接口的功能 键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。 (1)去抖动 每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5~20ms。 所谓去抖动是指在识别被按键和释放键时必须避开抖动状 态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。 去抖动问题可通过软件延时或硬件电路解决。
7.1 键盘接口的功能 (2)防串键 防串键是为了解决多个键同时按下或者前一按键没有释放 又有新键按下时产生的问题。 ①双键锁定:当检测到有两个或两个以上的键被按下时, 只把最后释放的键当作有效键,并产生相应键码。 ②N键轮回:当检测到有多个键被按下时,能根据发现它 们的顺序依次产生相应键的键码。
7.1 键盘接口的功能 (3)按键识别 ①行列扫描法:该方法的基本思想是,由程序对键盘进行逐行扫描,通过检测到的列输出的列输出状态来确定闭合键。 先列步进信号在第一列,后发行步电信号扫描一遍,查按键;没有时,列步进一次,然后行步进信号再扫描一遍…… ②行反转法:该方法的基本思想是通过行列颠倒两次扫描来识别闭合键。 先行全1,后列全0,读行值 先列全1,后行全0,读列值
7.1 键盘接口的功能 (4)键码产生 一般在内存区中键立一个键盘编码表,通过查表获得按键的键码。
工作原理:行列扫描法 CNT64=0: 行扫描 CNT32 CNT16 CNT08 CNT04 :0000—1111循环计数 74159行译码器:送脉冲步进信号→16根行线上
CNT64=1∧CNT32=0 : 列扫描 CNT04 CNT08 CNT16:000—111循环计数 74156列译码器:送脉冲步进信号→8根列线上
工作原理:行列扫描法 键按下:T1=1 8048停止扫描,行列当前计数值→扫描码
工作原理:行列扫描法 键按下:T1=1 8048停止扫描,行列当前计数值→扫描码 P21:CLOCK OUT 同步用键盘脉冲 P22:DATA OUT 按键串行扫描码 P10:监视时钟线状态 P11:监视数据线状态
2.键盘接口电路 7.1.1
7.1.1 接口功能: (1)串行接收键盘送来的扫描码,完成串并转换后保存。 (2)收妥一个键盘扫描码后,立即产生一个中断请求信号。 (3)保存的扫描码可供CPU读取,并通过软件进行相应转换 处理。 (4)接收CPU的命令,输出到键盘,并接收键盘回送的响应信号。
工作原理 7.1.1 (1)组成器件 移位REG:74LS322串行扫描码→并行扫描码
工作原理 (1)组成器件 7.1.1 时钟FF:74LS157 键盘时钟DIN1 移位时钟CLOCK 同步、适时、反向 PCLK
工作原理 (1)组成器件 7.1.1 中断FF:74S74 串行扫描码转换成并行扫描码时产生中断请求IRQ1
工作原理 (1)组成器件 7.1.1 8255: PA7~PA0,PB2,PB6,PB7把并行扫描码送到CPU
禁止串/并行转换输出 清LS322 下次中断允许移位 Q=0 IRQ1=0 允许键盘送进扫描码 LS322-OE LS322-CLR 1 74S74-R LS322-G=0 Q=1 (2)工作过程 7.1.1 ① 清键盘 PB7=1
LS175-Q2=1→LS322、74S74无时钟 7.1.1 (2)工作过程 ② 封锁时钟 & PB6=0 O·C门输出 禁止键盘时钟
LS322-OE=0 允许传入并出 — 7.1.1 (2)工作过程 ③ 允许键盘 PB7=0 解除LS322、74S74 清零端 PB6=0 键盘输入时钟经PCLK同步、延时、反相后作移位,中断时钟
8位扫描码→QA~QH “0” →QH=1 →74S74-1D IRQ1=1 中断请求 LS322-G=1 LS322不允许移位 74S74-Q=0 KBD DATA=0 LS157Q2:移位时钟 7.1.1 ④ 接收扫描码 8位扫描码“0” DIN2 DI 中 间
初始化程序对8255A的设置: MOV AL, 99H ;模式0、A口、C口输入,B口输出 OUT 63H, AL ;将方式控制字写控制寄存器 MOV AL, 80H ;PB7=1,PB6=0,清除LS322和中断请求触发器 OUT 61H, AL MOV AL, 40H ; PB7=1,PB6=1,允许LS322工作并输出 OUT 61H, AL IRQ1中断服务程序中扫描码的读取与控制 IN AL,60H ;读8255AA口获取扫描码 PUSH AX IN AL,61H ;读B口输出状态 MOV AH,AL OR AL,80H ;置PB7=1 OUT 61H,AL XCHG AH,AL OUT 61H,AL POP AX MOV AH,AL ……..
+5v 0列 3列 PA0 行0 PA1 行1 CPU 行2 8255A PA2 PB0 PB1 PB2 PB3 非编码键盘接口 本小节作业 假定有一个3×4的矩阵键盘通过并行接口芯片8255A与微机相连。8255A的A口定义为输出口,与键盘行线相连;B口定义为输入口,与键盘列线相连。接口硬件如图所示。设8255AA口地址为40H,B口地址为41H,控制寄存器地址为43H,编写实现接口有关功能的程序。 PA 11111110 11111101` 11111011
实现的功能 1.检查是否有键: 其方法是:输出扫描码,使所有行线为0。然后读入列线状态,检查是否有列线为0。若有,则表明有行线和列线接通,意味有键按下。 2.去抖动:当有键按下时,延时20ms左右,待抖动消失后,在稳定状态下进行被按键识别。 3.被按键识别:从第0行第0列开始,通过逐行扫描确定被按键的编号。 4.产生键码:根据扫描得到的键编号查找键盘编码表,获得与被按键功能对应的键码。
7.2 打印机接口(通用并行接口Centronics) DATA0~DATA7:8位并行数据输出打印。 4位输入/输出口 STROBE:打印机接收数据选通 AUTO FD XT:打印机自动走纸一行 INIT:打印机初始化 SLCT IN:CPU要送数据到打印机 5位输入口 ACK:数据已接收,可送新数据 SLCT:打印机处于联机状态 BUSY:打印机忙不能接收数据 PE:打印机检测到设备没有纸 ERROR:打印机检测到错误
LS155 双 2-4 译 码 器 2G 2Y0 WPA 378H 输出锁存数据U4:LS374 A3 A0 A & 2Y2 A4 WPC 37AH 输出锁存数据U7:LS174 A1 B A5 A6 A9 1Y0 RPA 378H 输入缓冲数据U3:LS244 A7 2C & AEN 1Y1 1G RPB 379H 输入缓冲状态U2-1G:LS240 A8 =1 1Y2 RPC 37AH 输入缓冲控制U2-2G:LS240 J1 1C A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 00 1 1/0 0 1 1 1 1 X 0 0 0 1 2Y0 378H WPA 1 1 0 1 1 1 1 X 1 0 0 1 2Y2 37AH WPC 1 1 0 1 1 1 1 X 0 0 1 0 1Y0 378H RPA 1 1 0 1 1 1 1 X 0 1 1 0 1Y1 379H RPB 1 1 0 1 1 1 1 X 1 0 1 0 1Y2 37AH RPC
LS155 双 2-4 译 码 器 2G 2Y0 WPA 378H 输出锁存数据U4:LS374 A3 A0 A & 2Y2 A4 WPC 37AH 输出锁存数据U7:LS174 A1 B A5 A6 A9 1Y0 RPA 378H 输入缓冲数据U3:LS244 A7 2C & AEN 1Y1 1G RPB 379H 输入缓冲状态U2-1G:LS240 A8 =1 1Y2 RPC 37AH 输入缓冲控制U2-2G:LS240 J1 1C A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 00 1 1/0 0 1 1 1 1 X 0 0 0 1 2Y0 378H WPA 1 1 0 1 1 1 1 X 1 0 0 1 2Y2 37AH WPC 1 1 0 1 1 1 1 X 0 0 1 0 1Y0 378H RPA 1 1 0 1 1 1 1 X 0 1 1 0 1Y1 379H RPB 1 1 0 1 1 1 1 X 1 0 1 0 1Y2 37AH RPC
7.3 显示器接口 7.3.1 光栅扫描图形显示系统概述 主 机 主 机 图 像 / 图 形 生 成 器 彩色表 彩色表 CRT CRT 图 像 / 图 形 生 成 器 … 颜色(亮度) 像素值 作图 命令 VRAM VRAM VRAM 存图 CRTC CRTC CRTC HSYNC VSYNC R R/W
ASCII 10H 28H 44H 82H FEH 82H 82H 00H A 编码 属性 7.3 • 根据主机画图命令在VRAM中生成图形的位图(bitmap) • 把图像输入设备输入的数字信息直接或间接(经过主存)送入VRAM 1.图像/图形生成器 2.显示缓存(VRAM) • (1)VRAM中位图数据(像素值) • 作为彩色表的地址,找出R、G、B、三原色亮度值→CRT • 直接作为三原色的亮度值→CRT (2)VRAM组织 ①图形与字符方式:图形位图和字符ASCII码存放在VRAM中
屏幕上一次同时显示的颜色数2n 位平面 n p1 p2 p3 … P1 P2 P3 Pm … Pm-1 pm 7.3.1 ②单显与彩显VRAM • 单色显示:每个像素1位 • 单色多灰度和彩色显示:每个像素用多位二进制表示 • 组合像素(packed-pixel):每个像素所有位在单个bank中 • 位平面(bit-plane)结构:像素每一位在不同的bank中(位平面) • 位平面:2—24个
FFH Color Index CRT上X·Y点 颜色号 45H 110001011000 1100 01011000 01000101 45H 表地址 R G B 00H 8个位平面,8位像素值 28=256 每帧可同时显示颜色数 12位颜色值 212=4096 CRT可以显示的颜色数 224=16.7M 真彩色 7.3.1 高速RAM,把像素值转换为R、G、B三原色的亮度值,即图像/视频信号,控制CRT电子束的通、断、强弱,形成与VRAM所存映像对应的可视画面。 3.彩色表
R G B I CD 7.3.1 • (1)复合监视器(RGB监视器):接收模拟信号 • 由R、G、B和同步信息组成复合信号在适配器中形成,由一根电缆传送到CRT,然后在CRT中分开。 • 精确分离彩色信号限制了分辨率 • EGA不直接支持复合监视器 • (2)数字RGB监视器:CD和ECD 4.CRT 一条传送低亮度电子束信号 R G B ECD 混合产生:高、 中、低亮度及 全暗 一条传送中亮度电子束信号
7.3.1 4.CRT • (3)模拟RGB监视器 • 在三根导线上分别传送RGB信号 • 信号亮度由导线上电压控制 • 色彩的数量基本无限,取决于适配器产生不同电压能力和眼睛区分不同 颜色的能力 • 多(同步)扫描频率监视器:可调整其扫描频率以适应适配器的频率。这样的CRT最高频率在30KHz之内 • ECD支持两种频率:15.74KHz(标准彩显),21.8KHz
7.3.1 通用图形控制芯片 一般功能:帧存储体的R、W、刷新控制,行、帧同步及消隐信号。 智能功能:线、弧、多边形,填区图形原语及窗口、视口控制。 例如,图形时序控制芯片MC 6845(1MHz) 5.CRTC
7.3.1 CRTC 6845 与微处理器接口的信号
7.3.1 CRTC 6845 连接刷新存储器和字符发生器的信号
7.3.1 CRTC 6845 CRT监视信号
7.3.1 • 产生RAM地址:MA0~MA13 VRAM 16MB • 产生ROM地址:RA0~RA4光栅地址信号 • 字符ROM低地址选字符点阵上一排点 • 水平同步信号:HSYNC 控制画面水平位置 水平回扫时间 • 垂直同步信号:VSYNC 控制画面垂直位置 垂直回扫时间 • 显示允许信号:DISPEN 光栅扫描处于有效显示区 • 光标输出信号: CURSOR 光标(R14 R15) • 光笔选通输入:LPSSTB 当前RAM地址送入光笔R:R16R17 • 编程监示器扫描方式:隔行或逐行扫描 • 硬件滚屏:编程改变VRAM中刷新起始地址 MC 6845 功能
7.3.2 显示方式和显示标准 1、显示方式 (1)字符显示方式(A/N) (2)图形显示方式(APA) 显示模式见课本286页表7.4 2.显示标准 MDA mode 7 CGA mode 0,1,2,3,4,5,6,7 EGA mode DH,EH,FH,10H,兼容CGA VGA mode 11H,12H,13H,兼容EGA TVGA mode 50H~5AH,5BH~62H,兼容VGA
显示器的显示标准 7.3.2
D7 D6 D5 D4 D3 D2 D1 D0 BI Red Green Blue I Red Green Blue 闪烁位 背景颜色 前景颜色 彩色文本方式字符属性 7.3.3CGA工作原理与编程 1、字符模式 显示器上的每个字符在视频缓冲区(VRAM)由2个字节表示,第一个字节是显示字符的ASCII码,而第二个字节是该显示字符的属性。 CGA的显存首址:B8000H,空间:16KB 偶字节地址(字符的ASCII)=B8000H+页起始偏移地址+160X行号+2X列号 奇字节地址(字符的属性)=B8000H+页起始偏移地址+160X行号+2X列号+1
7.3.3 下面是80x25字符显示子程序。AX:字符的属性和代码;DX:行号;BX:列号;CX:页起始偏移地址。 DIS_CHC PROC NEAR PUSH AX MOV AX,160 MUL DX SHL BX,1 ADD BX,AX ADD BX,CX MOV AX,B800H MOV ES,AX MOV DX,3DAH CLI WAIT1: IN AL,DX TEST AL,1 JNZ WAIT1 WAIT2: IN AL,DX TEST AL,1 JZ WAIT2 POP AX MOV ES:[BX],AL STI RET DIS_CHC ENDP
7.3.3 2、图形方式 (1)640X200分辨率 640X200=128000 16KB=128000 一位像素值对应一个像素点,而其像素位置由(行号、列号)表示,即(y,x) 行号:0~199 列号:0~639 偶行像素放在显示缓存的前8KB,奇行像素放在其后8KB 字节地址=B8000H+2000H X(行号mod2)+(行号/2)X50H+(列号/8) 位地址=7-(列号 mod 8) 列号 0 1 2 3 4 5 6 7 位号 D7 D6 D5 D4 D3 D2 D1 D0
7.3.3 编写按高分辨率模式显示一个像素的子程序。AX:行号;BX:列号。设像素显示信息是白色。 AND AX,1 JZ THERE ADD DX,2000H THERE: POP BX AND BX,007H MOV AL,CS:TABLE[BX] MOV BX,B800H MOV ES,BX OR ES:[DX],AL RET TABLE DB 80H,40H,20H,10H,08H ,04H,02H,01H DIS_PIXEL ENDP DIS_PIEXL PROC NEAR PUSH BX PUSH AX SHR BX,1 SHR BX,1 SHR BX,1 SHR AX,1 MOV CX,50H MUL CX ADD BX,AX MOV DX,BX POP AX
7.3.3 2、图形方式 (2)320X200分辨率 320X200=64000像素 16KB=128000位 每个像素用2位表示 D7 D6 D5 D4 D3 D2 D1 D0 像素0: C1 C0 1:C1 C0 2:C1 C0 3:C1 C0 行号:0~199 列号:0~319 字节地址=B8000H+2000H X (行号 mod 2)+(行号/2)X50H+(列号/4) 位地址=6-2X(列号 mod 4) 列号 0 1 2 3 位号 D6 D4 D2 D0 像素 0:C0 1:C0 2:C0 3:C0
3.CGA编程 7.3.3