第九章键盘和LED显示器9.1利用行扫描法来识别闭合键的工作原理是什么?为什么在识别一个键前,先快速检查键盘中是否有键按下?快速识别有无闭合键的方法是什么?答:1.从第0行开始扫描,看是否是该行的键闭合,直至最后一行扫描结束。(每扫一行输入列值,检查此行是否有键闭合,若有键闭合则转去识别该键;若无键闭合,则扫描下一行……)2.为了提高程序运行的速度,在无键按下时无需进行行扫描。3.先使所有各行同时为低电位,再检查是否有列线也处于低电位。若有某列线处于低电位,则说明必有键按下,否则无键按下。9.2叙述行反转法的基本工作原理,画出行反转法的程序流程。答:1.行反转法的基本工作原理:将行线接一个并行口,使其工作于输出方式;将列线接一个并行口,使其工作于输入方式;程序使CPU通过输出口往各行线上全送低电平,然后读入列线的值。若此时有某个键被按下,则必定会使某列线值为0。然后程序将两个并行端口的输入/输出方式调换,并将刚才读得的列线值从列线所接的并行口输出,再读取行线的输入值,在闭合键所在的行线上的值必定为0。这样当一个键被按下时,必定可以读得唯一的行值和列值。2.程序流程如右:9.3连锁法和巡回发识别重建的基本思想是什么?答:①连锁法识别重建的基本思想是:在所有键释放后,只承认此后闭合的第一个键,对此键闭合时按下的其他键均不作识别,直到所有键释放以后,才读入下一个键。②巡回法识别重建的基本思想是:等前面所识别的键被释放以后,就可以对其他闭合键作识别。9.4用连锁法识别重键时,对《微型计算机技术及应用》一书的图9.8中的三种重键情况分别如何处理?看懂图8.9的流程,并说明按标准的连锁法,此流程应如何修改?答:1.图9.8(a),只读入A键;图9.8(b),标准连锁法也只读入A键;图9.8(c)则无效,两键都不读入。2.标准连锁法的流程可按书362页图9.9来修改,即将等待释放的一部分改为等待所有键释放即可。方法是:在读进列值前加一个“使所有行为低电平”既可以了。9.5巡回法是如何识别三种重键情况的?分析图9.10的流程图,并编写一个8行×8列的巡回法识别重键程序,端口地址用标号表示。答:1.图9.8(a),只识别A键;图9.8(b),A、B键同行则识别A键而舍弃B键,不同行则两键均识别;图9.8(c)若B键处于较小行号上则只读入B键,若B键处于较大行号上则两键均读入。2.START:MOVAL,00HMOVDX,RPORT;取行端口号OUTDX,AL;使所有各行为低电平MOVDX,LPORT;取列端口号INAL,DX;读入列值CMPAL,0FFH;判断是否有键闭合JZQUIT;无键闭合,则退出CALLDELAY;有键闭合,则延时消抖MOVAL,0FEH;使第0行为低电平MOVCX,08H;总行数送CXKEY:MOVDX,RPORTOUTDX,AL;使所选的一行为低电平PUSHAX;保存行值MOVDX,LPORTINAL,DX;读入列值CMPAL,0FFH;所选行上有闭合键吗?JNZYE;有键闭合,则转译码程序POPAX;无键闭合,恢复行值SHLAL,1;选择扫描下一行LOOPKEYJMPQUIT;扫描结束则退出YE:┆;键译码程序PUSHAX;AX中为键值KEY1:MOVDX,LPORT;读入列值INAL,DXCMPAL,0FFH;测试键是否已释放JNZKEY1;如未释放则等待CALLDELAY;已释放则再去抖动POPAX;AX中为键值┆;键命令处理QUIT:RET;返回9.6在LED显示系统中,采用硬件方法译码和采用软件方法译码各有什么优缺点?答:使用方便,不占用CPU过多的时间是硬件译码方法的优点,其缺点是使用局限性大(如有的硬件只能对BCD码进行译码等),成型电路改造麻烦。软件译码正好相反。9.7画一个实现4位显示的扫描和驱动电路,LED为共阴极器件。然后画出LED显示程序流程图。答:1.实现4位显示的扫描和驱动电路见下图。2.LED显示程序流程图也见下页图。9.8设计计时器软件时,可以采用哪几种方案?哪一种方案最好?为什么在中断处理程序中包含的模块越少越容易调试?答:1.①显示程序和初始化程序等放在主程序中,键盘处理程序和计时程序放在中断处理程序中。②显示程序、键盘处理程序和初始化程序等都放在主程序中,计时程序放在中断处理程序中。③键盘处理程序等作为主程序,显示和计时程序作为中断处理程序2.第③种方案最好。因其软件设计较为简单,显示实现较方便。3.模块越少,程序越简单,调试自然越容易。第十章CRT技术10.1显示器控制系统中,字符发生器、显示存储器分别起什么作用?字符发生器是怎样选中某个单元的?答:1.字符发生器的作用是存放并提供每个ASCII码的显示字型码。显示存储器的作用是存放由CPU送来的显示字符的ASCII码和属性码或图形点阵,并能由CRT控制器和CPU读取。2.字符发生器的单元选址由该字符的ASCII码和字符行的扫描线序号来选中的。10.2将一个字符显示到屏幕上,要进行什么操作?答:①访问显存,找到该字符的ASCII码。②顺序多次访问字符发生器,逐次读取该字符对应每条水平扫描线上的点阵码。③将并行格式的点阵码送到视频移位寄存器。④移位寄存器用串行方式将视频串行数据流送到显示器。10.3在IBMPC/XT系统中,彩色显示器的显示存储器空间在什么地方?黑白显示器的显示存储器空间呢?分别写出这两个显示存储区的首尾地址和空间长度。答:1.彩显在B8000H~BBFFFH单元;2.黑白在B0000H~B0FFFH单元;3.彩色图形方式为:B8000H~B9F3FH、BA000H~BBF3FH共16000字节(16KB)。黑白为:B0000H~B0F3FH共4000字节(4KB)。