实验五 AD转换实验学.docx
《实验五 AD转换实验学.docx》由会员分享,可在线阅读,更多相关《实验五 AD转换实验学.docx(15页珍藏版)》请在冰豆网上搜索。
实验五AD转换实验学
实验五 A/D转换实验
一、实验目的
了解模/数转换基本原理,掌握ADC0809的使用方法;
掌握定时数据采集程序的编制方法。
二、实验内容
1、A/D转换实验
利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。
(1)实验接线图
图6-1
(2)编程指南
ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:
MOVDX,ADPORT ; ADC0809端口地址OUTDX,AL ;发CS和WR信号并送通道地址
用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。
MOVDX,ADPORT; ADC0809端口地址
IN AL,DX
循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。
(3)实验程序框图
(4)实验步骤
①将0809CS4插孔连到译码输出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键,在系统上显示“0809XX”。
“XX”表示输入模拟量转换后的数字量。
④调节电位器Wl,显示器上会不断显示新的转换结果。
模拟量和数字量对应关系的典型值为:
0V→00H+2.5V→80H+5V→FFH
⑤按RST键退出。
以上两种方式运行结果完全一致,因此,在下面的实验中,不管按何种方式均能运行实验程序。
(5)实验程序清单
CODESEGMENT;H0809.ASM
ASSUMECS:
CODE
ADPORTEQU0FF80h
PAEQU0FF20H;字位口
PBEQU0FF21H;字形口
PCEQU0FF22H;键入口
ORG1000H
START:
JMPSTART0
BUFDB?
?
?
?
?
?
data1:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0:
CALLBUF1
ADCON:
MOVAX,00
MOVDX,ADPORT
OUTDX,AL
MOVCX,0500H
;DELAY:
LOOPDELAY
MOVDX,ADPORT
INAL,DX
CALLCONVERS
CALLDISP
JMPADCON
CONVERS:
MOVAH,AL
ANDAL,0FH
MOVBX,OFFSETBUF
MOV[BX+5],AL
MOVAL,AH
ANDAL,0F0H
MOVCL,04H
SHRAL,CL
MOV[BX+4],AL
RET
DISP:
MOVAL,0FFH;00H
MOVDX,PA
OUTDX,AL
MOVCL,0DFH;20H;显示子程序,5ms
MOVBX,OFFSETBUF
DIS1:
MOVAL,[BX]
MOVAH,00H
PUSHBX
MOVBX,OFFSETDATA1
ADDBX,AX
MOVAL,[BX]
POPBX
MOVDX,PB
OUTDX,AL
MOVAL,CL
MOVDX,PA
OUTDX,AL
PUSHCX
DIS2:
MOVCX,00A0H
LOOP$
POPCX
CMPCL,0FEH;01H
JZLX1
INCBX
RORCL,1;SHRCL,1
JMPDIS1
LX1:
MOVAL,0FFH
MOVDX,PB
OUTDX,AL
RET
BUF1:
MOVBUF,00H
MOVBUF+1,08H
MOVBUF+2,00H
MOVBUF+3,09H
MOVBUF+4,00H
MOVBUF+5,00H
RET
CODEENDS
ENDSTART
2、数据采集实验
要求:
用8253定时器1通道定时,每隔半秒使从ADC0809的0通道IN0采集一个数据,若模拟电压在0-2V范围内(0-102),则使LED显示器L7-L4亮;若模拟电压大于2V,小于3V,则使L5-L2亮;若模拟电压大于等于3V,则使LED显示器L3-L0亮。
(主程序重复所采集的数据)
(1)实验接线图
(2)实验程序框图
主程序流程图
(3)实验程序清单
CODESEGMENT;H0809.ASM
ASSUMECS:
CODE
INTPORT1EQU0FF80H
INTPORT2EQU0FF81H
INTQ3EQUINTREEUP3
TCONTR0EQU0043H
TCON1EQU0041H
IOCONPTEQU0FF2BH
IOBPTEQU0FF29H
IOAPTEQU0FF28H
PAEQU0FF20H;字位口
PBEQU0FF21H;字形口
PCEQU0FF22H;键入口
ADPORTEQU0FE00H
ORG12D0H
START:
JMPSTART0
BUFDB?
?
?
?
?
?
intcntdb?
RESDB?
data1db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h
db0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0:
CLD
CALLBUF1
CALLWRINTVER;WRITEINTRRUPT
MOVAL,13H
MOVDX,INTPORT1
OUTDX,AL
MOVAL,08H
MOVDX,INTPORT2
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVAL,0F7H
OUTDX,AL
MOVintcnt,25;软件计数50(1秒=20ms*50)
MOVDX,TCONTR0
MOVAL,74H
OUTDX,AL
MOVDX,TCON1;计数器1定时20ms
MOVAX,40000
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,0FF2BH
MOVAL,82H
OUTDX,AL
STI
WATING:
CALLDISP;DISP8253-A
JMPWATING
WRINTVER:
MOVAX,0H
MOVES,AX
MOVDI,002CH
LEAAX,INTQ3
STOSW
MOVAX,0000h
STOSW
RET
INTREEUP3:
DECINTCNT
JNZINTRE2
MOVINTCNT,25
ADCON:
MOVAX,00
MOVDX,ADPORT
OUTDX,AL
MOVCX,0500H
DELAY:
LOOPDELAY
MOVDX,ADPORT
INAL,DX
MOVRES,AL
CALLCONVERS
MOVAL,RES
CMPAL,66H
JANEXT1
MOVAL,0F0H
MOVDX,IOAPT
OUTDX,AL
JMPINTRE2
NEXT1:
CMPAL,99H
JANEXT2
MOVAL,0C3H
MOVDX,IOAPT
OUTDX,AL
JMPINTRE2
NEXT2:
MOVAL,0FH
MOVDX,IOAPT
OUTDX,AL
INTRE2:
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
IRET
CONVERS:
MOVAH,AL
ANDAL,0FH
MOVBX,OFFSETBUF
MOV[BX+5],AL
MOVAL,AH
ANDAL,0F0H
MOVCL,04H
SHRAL,CL
MOV[BX+4],AL
RET
DISP:
MOVAL,0FFH;00H
MOVDX,PA
OUTDX,AL
MOVCL,0DFH;20H
MOVBX,OFFSETBUF
DIS1:
MOVDX,PC
OUTDX,AL
MOVAL,[BX]
MOVAH,00H
PUSHBX
MOVBX,OFFSETDATA1
ADDBX,AX
MOVAL,[BX]
POPBX
MOVDX,PB
OUTDX,AL
MOVAL,CL
MOVDX,PA
OUTDX,AL
PUSHCX
DIS2:
MOVCX,00A0H
LOOP$
POPCX
CMPCL,0FEH;01H
JZLX1
INCBX
RORCL,1
JMPDIS1
LX1:
MOVAL,0FFH
MOVDX,PB
OUTDX,AL
RET
BUF1:
MOVBUF,00H
MOVBUF+1,08H
MOVBUF+2,00H
MOVBUF+3,09H
MOVBUF+4,00H
MOVBUF+5,00H
RET
CODEENDS
ENDSTART
主程序流程图