实验四 ad和da转换

上传人:第*** 文档编号:34234224 上传时间:2018-02-22 格式:DOCX 页数:8 大小:143.74KB
返回 下载 相关 举报
实验四 ad和da转换_第1页
第1页 / 共8页
实验四 ad和da转换_第2页
第2页 / 共8页
实验四 ad和da转换_第3页
第3页 / 共8页
实验四 ad和da转换_第4页
第4页 / 共8页
实验四 ad和da转换_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《实验四 ad和da转换》由会员分享,可在线阅读,更多相关《实验四 ad和da转换(8页珍藏版)》请在金锄头文库上搜索。

1、实验四 A/D 和 D/A 转换一、 实验目的1了解 A/D 转换的基本原理,掌握 ADC0809 的使用方法。2了解 D/A 转换的基本原理,掌握 DAC0832 芯片的使用方法。3了解直流电机控制的基本方法。二、 实验内容与步骤(一)A/D 转换部分-1、 接线(参考):CS /0809 接 Y3 /IO 地址IN0 /0809 接 05V /直流信号EOC 接 总线的 IRQ 2、 实验电路原理图如图 1。通过实验台左下角电位器 RW1 输出 05 直流电压送入ADC0809 通道 0(IN0),利用 debug 的输出命令启动/转换器,输入命令读取转换结果,验证输入电压与转换后数字的关

2、系。启动 IN0 开始转换 : Out 298H 读取转换结果: In 298H图 1 模数转换电路3、 用万用表测量 CLOCK、ADD-C 、ADD-B、ADD-A 在实验系统上如何联系的?4、 编程按中断方式采集 IN0 输入的电压,在屏幕上显示出转换后的数据(用 16 进制数)。5、 考虑如果采用 IN7 输入的电压,启动开始转换和读取转换结果的地址应该是多少?6、 按查询方式采集 IN0 输入的电压,软硬件如何实现?编程提示1、 ADC0809 的 IN0 口地址为 298H。2、 IN0 单极性输入电压与转换后数字的关系为:= /256其中 Ui 为输入电压, UREF 为参考电压

3、,这里的参考电压为电源。3、一次 A/D 转换的程序可以为MOV DX , Port OUT DX,AL ;启动转换;延时IN AL,DX ;读取转换结果放在 AL 中(二) D/A 转换部分1、接线: CS /0832 接 Y2 /IO 地址用万用表测量 WR2 和 XFER 在实验系统上如何联系的?2、实验电路原理如图 2,DAC0832 采用单缓冲方式,具有单双极性输出端(图中的Ua、 Ub),利用 debug 输出命令 (Out 290 数据)输出数据给 DAC0832,用万用表测量单极性输出端 Ua 及双极性输出端 Ub 的电压,验证数字与电压之间的线性关系。3、编程产生以下波形(从

4、 Ub 输出,用示波器观察) (1 )锯齿波(2 )正弦波图 2编程提示1、 8 位 D/A 转换器 DAC0832 的口地址为 290H,输入数据与输出电压的关系为:=256=22565表示参考电压,N 表示数据),这里的参考电压为电源。2、产生锯齿波只须将输出到 DAC0832 的数据由 0 循环递增。产生正弦波可根据正弦函数建一个下弦数字量表,取值范围为一个周期,表中数据个数在 16 个以上。3、参考流程图: (三) 直流电机转速控制1、 按图 5 线路接线:CS /0832 接 Y2 /IO 地址UB /0832 接 直流电机 DJ CS /8255 接 Y1 /IO 地址PC7PC0

5、 /8255 接 K7K0 /逻辑电平开关2、编程利用 DAC0832 输出一串脉冲,经放大后驱动小直流电机,利用开关 K0K5 控制改变输出脉冲的电平及持续时间,达到使电机加速,减速之目的。实验原理简述小直流电机的转速是由 Ub 输出脉冲的占空比来决定的,正向占空比越大转速越快,反之越慢。见图 6 例:在本实验中,模拟量输出 Ub 为双极性,当输入数字量小于 80H 时输出为负,输入等于80H 时为 0V,输入大于 80H 时输出为正。因而本实验中,DAC0832 输入数字量只有 2 个(80H 和 FFH),通过不同的延迟时间达到改变小电机转速的目的。参考程序框图三、实验代码0809 的代

6、码DATA SEGMENTINT0B DW 2 DUP(?)IMR DB ?P_AD DW 280HTAB DB 0123456789ABCDEFDATA ENDSS SEGMENT STACK STACKDB 128 DUP(?)S ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:SMAIN PROC PARMOV AX,DATAMOV DS,AXCLI ;修改中断向量表PUSH ESPUSH BXMOV AH,35H ;保护原中断向量MOV AL,0BHINT 21HMOV INT0B,ESMOV INT0B+2,BXPOP BXPOP ESPUSH D

7、SPUSH DXMOV DX,OFFSET DISP ;设置新的中断向量PUSH BXMOV BX,SEG DISPMOV DS,BXPOP BXMOV AX,250BHINT 21HPOP OP DS;8259 清除 0BH 号中断屏蔽位IN AL,21HMOV IMR,ALAND AL,0F7HOUT 21H,AL;启动 AD 转换NEXT: MOV DX,P_AD MOV AL,0OUT DX,AL;等待中断,并检测是否有按键PUSH CXMOV CX,100LOOP $POP CXSTIMOV AH,1INT 16H JZ NEXT;恢复 8259 中断屏蔽位CLIMOV AL,IMR

8、OUT 21H,AL;恢复中断向量表PUSH USH DSMOV DX,INT0BMOV DS,DXMOV DX,INT0B+2MOV AX,250BHINT 21HPOP DSPOP DXMOV AX,4C00HINT 21HMAIN ENDPDISP PROC FARPUSH AXPUSH DXMOV DX,P_AD ;读入 AD 转换结果IN AL,DXMOV AH,0 ;AH 中为低位,AL 中为高位SHL AX,4SHR AL,4PUSH AX ;输出高位MOV AL,AHLEA BX,TABXLATBMOV DL,ALMOV AH,2INT 21HPOP AXLEA BX,TAB

9、;输出低位XLATB MOV DL,ALMOV AH,2INT 21HMOV DL,0DH ;输出回车MOV AH,2INT 21HMOV DL,0AH ;输出回车MOV AH,2INT 21H MOV AL,20HOUT 20H,ALPOP OP AXIRET DISP ENDPCODE ENDSEND MAIN0832 的代码DATA SEGMENTADD_DA DW 290HLEN DB 32DATA_IN DB 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhdb 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb 80h,66h

10、,4eh,38h,25h,15h,09h,04hdb 00h,04h,09h,15h,25h,38h,4eh,66h DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARMOV AX,DATAMOV DS,AXMOV DX,ADD_DABEGIN: MOV BH,LEN LEA SI,DATA_INNEXT: MOV AL,SIOUT DX,AL ;向 DA 送数据INC SIDEC BHMOV CX,1 ;延时LOOP $CMP BH,0 ;一个周期已完成JZ BEGINMOV AH,1 ;检测按键INT 16HJZ NEXTMOV AH,4CHINT 21HMAIN ENDPCODE ENDSEND MAIN四、实验感想

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号