数模模数转换实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数模模数转换实验报告
一、实验目的
1、了解数模和模数转换电路的接口方法及相应程序设计方法。
2、了解数模和模数转换电路芯片的性能和工作时序。
二、实验条件
1、DOS操作系统平台
2、数模转换芯片DAC0832和模数转换器ADC08095片。
三、实验原理
1 、数模转换:
(1)微机处理的数据都是数字信号,而实际的执行电路很多都是模拟的。因此微机的处理结果又常常需要转换为模拟信号去驱动相应的执行单元,实现对被控对象的控制。这种把数字量转换为模拟量的设备称为数模转换器
(DAC,简称D/A。
(2)实验中所用的数模转换芯片是DAC0832它是由输入寄存器、DAC寄存器和D/A转换器组成的CMOS器件。其特点是片内包含两个独立的8位寄存器,因而具有二次缓冲功能,可以将被转换的数据预先存在DAC 寄存器中,同时又
采集下一组数据,这就可以根据需要快速修改DAC0832 的输出。
2、模数转换:
(1)在工程实时控制中,经常要把检测到的连续变化的模拟信号,如温度、压力、速度等转换为离散的数字量,才能输入计算机进行处理。实现模拟量到数字量转换的设备就是模数转换器(ADC,简称A/D。
(2)模数转换芯片的工作过程大体分为三个阶段:首先要启动模数转换过程。其次,由于转换过程需要时间,不能立即得到结果,所以需要等待一段时间。一般模数转换芯片会有一条专门的信号线表示转换是否结束。微机可以将这条信号线作为中断请求信号,用中断的方式得到转换结束的消息,也可以对这条信号线进行查询,还可以采用固定延时进行等待(因为这类芯片转换时间是固定的,事先可以知道)。最后,当判断转换已经结束的时候,微机就可以从模数转换芯片中读出转换结果。
(3)实验采用的是8路8位模数转换器ADC0809芯片。ADC0809采用逐次比较的方式进行A/D 转换,其主要原理为:将一待转换的模拟信号与一个推测信号进行比较,根据推测信号是大于还是小于输入信号来决定增大还是减少该推测信号,以便向模拟输入逼近。推测信号由D/A 转换器的输出获得,当推测信号与模拟信号相等时,向D/A 转换器输入的数字就是对应模拟信号的数字量。ADC0809的转换时间为64个时钟周期(时钟频率500K时为128S)。分辨率为8位,转换精度为土LSB/2,单电源+5V供电时输入模拟电压范围为04.98V。
四、实验内容
1、把DAC0832的片选接偏移为10H的地址,使用debug命令来测试DAC0832
的输出,通过设置不同的输出值,使用万用表测量Ua和Ub的模拟电压,
检验DAC0832的功能。选取典型(最低、最高和半量程等)的二进制值进行检验,记
2、ADC0809功能检测:将实验箱的直流信号输出接到ADC0809的IN-0端口, 编程不断将模数转换的结果输出到屏幕上,设置一定的延时让数据每秒钟更新一次,以免屏幕更新太快无法读取数据。实验代码如下:
STACK SEGMENT PARA STACK DW 128H DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE, SS:STACK
START:
MOV AX,CS
MOV DS,AX
RE:
MOV DX,0E498H
OUT DX,AL
CALL DELAY
PUSH AX
PUSH CX
IN AL,DX
MOV CL,4
SHR AL,CL
CALL DISP
POP CX
POP AX IN AL,DX CALL DISP
MOV DL,0DH INT 21H
MOV DL,0AH INT 21H MOV AH,1 INT 16H JNZ EXIT JMP RE
EXIT:
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH AX
PUSH CX
PUSH DX MOV AH,86H
MOV CX,0FH
MOV DX,4240H
INT 15H
POP DX
POP CX
POP AX
RET DELAY ENDP DISP PROC NEAR
PUSH DX
AND AL,0FH MOV DL,AL
CMP DL,9 JLE NUM
ADD DL,7 NUM:
ADD DL,30H MOV AH,02H INT 21H
POP DX
RET DISP ENDP
CODE ENDS
END START
3、编写一个简单的电子琴程序,通过键盘输入17,控制扬声器的输出为C 调的do 到si 。按其它键程序退出。实验代码如下:
STACK SEGMENT PARA STACK
DW 128H DUP(0)
STACK ENDS
DATA SEGMENT
SIN DB 080H,096H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH DB
0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,096H DB
080H,066H,04EH,038H,025H,015H,009H,004H DB
000H,004H,009H,015H,025H,038H,04EH,066H
TIME DB 077H,06AH,05FH,059H,050H,047H,03FH
NUM DB (?)
DATA ENDS