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

 

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++);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值