学习笔记 从零开始学单片机(4) D/A转化

来源:互联网 发布:深圳太极软件 编辑:程序博客网 时间:2024/04/29 06:59

 

DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。如图所示,它由倒TR-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。运算放大器输出的模拟量V0为:

 

gongshi

由上式可见,输出的模拟量 与输入的数字量 成正比,这就实现了从数字量到模拟量的转换。

dd

一个8D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。下面的图是DAC0832的逻辑框图和引脚排列。

的

 

CS:片选信号,低电平有效,与ILE相配合,可以对写信号WR1是否有效起到控制作用

D0~D7:数字信号输入端。

ILE:输入寄存器允许,高电平有效。

CS:片选信号,低电平有效。

WR1:写信号1,低电平有效。

XFER:传送控制信号,低电平有效。

WR2:写信号2,低电平有效。

IOUT1IOUT2DAC电流输出端。

Rfb:是集成在片内的外接运放的反馈电阻。

Vref:基准电压(-10~10V)。

Vcc:是源电压(+5~+15V)。

AGND:模拟地 NGND:数字地,可与AGND接在一起使用。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

 

丰富

 

试验原理图:

在这里,CS接P3.2,WR1接P3.6, WR2接地,XREF接地,ILE接+5V,使用OUT1输出电流,点亮发光二极

看起来好像挺复杂似的,其实只要看时序图就会发现非常的简单,下面就是时序图,按照时序图来编程序即可

 

sxt

 

以上是DAC0832的时序图,接下来我们就可以编程序了,让发光二极管显示两种亮度

 

 

#include #include sbit ADCS=P3^2;sbit ADWR=P3^6;void delay(unsigned int limit);void AD0832(unsigned char outByte);void main(){while(1){AD0832(0x00);delay(100);AD0832(0x80);delay(100);AD0832(0xFF);delay(100);AD0832(0x80);delay(100);}}void AD0832(unsigned char outByte){ADCS = 0;               //ILE=1;               P0 = outByte;ADWR = 0;_nop_();ADWR = 1;_nop_();ADCS = 1;//ILE=0;}void delay(unsigned int limit){unsigned int j,k;for(k=0; k<limit; k++)
for(j=0; j<1000; j++);
}