实验8 A/D转换实验
一、实验目的
了解模/数转换基本原理,掌握ADC0809的使用方法。 二、实验内容
利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。 三、实验接线图
图6-1
四、编程指南
⑴ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:
MOV DX,ADPORT ; ADC0809端口地址 OUT DX,AL ; 发CS和WR信号并送通道地址
1
⑵用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。 MOV DX,ADPORT IN AL,DX
; ADC0809端口地址
⑶循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。 五、实验程序框图
六、实验步骤
①将0809 CS4插孔连到译码输出FF80H插孔、连JX6→JX17。 ②将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。
③运行实验程序
如在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击H0809.ASM文件,单击“确定”即可装入A/D转换实验源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“R运行”或工具图标运行,即开始运行程序。如果在没有PC机的情况下,则在8086K系统显示监控提示符“P.”时,用户段地址固定为0000(省略输入),按SCAL键,输入起始偏移地址1000,按EXEC键,在系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。
④调节电位器Wl, 显示器上会不断显示新的转换结果。 模拟量和数字量对应关系的典型值为: 0V→00H
+2.5V→80H +5V→FFH
2
⑤按RST键退出。
以上两种方式运行结果完全一致,因此,在下面的实验中,不管按何种方式均能运行实验程序。 六、程序
CODE SEGMENT ASSUME CS:CODE
ORG 2DF0H
START:
JMP START0
PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB 0AH,0DH,0CH,17H,?,? data1: db
0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db
86h,8eh,0ffh,0ch,h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0:
MOV DX,0FF80H MOV AL,0 OUT DX,AL
CALL DISP
MOV DX, 0FF80H IN AL,DX CALL ZH MOV BUF+4,AH MOV BUF+5,AL
CALL DISP
JMP START0
DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL
MOV CL,0DFH
;显示子程
序 ,5ms
MOV BX,OFFSET BUF
DIS1:
MOV AL,[BX]
MOV AH,00H PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL
PUSH CX
DIS2:
MOV CX,00A0H
LOOP $ POP CX CMP CL,0FEH
;01H
JZ LX1
MOV AL,0FFH MOV DX,PA OUT DX,AL INC BX
ROR CL,1
JMP DIS1
LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL
RET
BUF1: MOV BH,AH
CALL ZH
MOV BUF+5,AL MOV BUF+4,AH MOV AL,BH
CALL ZH
MOV BUF,AH MOV BUF+1,AL MOV BUF+2,17H MOV BUF+3,17H
RET
3
;00H
;SHR CL,1
;-------------------------------------------------------- ZH:
MOV BL,AL
AND AL,0FH RET
MOV CL,4 ROL AL,CL AND AL,0FH MOV AH,AL MOV AL,BL
;-------------------------------------------------------
CODE ENDS
END START
七、思考题
1 试编程实现在数码管上直接显示所测电压的数值,显示方式为?.??。(电压显示范围为0.00~5.00)
2 综合实验7的内容,编程实现当数字量为80H~A0H之间时,直流电机转动,否则直流电机停止。
思考题程序:
CODE SEGMENT
ASSUME CS:CODE ORG 2DF0H
JMP START0
;字位口 ;字形口 ;键入口
CALL DISP call delay inc bl cmp bl,0 jnz lop1
START:
PA EQU 0FF20H PB EQU 0FF21H PC EQU 0FF22H BUF DB 0AH,0DH,0CH,17H,?,? data1: db
mov bl,0ffh lop2: mov al,bl
mov dx, 0FF90H out dx,al
MOV DX, 0FF80H
JMP START0
delay: push cx l1:
mov cx,50000 loop l1 IN AL,DX CALL ZH MOV BUF+4,AH MOV BUF+5,AL CALL DISP call delay dec bl cmp bl,0ffh jnz lop2
0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0:
mov bl,0 lop1: mov al,bl
mov dx,0FF90H out dx,al
CALL DISP MOV DX, 0FF80H
IN AL,DX CALL ZH MOV BUF+4,AH MOV BUF+5,AL
4
pop cx ret
MOV BUF+1,AL MOV BUF+2,17H MOV BUF+3,17H
RET
DISP: MOV AL,0FFH ;00H
MOV DX,PA OUT DX,AL
MOV CL,0DFH ;显示子程
;-------------------------------------------------------- ZH:
MOV BL,AL
序 ,5ms
MOV BX,OFFSET BUF
DIS1:
MOV AL,[BX]
MOV AH,00H PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL
PUSH CX
DIS2:
MOV CX,00A0H
LOOP $ POP CX CMP CL,0FEH
;01H
JZ LX1
MOV AL,0FFH MOV DX,PA OUT DX,AL INC BX
ROR CL,1
JMP DIS1
LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL
RET
BUF1:
MOV BH,AH
CALL ZH
MOV BUF+5,AL MOV BUF+4,AH MOV AL,BH
CALL ZH
MOV BUF,AH
;00H
;SHR CL,1
MOV CL,4 ROL AL,CL AND AL,0FH MOV AH,AL MOV AL,BL AND AL,0FH RET
;-------------------------------------------------------
CODE ENDS
END START
5