第8章习题答案

第8章习题答案
1.简述键盘扫描的主要思路。
答案:
键盘扫描的主要思路:首先确定是否有键按下,消除抖动,若有键按下,输出逐行或列的扫描字,读取列或行的状态,确定按键键值,然后再判断按键是否释放,若释放,即可返回。
2.简述软件消除键盘抖动的原理。
答案:
软件消除键盘抖动的原理:当CPU发现有键按下的情况下,为了防止是机械抖动的误动作,可以采用软件延时10ms,然后再次检测按键是否仍然为闭合状态,若仍然闭合,则确定有键按下,否则就是键盘抖动,不予理睬。
3.什么叫LED的动态显示和静态显示。
答案:
静态显示形式,即七段LED数码管在显示某一个字符时,相应的段(发光二极管)恒定的导通或截至,直至换显其他字符为止。
动态显示是将所有数码管的段码线对应并联在一起,由一个8位的输出口控制,每位数码管的公共端(称位选线)分别由一位I/O口线控制,以实现各位的分时选通。
4.要求利用8031的P1口扩展一个22行列式键盘电路,画出电路图,并根据所绘电路编写键扫描子程序。
答案:
设行线H1~H2连接到51单片机P1口的P1.0~P1.1,列线L1~L2连接到P1口的P1.4~P1.5。电路图如下:
键扫描子程序:
轻触开关电路KEY:    MOV      P1, #0FH        ;列输出低电平,行输出高电平
        MOV    A, P1              ;读P1口状态
        ANL      A, #0FH          ;保留行状态
        CJNE    A, #0FH, KEY0  ;有键按下转KEY0
        SJMP    KEY              ;无键按下等待,转键检测
KEY0:  LCALL  DELAY10          ;调10mS延时取抖
        MOV    A, P1
        ANL    A, #0FH
        CJNE    A, #0FH, KEY1  ;不是抖动转键值判断
        SJMP    KEY              ;是抖动到键检测
KEY1:  MOV    P1, #11101111B    ;第一列键被按下判断
        MOV    A, P1
        ANL    A, #0FH
        CJNE  A, #0FH, KEYC1    ;第一列键被按下转KEYC1处理
        MOV  P1, #11011111B      ;第二列键被按下判断
        MOV  A, P1
        ANL    A, #0FH
        CJNE  A, #0FH, KEYC2    ;第二列键被按下转KEYC2处理
        LJMP  KEY              ;均不是转到键检测
KEYC1:  MOV  A, P1              ;读键值键值处理   
JB      E0H, KEYC11
LCALL  K1                K1键处理
SJMP  FANH
KEYC11: LCALL  K3                K3键处理
SJMP  FANH
KEYC2:  MOV  A, P1              ;读键值键值处理   
JB      E0H, KEYC21
LCALL  K2                K2键处理
SJMP    FANH
KEYC21: LCALL    K4                K4键处理
FANH:  RET
5.请在图8-1的基础上,设计一个以中断方式工作的开关式键盘,并编写其中断键处理程序。
答案:
电路图如下:
中断键处理程序:
KINT:    LCALL  DELAY10          ;调10mS延时取抖
          MOV    A, P1
          ANL      A, #0FH
          CJNE    A, #0FH, KEY1    ;不是抖动转键值判断
          SJMP    FANH              ;是抖动返回
KEY1:    MOV    A, P1            ;读键值键值处理   
JB      0E0H, KEY2
LCALL  K1                ;K1键处理
SJMP    FANH
KEY2:    JB      0E1H, KEY3
LCALL  K2              ;K2键处理
SJMP    FANH
KEY3:    JNB      0E2H, KEY4
LCALL  K3              ;K3键处理
SJMP    FANH
KEY4:    LCALL  K4              ;K4键处理
FANH:  RETI
6.矩阵式键盘如何实现中断方式?请在图8-4的基础上设计中断式键盘,并编写相应中断处理子程序。
答案:
电路图如下:
中断处理子程序:
KINT:          ACALL  DELAY10            ;延时消抖
            ACALL  KS1                ;再次判断有无键按下
            JNZ    LK2                ;确实有键按下,转列扫描
            AJMP  KEY_1            颗粒级配;是键抖动,重新扫描
LK2:            MOV  R2, #0FEH            ;首列扫描字
            MOV  R4, #00H            ;首列号
LK4:            MOV  DPTR, #7F01H   
            MOV  A, R2
            MOVX  @DPTR, A            ;列扫描字送PA
            INC    DPTR
            INC    DPTR                ;指向PC
            MOVX  A, @DPTR            ;读入行状态
            JB      ACC.0, LONE        ;第0行有键按下?
            MOV    A, #00H            ;有键按下,行号送A
            AJMP  LKP                ;转键值处理
LONE:        JB      ACC.1, LTWO        ;第1行有键按下?
            MOV    A, #08H            ;有键按下,行号送A
            AJMP  LKP                ;转键值处理
LTWO:          JB      ACC.2, LTHR        ;第2行有键按下?
            MOV    A, #10H            ;有键按下,行号送A
            AJMP    LKP                ;转键值处理
LTHR:          JB      ACC.3, NEXT        ;第3行有键按下?
            MOV    A, #18H            ;有键按下,行号送A
LKP:            ADD    A, R4            ;键值处理
            PUSH    ACC
霓虹灯变压器LK3:            ACALL  KS1                ;判断按键是否释放
            JNZ      LK3
            POP      ACC
鸟笼灯              RET
NEXT:        INC      R4                ;列号加1
              MOV    A, R2            ;判断是否8列扫描完毕
              JNB      ACC.7, KND        ;扫描完,返回
              RL      A                天文圆顶;转下列扫描
              MOV    R2, A
              AJMP    LK4
KND:          AJMP    KEY_1
KS1:          MOV    DPTR, #7F01H        ;判断有无键按下子程序
              MOV    A, #00H
              MOVX    @DPTR, A
              INC      DPTR
              INC      DPTR
              MOVX    A, @DPTR
              CPL        A
              ANL        A, #0FH
              RET
DELAY12:      MOV    R7, #18H            ;延时12ms子程序
制作智能卡TM:            MOV    R6, #0FFH
TM6:          DJNZ    R6, TM6
              DJNZ    R7, TM
              RETI
7.状态或数码显示时,对LED的驱动可采用低电平驱动,也可以采用高电平驱动,二者各有什么特点?
答案:
高电平驱动要采用共阴极数码管,必须外接上拉电阻;低电平驱动要采用共阳极数码管,电源效率相对较高。
8.用DAC0832进行D/A转换时,当输出电压的范围在0~5V时,每变化一个二进制数其输出电压跳变约20mV,即输出是锯齿状的,采取何种措施可使输出信号比较平滑?
答案:
两种方法: (1)可以计算移动平均值;
(2)可以设计滤波器的办法。
9.当系统的主频为6MHz时,请计算图8-18中DAC0832产生锯齿波信号的周期。
答案:
T=2μs×8×256=4096μs
10.请编写图8-18中用DAC0832产生三角波的应用程序。
答案:
START:    MOV        DPTR, #7FFFH               
MOV        A, #00H
LOOP:    MOVX    @DPTR, A                   
INC        A
            CJNE  A,#0FFH,L1
    L2:        DEC    A
            MOVX  @DPTR,A
            CJNE  A, #00H, L2
L1:      AJMP    LOOP
11.对图8-25的A/D转换电路,若采用中断方式,请编写相应程序。
答案:
在硬件电路上,应当将EOC引脚接到单片机的外部中断引脚上面,如
初始化程序:
MAIN:          SETB    IT1
            SETB    EA
            SETB    EX1
MOV    R1,#data            R1指向数据存储区首地址
            MOV    DPTR,#7FF8H      DPTR指向通道0
            MOV    R7,#08H            ;通道数8
LOOP:          MOVX    @DPTR,A        ;启动A/D转换
            SJMP    $
;中断服务程序:
PINT1:        MOVX    A,@DPTR        ;转换结果读入累加器A
MOV    @R1,A            ;存储数据
            INC      DPTR              ;修改指针
            INC      R1
            RETI
12.当图8-25的ADC0809对8路模拟信号进行A/D转换时,请编写用查询方式工作的采样程序,8路采样值存放在30H~37H单元。

本文发布于:2024-09-20 14:37:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/104978.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:键盘   中断   采用   输出   编写   扫描
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议