- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
东南大学微机原理实验8
微机实验报告——
实验八 数模与模数转换
实验时间:2010.6.3 实验人:戴逸张莎指导老师:严如强
【简介】
1、实验目的:
1)了解数/模转换器的基本原理,掌握DAC0832 芯片的使用方法;
2)了解模/数转换器的基本原理,掌握ADC0809 芯片的使用方法。
2、实验内容:
1)基本实验内容和要求
(1)DAC 实验电路原理如图3.9-1,DAC0832 采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub)。进入DEBUG 调试,输出命令(O 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua 及双极性输出端Ub 的电压,验证数字与电压之间的线性关系。
(2)分别编程产生锯齿波、正弦波电压波形(从Ub 输出,用示波器观察)。
(3) ADC 实验电路原理图如图3.9-2,通过实验台左下角电位器RW1 输出0~5V直流电压送入ADC0809通道0(IN0),利用debug 的输出命令启动A/D转换器,输入命令读取转换结果,检查硬件是否正常,验证输入电压与转换后数字的关系。启动IN0 开始转换: O 0C818 0;读取转换结果: I 0C818。
(4) 编程采集IN0 输入的电压,在屏幕上显示出转换后的数据(用16 进制数)。
(5) 将JP3 的1、2 短接,使IN1 处于双极性工作方式,并给IN1 输入一个低频交流信号(幅度为±5V),编程采集这个信号数据并在屏幕上显示波形。
3、选作与探索
1)在高性能系统中,往往需要精确定时启动采样,同时利用ADC 转换结束信号(EOC)申请中断处理,试设计采样系统电路,并编程实现上述基本模数转换功能;
2)同样DAC 波形发生时也要求精确定时,请将8253 定时中断引入,编程并实现之;
3)参考装置资料和图3.9-7 线路,编程实现数字录音器。连接电路,将声传感器接J2,把代表语音的电信号送给ADC0809 通道2(IN2);D/A 转换器的输出端通过K8 跳线接喇叭。编程以每秒钟5000 次的速率采集IN2 输入的语音数据并存入内存,共采集60000 个数据(录12 秒),然后再以同样的速率将数据送DAC0832 使喇叭发声(放音)
4、完成情况:完成必做程序设计和部分选作实验并做了相关讨论,上网查找了相关资料。
【基本原理】
(1)D/A 转换
① 8 位D/A 转换器DAC0832 的口地址为290H,输入数据与输出电压的关系为:
Ua=-UREF*N/256
Ub=UREF*N/128-5
(UREF 表示参考电压,N 表示数数据),这里的参考电压为PC 机的+5V 电源。
② 产生锯齿波只须将输出到DAC0832 的数据由0 循环递增,产生正弦波可根据正弦函数建一个下弦数
字量表,取值范围为一个周期,表中数据个数在16 个以上。
参考流程图如图3.9-3 和3.9-4 所示。
(2)A/D 转换
① 图3.9-2 中ADC0809 的IN0 口地址为298H,IN1 口地址为299H。
② IN0 单极性输入电压与转换后数字的关系为:
N=Ui/(UREF/256)
其中Ui 为输入电压,UREF 为参考电压,这里的参考电压为PC 机的+5V 电源。
③ 一次A/D 转换的程序可以为:
MOV DX,口地址
OUT DX,AL ;启动转换
;延时
IN AL,DX ;读取转换结果放在AL 中
【程序流程和编程实现】
DA转换:
生成锯齿波:
1、修改I/O地址:
ioport equ 0b800h-0280h
2、生成锯齿波循环体(通过数字的循环线性递增生成锯齿波):
lll: mov al,cl
out dx,al
inc cl ;cl 加1
inc cl
inc cl
inc cl
inc cl
inc cl
inc cl
push dx
mov ah,06h ;判断是否有键按下
mov dl,0ffh
int 21h
pop dx
jz lll;有按键按下就退出到DOS
理论结果:
从键盘输入一个字符,程序将其ASCII码加1对应的字符输出。(原字符也会输出)
2、如果我们需要连续输出键盘读入的字符,程序流程图如下:
生成正弦波:
1、修改I/O地址:
ioport equ 0b800h-0280h
2、生成正弦波循环体:
ll: mov si,offset sin ;置正弦波数据的偏移地址为SI
mov bh,32 ;一组输出32 个数据
lll: mov al,[si] ;将数据输出到D/A 转换器
mov dx,io0832a
out dx,al
mov ah,06h
mov dl,0ffh
int 21h
jne exit
mov cx,1
delay:
loop delay ;延时
文档评论(0)