手把手教学51单片机 | 第六课——D/A,A/D转换器,运放电路

1.数模转换器

又称D/A转换器,简称DAC,英文 Digital to Analog Converter,在MP3这种数字的音频信号需要转换器驱动扬声器;显卡输出的也是数字型号,也需要转换器转换给显示屏;工业吸合电磁铁。转换器有分分辨率的,那么什么是分辨率呢?

比如我们用八位DA生成0—5V的模拟电压,二进制八位就有2^8=256等分,显然位数越多,分辨率越高,5V / 256=19.5mV,所以19.5mV就是八位数模转换器的分辨率(可以理解成精度)。单片机中常用的是DAC0832。

在这里插入图片描述
接下来我们看内部原理,最右边I0的电阻是2R,与左边电阻2R并联,等效为R,再与I1的R串联,等效为2R,再与左边的电阻2R并联,等效为2R…(循环往复)。再看到I分为两份电流,这两份电流流过的等效电阻都是2R。在这里插入图片描述
在这里插入图片描述
直通工作方式
当DAC0832芯片的片选信号、写信号、及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。

如上图是我用的单片机中的DAC0832的引脚图,其中D0-D7为输入端的八位引脚,输出端out2接地,out1连接的是一个电流转换成电压的运放然后接发光二极管。其中CSDA一杠的意思是低电平有效芯片低电平才工作。现在写一个简单的程序,使得发光二极管最亮。

#include <reg52.h>
sbit csda=P3^2;//定义引脚
sbit wr=P3^6;

void main()
{
	//低电平有效
	csda=0;//片选:选中DA
	wr=0;
	//全送1
	P0=0xff;
	while(1);
}

2. 模数转换器


话不多说,下面是AD转换原理:逐步逼近法(个人觉得可以理解成二分法)
在这里插入图片描述
当输入一个模拟电压Vin,启动信号发送V/2,即最高位,与Vin比较大小,若V/2>Vin,最高位清零;若V/2<Vin,最高位保留1,返回D/A转换器,继续低一位,再次与Vin比较,循环往复…

就好像数学中的二分法,或者夹逼定理,当我们的满量程是5V,八位寄存器,第一次送10000000,即2.5V,若模拟电压是3.2V,2.5<3.2,那么我们知道这个数值在2.5V-5V之间,就将第一位保留,第二次送11000000…直到逼近这个值。

接下来查阅芯片手册,写出一个关动态二极管的程序在这里插入图片描述

#include <reg52.h>
sbit wr=P3^6;
sbit rd=P3^7;
#define uchar unsigned char
#define uint unsigned int
void start();
void init();
void delay(uint z)//延迟子程序
{
	uint t1,y;
	for(t1=z;t1>0;t1--)
		for(y=110;y>0;y--);
}

void main()
{
	init();
	while(1)
	{
		start();
		delay(100);//转动AD旋钮修改这个时间
		rd=0;
   		delay(10);
		rd=1;
		delay(10);
	}
}

void init()
{
	P0=0x7f;

void start()	
{
	wr=1;
	wr=0;
	wr=1;
}

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值