部分计控习题答案

  • 格式:doc
  • 大小:4.42 MB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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: ……