微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 微机系统与接口技术综合实验报告 实验题目:模拟打字练习 二.摘要 用LED点阵显示器LDM1088AX来随机显示26个英文字母,以按a~ z26个键来模拟打字,如果在某个字母点亮期间按下相应字母键,表示打字 正确并熄灯,记录击中次数。 关键字:打字练习点阵8255A8253A中断 三.目标功能 1.用数字按键选择打字练习的速度(即点阵上字母刷新的速度 2.按键开始打字练习 3.点阵显示的字母以一定速度(如每1秒或2秒换一个字母)刷新,打字需 在该字母的点亮期间进行才算有效 4.若在某个字母的出现时间内未有打字动作,则该次打字失败,屏幕上显示 超时”; 5.若一次打字错误,屏幕上显示“错误”,并且在该字母未被更新之前还可 以进行第二次、第三次、。。打字动作 6.每次打字正确,屏幕上显示“正确”,微机发出一次短暂的鸣响,并将灯 全部熄灭,分数加1 7.按键退出打字过程,显示所得的分数: 8.退出后屏幕上显示继续游戏的提示 四.设计和实施方案 设计方案选择与讨论 (1)本实验通过对8253的设置,使之产生一定频率的波形,将该波形输出到 中断口IRQ。每次进入中断都刷新LED点阵上的字母显示,从而控制打字 练习的速度。通过改变8253的计数初值可以改变速度
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 1 - 微机系统与接口技术综合实验报告 一. 实验题目:模拟打字练习 二. 摘要: 用 LED 点阵显示器 LDM-1088AX 来随机显示 26 个英文字母,以按 a~ z 26 个键来模拟打字,如果在某个字母点亮期间按下相应字母键,表示打字 正确并熄灯,记录击中次数。 关键字: 打字练习 点阵 8255A 8253A 中断 三. 目标功能 1.用数字按键选择打字练习的速度(即点阵上字母刷新的速度); 2.按键开始打字练习; 3.点阵显示的字母以一定速度(如每 1 秒或 2 秒换一个字母)刷新,打字需 在该字母的点亮期间进行才算有效; 4.若在某个字母的出现时间内未有打字动作,则该次打字失败,屏幕上显示 “超时”; 5.若一次打字错误,屏幕上显示“错误”,并且在该字母未被更新之前还可 以进行第二次、第三次、。。。打字动作; 6.每次打字正确,屏幕上显示“正确”,微机发出一次短暂的鸣响,并将灯 全部熄灭,分数加 1; 7.按键退出打字过程,显示所得的分数; 8.退出后屏幕上显示继续游戏的提示。 四. 设计和实施方案 1. 设计方案选择与讨论 (1)本实验通过对 8253 的设置,使之产生一定频率的波形,将该波形输出到 中断口 IRQ。每次进入中断都刷新 LED 点阵上的字母显示,从而控制打字 练习的速度。通过改变 8253 的计数初值可以改变速度
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 2)8253通道1工作于方式3,输入1MHZ的时钟,设置分频系数为1000, 输出1KHZ的方波,此输出作为通道0的输入时钟。通道0工作于方式3 分频系数为用户输入的速度等级×1000。[注:速度等级:1--快速2- 中速3-7曼速] (2将8255的A口接到LED点阵的COL1-8,C口接到LED点阵的ROW1 8,每当进入中断,就把在数据段存好的字母的段码送到A口和C口,显 示相应的字母。 3)每个字母都需要分段循环显示,利用人眼的视觉暂留便可看见点阵上显示 整个字母。 (4)为避免中断服务程序过长,在写中断服务程序时,只需要把中断标志置 即可,其余操作可在主程序中进行。 (5)在字母显示期间,要不断读取按键输入,直到按键正确或进入下一次中断 (即表示该字母的出现时间已经结束),准备出现下一个字母 (6)在字母显示期间,若读入的按键是错误的,则在屏幕上显示“错误”,并 继续显示该字母,等待按键或中断;若未能在字母消失前按下正确的键,则 在屏幕上显示“超时”,并显示下一个字母;若在字母消失前按下正确的键, 则在屏幕上显示“正确”,往A口和C口输出00H,使字母消失,分数加1, 并准备显示下一个字母。 (7)在字母显示期间,若按键输入是键则结束本次游戏。每次游戏结束 后进入等待按键的状态一一按键退出程序,按键则开始下一次 游戏。 2.程序流程图 (1)主程序流程图
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 2 - (2)8253 通道 1 工作于方式 3,输入 1MHZ 的时钟,设置分频系数为 1000, 输出 1KHZ 的方波,此输出作为通道 0 的输入时钟。通道 0 工作于方式 3, 分频系数为 用户输入的速度等级×1000。 [注:速度等级:1---快速 2--- 中速 3----慢速] (2)将 8255 的 A 口接到 LED 点阵的 COL1-8,C 口接到 LED 点阵的 ROW1 -8,每当进入中断,就把在数据段存好的字母的段码送到 A 口和 C 口,显 示相应的字母。 (3)每个字母都需要分段循环显示,利用人眼的视觉暂留便可看见点阵上显示 整个字母。 (4)为避免中断服务程序过长,在写中断服务程序时,只需要把中断标志置 1 即可,其余操作可在主程序中进行。 (5)在字母显示期间,要不断读取按键输入,直到按键正确或进入下一次中断 (即表示该字母的出现时间已经结束),准备出现下一个字母。 (6)在字母显示期间,若读入的按键是错误的,则在屏幕上显示“错误”,并 继续显示该字母,等待按键或中断;若未能在字母消失前按下正确的键,则 在屏幕上显示“超时”,并显示下一个字母;若在字母消失前按下正确的键, 则在屏幕上显示“正确”,往 A 口和 C 口输出 00H,使字母消失,分数加 1, 并准备显示下一个字母。 (7)在字母显示期间,若按键输入是键则结束本次游戏。每次游戏结束 后进入等待按键的状态—-按键退出程序,按键则开始下一次 游戏。 2. 程序流程图 (1) 主程序流程图
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 开始 输入速度等级并 显示,把速度等级 转化为分频系数 初始化8253,通道1 方式3,计数初值 1000,通道0方式3, 计数初值为由速度等 级得到的分频系数 初始化8255,方式0, A口输出,B口输出, C口输出 设置中断向量,开放 RQ7中断,段寄存器 重新赋值 清记分器CL,清中断 标致BH,SI指向随 机字母表MES1 按键开始游戏, 开中断 BH=1?
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 3 - 开始 输入速度等级并 显示,把速度等级 转化为分频系数 初始化 8253,通道 1 方 式 3 ,计数初值 1000,通道 0 方式 3, 计数初值为由速度等 级得到的分频系数 初始化 8255,方式 0, A 口输出,B 口输出, C 口输出 设置中断向量,开放 IRQ7 中断,段寄存器 重新赋值 清记分器 CL,清中断 标致 BH, SI 指向随 机字母表 MES1 按键开始游戏, 开中断 BH=1? N Y
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 BH=0:产生一个随机数,把[SI+ 随机数]指向的字符存入AL 判断AL中的字符是 中的哪一个,并让 提示超时 DI指向相应字母的码 表 把该字母保存在BL中 分3段循环把该字母的 中断到来 码表输出到A口和C口, 输出的过程中查询中断 标志和键盘 有按键 退出本 次游戏 按键正确? 提示错误 Y 把存在CL中的分数转 换为十进制显示出来 向A口和C口输出00H,使该 字母消失,提示正确,鸣响 次,分数加1( INC CL) 提示开始下一次游戏 或结束 输入 空格 开始 结束 (2)中断服务子程序流程图
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 4 - (2) 中断服务子程序流程图 把该字母保存在 BL 中 分 3 段循环把该字母的 码表输出到A口和C 口, 输出的过程中查询中断 标志和键盘 判断 AL 中的字符是 a~z 中的哪一个,并让 DI 指向相应字母的码 表 BH=0;产生一个随机数,把[SI+ 随机数]指向的字符存入 AL 中断到来 按键正确? 向 A 口和 C 口输出 00H,使该 字母消失,提示正确,鸣响一 次,分数加 1(INC CL) 提示超时 有按键 N Y 提示错误 BH=1? N Y 退出本 次游戏 开始 输入 结束 把存在 CL 中的分数转 换为十进制显示出来 提示开始下一次游戏 或结束
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 INT 保护中断现场 恢复中断现场 中断返回 (3)产生随机数子程序流程图 RAND 保护现场 读取系统时钟 取其低8位作为所需的 0~255的随机数,存 入BP 恢复现场 子程序返回 (4)扬声器发声子程序流程图
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 5 - (3) 产生随机数子程序流程图 (4) 扬声器发声子程序流程图 INT7 保护中断现场 BH=1 恢复中断现场 中断返回 RAND 保护现场 读取系统时钟 取其低 8 位作为所需的 0~255 的随机数,存 入 BP 恢复现场 子程序返回
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 BEEP 保护现场 初始化微机8253 微机8255的B口输 出驱动扬声器 循环一段时间后停 止发声 恢复现场 子程序返回 3.电路连接图
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 6 - 3. 电路连接图 BEEP 初始化微机 8253 微机 8255 的 B 口输 出驱动扬声器 循环一段时间后停 止发声 保护现场 恢复现场 子程序返回
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 PAI PA2 PA3 PA4 PA5 PA6 PA7 PA8 288H -28B CS 8255A PCI PC2 PC3 PC4 PC5 PC6 PC7 PC8 123456|78 6 点阵 8253A 7H CLKI GATEl OUTI CLKO GATEO OUTO IKHZ MHZ I+5V IRQ +5V 时钟 程序部分模块算法解释 (1)在点阵上显示字母 在8×8点阵上显示字母,可以考虑把每一个字母都看成由点阵上3 块可以一次显示的图象组成,把每一块图形显示时ROW1~8和COL1 8管脚的电平情况顺序存在相应字母的码表中。显示字母时,只需循环把 该字母码表中的数据输出到8255的A口和C口即可。(注意每一块图形 对应的数据也要循环显示一段合理的时间,否则人眼还没看到该图形已 被下一块图形刷新了) 该段程序如下:
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 7 - 4. 程序部分模块算法解释 (1) 在点阵上显示字母: 在 8×8 点阵上显示字母,可以考虑把每一个字母都看成由点阵上 3 块可以一次显示的图象组成,把每一块图形显示时 ROW 1~8 和 COL 1~ 8 管脚的电平情况顺序存在相应字母的码表中。显示字母时,只需循环把 该字母码表中的数据输出到 8255 的 A 口和 C 口即可。(注意每一块图形 对应的数据也要循环显示一段合理的时间,否则人眼还没看到该图形已 被下一块图形刷新了) 该段程序如下: 8255A PA1 PA2 PA3 PA4 PA5 PA6 PA7 PA8 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 CS 8253A CLK1 GATE1 OUT1 CLK0 GATE0 OUT0 CS 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 288H ~28B H 280 ~28 7H 点阵 1MHZ 时钟 +5V +5V IRQ 1KHZ
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 SEND MOV DH. OFFH DELAY1∷;循环显示字母的第一块 ISH DX 10VAL, DS: DI MOV DX,28AHC口输出行 OUT DXAL MOV AL,DS [DI+1l MOV DX,288H;A口输出列 OUT DXAL CMP BH01H;查询中断标志 JE LOSE1;若中断到来则本次打字超时 10VAL, DS: DI MOV DX,28AHC口输出行 OUT DXAL MOV AL,DS: [ DI+1l MOV DX,288H;A口输出列 OUT DXAL MOVAHOIH;查询键盘 INT 16H JNZ NNN;若有键盘输入则转去处理 POP DX DEC DH JNZ DELAYI MOV DH OFFH DELAY2∷;循环显示字母的第二块 PUSH DX MOV AL, DS: [DI+2 MOV DX28AHC口输出行 OUT DX.AL MOV AL, DS DI+3 MOV DX288H;A口输出列 OUT DXAL CMP BHOIH JE LOSE POP DX DEC DH JNZ DELAY2 MOV DH. OFFH DELAY3:循环显示字母的第三块 PUSH DX MOV AL, DS: DI+4
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 8 - SEND: MOV DH,0FFH DELAY1:;循环显示字母的第一块 PUSH DX MOV AL,DS:[DI] MOV DX,28AH;C 口输出行 OUT DX,AL MOV AL,DS:[DI+1] MOV DX,288H;A 口输出列 OUT DX,AL CMP BH,01H ;查询中断标志 JE LOSE1 ;若中断到来则本次打字超时 MOV AL,DS:[DI] MOV DX,28AH;C 口输出行 OUT DX,AL MOV AL,DS:[DI+1] MOV DX,288H;A 口输出列 OUT DX,AL MOV AH,01H ;查询键盘 INT 16H JNZ NNN ;若有键盘输入则转去处理 POP DX DEC DH JNZ DELAY1 MOV DH,0FFH DELAY2:;循环显示字母的第二块 PUSH DX MOV AL,DS:[DI+2] MOV DX,28AH;C 口输出行 OUT DX,AL MOV AL,DS:[DI+3] MOV DX,288H;A 口输出列 OUT DX,AL CMP BH,01H JE LOSE POP DX DEC DH JNZ DELAY2 MOV DH,0FFH DELAY3:;循环显示字母的第三块 PUSH DX MOV AL,DS:[DI+4]
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 MOV DX28AHC口输出行 OUT DXAL MOV AL, DS: [DI+5 VDX,288HA口输出列 OUT DXAL CMP BHOIH JE LOSE POP DX DEC DH JNZ DELAY 3 JMP SEND;循环显示该字母 (2)把所得分数(存在CL中)转换为十进制形式显示: A赋初值为0,采用LOOP循环给对AL加1,每加1次执行一次十 进制调整指令DAA,循环结束后AL中即为所要十进制数的BCD码,利 用移位指令,先显现高位,再显示低位,即可在屏幕上显示出所得分数。 该段程序代码如下: INC CL MOVAL.O LL: INC AL DAA LOOP LL DEC AL PUSHAX MOV CL 4 SHR CL ADD AL. 30H MOV DL. AL MOV AHO2H INT 21 POP AX AND AL OFH ADD AL 30H MOV DL.AL MOⅤAH02H INT2IH 五.实施条件 微机一台,TPC-H通用微机接口实验系统一台,并行接口芯片8255A一片, 定时器/计数器芯片8253A一片,LED点阵显示器LDM-1088AX一块,导线
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 9 - MOV DX,28AH;C 口输出行 OUT DX,AL MOV AL,DS:[DI+5] MOV DX,288H;A 口输出列 OUT DX,AL CMP BH,01H JE LOSE POP DX DEC DH JNZ DELAY3 JMP SEND ;循环显示该字母 (2) 把所得分数(存在 CL 中)转换为十进制形式显示: Al 赋初值为 0,采用 LOOP 循环给对 AL 加 1,每加 1 次执行一次十 进制调整指令 DAA,循环结束后 AL 中即为所要十进制数的 BCD 码,利 用移位指令,先显现高位,再显示低位,即可在屏幕上显示出所得分数。 该段程序代码如下: INC CL MOV AL,0 LL: INC AL DAA LOOP LL DEC AL PUSH AX MOV CL,4 SHR AL,CL ADD AL,30H MOV DL,AL MOV AH,02H INT 21H POP AX AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,02H INT 21H 五. 实施条件 微机一台,TPC-H 通用微机接口实验系统一台,并行接口芯片 8255A 一片, 定时器/计数器芯片 8253A 一片,LED 点阵显示器 LDM-1088AX 一块,导线
微机系统与接口技术综合实验报告电子系05级王翠云学号:00482122007年秋季 若干。 六.功能测试及结果分析 1.测试方法和所使用的仪器 (1)首先测试点阵显示器是否完好:给点阵显示器接好电源,依次让ROWn/ COLn接高/低电平(n=1,2,,.8),检查点阵中每一个发光二极管是否都 能正常发光。 (2)按照上面的电路连接图连接好电路,运行程序。程序运行过程中用示波器 测量8253通道0输出方波的频率,选择不同的速度等级多次观察8253通道 0输出的方波,比较频率的变化。 2.测试数据及测试结果分析 (1)速度等级为1时,8253的通道0输出方波的频率为1HZ 所以字母显示的速度为每1S一个 (2)速度等级为2时,8253的通道0输出方波的频率为05HZ 所以字母显示的速度为每2S一个 (3)速度等级为3时,8253的通道0输出方波的频率为0.333Z 所以字母显示的速度为每3S一个 3.功能及使用方法说明 (1)程序运行后根据屏幕提示输入打字练习的速度等级 (2)按空格键启动游戏。 (3)点阵上所先显示的字母按照所选则的速度刷新,在一个字母显示期间按下 相应的字母键则表示打字正确,该字母马上消失,扬声器发声。游戏期间屏 幕上会显示该字母有没有被打对的提示信息(包括“错误”、“正确”“超时”)。 若未按中正确的字母键,在该字母未消失之前还可以重复按键,直到字母消 失或打字正确。 (4)游戏期间按下键则退出该次游戏。屏幕上显示本次打字所得分数。 屏幕上显示提示信息,按键退出程序,按键开始下一次的打字 练习。其它按键无效会提示错误并重新输入。 4.通过多次测试,程序能够正确执行上述功能。26个字母在点阵上的显示都正
微机系统与接口技术综合实验报告 电子系 05 级 王翠云 学号:00548212 2007 年秋季 - 10 - 若干。 六. 功能测试及结果分析 1. 测试方法和所使用的仪器 (1)首先测试点阵显示器是否完好:给点阵显示器接好电源,依次让 ROW n / COL n 接高 / 低电平(n=1,2,…,8),检查点阵中每一个发光二极管是否都 能正常发光。 (2)按照上面的电路连接图连接好电路,运行程序。程序运行过程中用示波器 测量 8253 通道 0 输出方波的频率,选择不同的速度等级多次观察 8253 通道 0 输出的方波,比较频率的变化。 2.测试数据及测试结果分析 (1)速度等级为 1 时,8253 的通道 0 输出方波的频率为 1HZ: 所以字母显示的速度为每 1S 一个。 (2)速度等级为 2 时,8253 的通道 0 输出方波的频率为 0.5HZ: 所以字母显示的速度为每 2S 一个。 (3)速度等级为 3 时,8253 的通道 0 输出方波的频率为 0.333HZ: 所以字母显示的速度为每 3S 一个 3.功能及使用方法说明 (1) 程序运行后根据屏幕提示输入打字练习的速度等级。 (2)按空格键启动游戏。 (3)点阵上所先显示的字母按照所选则的速度刷新,在一个字母显示期间按下 相应的字母键则表示打字正确,该字母马上消失,扬声器发声。游戏期间屏 幕上会显示该字母有没有被打对的提示信息(包括“错误”、“正确”、“超时”)。 若未按中正确的字母键,在该字母未消失之前还可以重复按键,直到字母消 失或打字正确。 (4)游戏期间按下键则退出该次游戏。屏幕上显示本次打字所得分数。 屏幕上显示提示信息,按键退出程序,按键开始下一次的打字 练习。其它按键无效会提示错误并重新输入。 4.通过多次测试,程序能够正确执行上述功能。26 个字母在点阵上的显示都正 常