用dac0832产生正弦波的设计

更新时间:2024-04-21 05:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要 : DAC 转换器是一种将数字量转换成模拟量的器件,本论文简要介绍模数

转换器 DAC0832 的工作原理和芯片结构,并利用模数转换器 DAC0832 输出正弦 波

进一步分析输出波形的模拟失真度。

关键词 : 模数转换器 DAC0832 ,正弦数据区,模拟失真度, FFT 变换。 引言:

1 . 简要模数转换器 DAC0832 的介绍

DAC 转换器是一种将数字量转换成模拟量的器件,其特点是接收、保持和转 换

的是数字信息,不存在随温度和时间的漂移问题,因此电路的抗干扰性能较好。

DAC0832 是 8 位分辨率的 D/A 转换集成芯片,它具有价格低廉、接口简单及 转

换控制容易等特点。它由 8 位输入锁存器、 8 位 DAC 寄存器、 8 位 DIA 转换电路

及转换控制电路组成,能和 CPU 数据总线直接相连,属中速转换器,大约在 1u s

内将一个数字量转换成模拟量输出。 1.1 DAC0832 的结构如下 :

D0 ~ D7 : 8 位数据输入线, TTL 电平,有效时间应大于

90ns( 否则锁存器的 数 据会出错 ) ;

ILE :数据锁存允许控制信号输入线,高电平有效; CS :片选信号输入线(选通数据锁存器),低电平有效;

WR1 :数据锁存器写选通输入线,负脉冲(脉宽应大于 500ns )有效。由 ILE 、

CS 、 WR1 的逻辑组合产生 LE1 ,当 LE1 为高电平时,数据锁存器状态随输入数据

线变换, LE1 的负跳变时将输入数据锁存;

XFER :数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于 500ns ) 有效;

WR2 : DAC 寄存器选通输入线,负脉冲(脉宽应大于 500ns )有效。由 WR1 、 X FER

的逻辑组合产生 LE2 ,当 LE2 为高电平时, DAC 寄存器的输出随寄存器的输入而

变化, LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器并开始 D/A 转换。

IOUT1 :电流输出端 1 ,其值随 DAC 寄存器的内容线性变化;IOUT2 :电流输出端 2 ,其值与 IOUT1 值之和为一常数; Rfb :反馈信号输入线,改变 Rfb 端外接电阻值可调整转换满量程精度;

Vcc :电源输入端, Vcc 的范围为 +5V ~ +15V ;

VREF :基准电压输入线, VREF 的范围为 -10V ~ +10V ; AGND :模拟信号地 DGND :数字信号地

1.2 DAC0832 的引脚图和内部结构 1.3 DAC0832 的三种工作方式 1 .直通方式

直通方式就是使 DAC0832 内部的两个寄存器(输入寄存器和 DAC 寄存器)

处于不锁存状态,数据一旦到达输入端 DI7 ~ DI0, 就直接送入 D/A 转换器,被转

换成模拟量。当 ILE 为高电平, CS 和 WR 1 ﹑ WR 2 和 XFER 端都接数字地,这时

锁存信号 LE 1 ﹑ LE 2 均为高

电平,输入寄存器和 DAC 寄存器均处于不锁存状态,即直通方式。2 .单缓冲方式

单缓冲方式就是使两个寄存器中的一个处于缓冲方式,另一个处于锁存方式,

数据只通过一级缓冲器送入 D/A 转换器。通常的做法是将和 XFER 均接地,使

DAC 寄存器处于直通方式,而把 ILE 接高电平,接端口地址译码信号, WR 1 接

CPU 系统总线的 IOW 信号,使输入寄存器处于锁存方式。单缓冲方式只需执行

一次写操作即可完成 D/A 转换。一般不需要多个模拟量同时输出时,可采用单 缓冲方式。 3 .单缓冲方式

单缓冲方式就是使两个寄存器均处于锁存方式,数据要经过两级锁存(即两 级

缓冲)后再送入 D/A 转换器,这就是说,要执行两次写操作才能完成一次 D/A 转

换。只要将 ILE 接高电平, WR 1 和 WR 2 接 CPU 的 IOW , CS 和 XFER 分别接两

个不同的 I/O 地址译码信号即可。

图中的 Rfb 是内部电阻,是为外部运算放大器提供的反馈电阻,用以提供适当

的输出电压, Vref 端是由外电路为芯片提供的参考电源,电压范围在 -10V ~

+10V 。另外, DAC0832 为电流输出型 DAC ,使用时需外接运算放大器,芯片

的电源电压最好 工作在 +15V 。 2 利用 DAC0832 产生正弦波 2.1 设计出原理图

2.2 编写程序和必要说明 1 ) CODE SEGMENT ASSUME CS:CODE DAPORT EQU 0070H CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA EQU 0500H

START: JMP DACONTORLDACONTORL:CALL FORMAT CALL LEDDISP MOV DX,DAPORT

SS2 : MOV AL, 8 0H ;初始值 MOV BX , 0H DACON1: OUT DX,AL MOV CX, 0008 H ; INC BX

CMP BX,32 ; 比较一个周期是否结束 JZ SS2

DACON2: LOOP DACON2

MOV AL,CS:[BX+OFFSET SINDATA] ; 正弦取值 JMP DACON1

LEDDISP:MOV AL,90H MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00 H LED1: CMP BYTE PTR DS:[0600H],07H JA LED2

MOV BL,DS:[0600H] MOV BH,0H

MOV AL,CS:[BX+DATA] MOV DX,DATAPORT OUT DX,AL

ADD BYTE PTR DS:[0600H],01H JNZ LED1 LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H ADD BX,2

MOV WORD PTR DS:[BX+0500H],4F5BH ADD BX,2

MOV WORD PTR DS:[BX+0500H],3F7FH ADD BX,2 RET

SINDATA: DB 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh ; 正弦波数据数据区

DB 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h DB 80h,66h,4eh,38h,25h,15h,09h,04h DB 00h,04h,09h,15h,25h,38h,4eh,66h CODE ENDS END START

2 )说明上面程序中的正弦波数据区的数据共有 32 个,通过两个公式算出。当

0<=x<=8*pi/16 时,通过 128+127*sin(x) 计算数据,当 24*pi/16<=x<=2*pi 时 ,

通过 127* 【 1+sin(x) 】来计算数据, pi/2 到 3*pi/2 区间的数据可对称写出。 3 计算模拟失真度 3.1 模拟失真度的定义

模拟失真度一般由基波剔除法和频谱分析法来计算,本论文采用频谱分析法 来

计算。基本方法就是通过傅里叶变换,产生出信号的频谱图,根据频谱含量 Cn , 计算出失真度。

基于 FFT 的失真度仪,采用频域分析方法,通过计算傅立叶系数, C1 、 C2 … Cn ,最后得到失真度基于 F FT

的 失真度仪,采用频域分

析方法,通过计算傅立叶系数, C1 、 C2 … Cn ,最后得到失真度

3.2 用 MATLAB 软件绘出实际频谱的程序如下 :

x=[0,0.975,1.913,2.778,3.535,4.157,4.619,4.904,5,4.904,4.619,4.157,3. 535,2.778,1.913,0.975,0,-0.975,-1.913,-2.778,-3.535,-4.157,-4.619,- 4.904,-5,-4.904,-4.619,-4.157,-3.535,-2.778,-1.913,-0.975,0] n=0:31; Xk=fft(x);

magXk=abs(x(1:17)); k1=0:1:16;w1=2*pi/32*k1;

subplot(212);stem(w1,magXk);title('samples of DTFT magnitude'); xlabel('freuency in pi'); axis([0,pi,0,100]);

3.3 正弦函数的时域图形、理想频谱和实际频谱理想连续波形 正弦序列

理想频谱结论:本设计产生的信号模拟失真度位 12.5 % . 可知失真度较大,可采取的

具体措施 为一个周期取更多的点, 0832 最多抽 256 个有效点数。

本文来源:https://www.bwwdw.com/article/tg5p.html

Top