部分计控习题答案
- 格式:doc
- 大小:4.42 MB
- 文档页数:16
第2章
【3】采用74LS138、DAC0832运算放大器和CD4051等设计D/A转换接口电路,设定DAC0832的端口地址为200H,CD4051的端口地址为201H,要求:(1) 画出D/A转换接口电路;(2) 编写D/A转换程序。
地址线A9 A8……A1 A0=10……00时端口地址0200H,选通DAC0832
地址线A9 A8……A1 A0=10……01时端口地址0201H 选通CD4051
程序参考P27页
问题:没有给出端口地址,程序改错,
【5】用8位A/D转换器ADC0809通过8255与PC总线工业控制机接口,实现8路模拟采集。请画出接口原理图,并编写8路模拟量A/D转换程序。
程序:
MOV DX, 02C3H; 控制口地址
MOV AL, 10011000B; 设PC0~PC3为输出口,PC4~PC7为输入,PA输入
OUT DX, AL
MOV DX,02C2; 送通道号IN0并启动0809
OUT DX, AL
CALL DELAY; 延时
IN AL, DX
WAIT: MOV BL, AL
TEST BL, 10000000B; 判断EOC是否高电平,即模数转换是否结束
JZ WAIT
MOV DX, 02C3H
MOV AL, 10010000B; 设PC0~PC3为输出,PC4~PC7为输出,PA输入
OUT DX, AL
MOV DX, 02C2H; PC口
MOV AL,10000000B; 选通OE,为读入数据准备
OUT DX, AL
MOV DX, 02C0H; PA口
IN AL, DX; 将模数转换数据通过PA口读入CPU
【6】用12位A/D转换器AD574A通过8255与PC总线工业控制机接口,实现模拟量采集,请画出接口电路原理图,并设计A/D转换程序。
参考P39页图2-33,8通道模拟量电路原理图
【13】题参考P61页图2-63, 6位动态显示电路
图中添加PB6和PB7,依次接左边开始的第一个数码管,修改CH中数为80H
【17】参考P51页,采用8255端口构成的4×8矩阵键盘
根据图2-53流程图
采用8086汇编语言,写出示例程序如下。
……
KEY: PROC NEAR
KEYSCAN: CAL L KEYCHK ;检查键盘有无按键
JNZ KSO ;有键按下,转KSO
RET
KSO: CALL DIY10MS ;延时,防按键抖动
CALL KEYCHK ;再次确认有无按键
JNZ K S1 ;有键按下,转KS1
RET
KS1: MOV AH, 0FEH ;对应第一列扫描值
MOV AL, AH
MOV DX, 800H ;送PA端口地址
KS2: OUT DX,AL
INC DX
INC DX
IN AL, DX 从PC端口读入行值
AND AL, 0FH
CMP AL, 0FH
JNZ KS3 ;有键按下, 转KS3
ROL AH, 1 ;得到下一列扫描值
MOV AL, AH
DEC DX
DEC DX
AND AL, 01H ;检查8列是否已扫描完成
JNZ KS2 ;没有继续检查下一列
RET
KS3: MOV BH, AL ;保存已读入按键的行值到BH KS4: CALL DIY10MS
CALL KEYCHK
JNZ KS4 ;等待按键释放
CALL KEYP ;根据扫描所得按键的行、列值(分别存于BH、AH寄存器)做键盘处理
RET
KEY: ENDP
KEYCHK: PROC NEAR ;检查有无键按下子程序
MOV DX, 800H ;送PA端口地址
MOV AL, 00H ;列输出线全部为0
OUT DX, AL
MOV DX, 802H ;送PC端口地址
IN AL, DX ;从PC端口读入行值
AND AL, 0FH
CMP AL, 0FH
RET
KEYCHK: ENDP
……
主程序通过定时调用键盘扫描程序KEY,就可以,就可以监视有无按键操作。如果无键按下,则程序返回;如果有键按下,则读取按键的行值与列值,然后,调用按键处理子程序。
按键处理子程序的主要功能是,根据按键的行值与列值求得按键的键值,在根据键值转入对应按键的处理程序。按键处理的示例程序如下:KEYP: PROC NEAR
KP1: MOV BL, 0
INC BL
SHR AH, 1
JC KP1
DEC BL
;根据按下键的行值和列值计算出键值
NOT BH
AND BH, 0FH
DEC BH
MOV AL, 08H
MUL BH
;得到按键值
ADD AL,BL
SHL AL,1
MOV BX,AX
;根据按键转移值
JMP KEYTAB[BX]
;按键转移表
KEYTAB: JMP SHORT KEY00
JMP SHORT KEY01
JMP SHORT KEY02
……
JMP SHORT KEY29
JMP SHORT KEY30
JMP SHORT KEY31
;按键处理
KEY00: ……
RET
KEY01: ……
RET
KEY02: ……