- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数模转换TLC5620 DAC
(1)TLC5620 DA简介
TLC5620C是带有高阻抗缓冲输入的4通道8位电源输出数模转换器集合。这些转换器可以产生单调的、一至两倍于基
准电压和接地电压差值的输出。通常情况下TLC5620的供电电压为一个5V电源。器件内集成上电复位功能,确保启动时的环境是可重复的。
对TLC5620C的数字控制是通过一根简单的3路串行总线实现的。该总线兼容CMOS,并易于向所有的微处理器和微控制器设备提供接口。11位的命令字包括8位数据位,2位DAC选择位和1位范围位,后者用来选择输出范围是1倍还是2倍。DAC寄存器采用双缓存,允许一整套新值被写入设备中。通过LDAC实现DAC输出值的同时更新。数字量的输入采用
史密斯触发器,从而有效降低噪声。
TLC5620的特点不对应原理框图如下:
?4通道8位电压输出D/A转换器
?5V单电源
?串行接口
?高阻抗的基准输入
?可编程实现1至2倍的输出范围
?设备可同时迚行更新
?内置上电复位
?低功耗
?半缓冲输出
(2)TLC5620 硬件接口
TLC5620引脚名称如图所示
TLC5620可方便的与单片机连接使用。与单片机的接口如图所示:
其中VREF为2.5V基准源,四个通道都采用其作为基准源,输入5V电压不输出电压都经过滤波,保证精度。
(3)TLC5620 工作时序
TLC5620是串联型8位D/A转换器(DAC),它有4路独立的电压输出D/A 转换器,具备各自独立的基准源,其输出还可以编程为2倍戒1倍,在控制TLC5620时,只要对该芯片的DATA、CLK、LDAC、LOAD端口控制即可,TLC5620控制字为11位,包括8位数字量,2位通道选择,1位增益选择。其中命令格式第1位、第2位分别为A1、A0,第3位为RNG,
即可编程放大输出倍率,第4到11位为数据位,高位在前,低位在后。通道不输出关系如下
TLC5620中的每个DAC的核心是带有256个抽头的单电阻,每一个DAC的输出可配置增益输出放大器缓冲,上电时,DAC被复位且代码为0。每一通道输出电压的表达式为:
输出电压Vo=Vref*(CODE/256)*(1+RNG)
其中,CODE的范围为0~255,RNG位是串行控制字内的0戒1。
管脚DATA为芯片串行数据输入端,CLK为芯片时钟,数据在每个时钟下降沿输入DATA端,数据输入过程中LOAD始终处于高电平,一旦数据输入完成,LOAD置低,则转换输出,实验中LDAC一直保持低电平,DACA、DACB、DACC、DACD为四路转换输出,REFA、REFB、REFC、REFD为其对应的参考电压。
TLC5620的时序图如图所示。
当LOAD为高电平时,数据在CLK每一下降沿由时钟同步送入DATA端口。如图(a)所示,一旦所有的数据位送入,LOAD变为脉冲低电平,以便把数据从串行输入寄存器传送到所选择的DAC。如果LDAC为低电平,则所选择的DAC输出电压更新且LOAD变为低电平。在图(b)中,串行编程期间内LDAC为高电平,新数值被LOAD的脉冲低电平打入第一级锁存器后,
再由LDAC脉冲低电平传送到DAC输出。数据输入时最高有效位(MSB)在前。使用两个8时钟周期的数据传送示于图(c)和图(d)中。
C语言程序:
#includereg52.h
#include intrins.h
#define uint unsigned int
#define uchar unsigned char
sbit DADATA=P0^4;
sbit DACLK=P0^5;
sbit DALOAD=P0^6;
sbit DALDAC=P0^7;
void TLC5620(float date)
{
uchar i=0,dat=0;
DACLK=0;
DALOAD=1;
DALDAC=1;
_nop_();
_nop_();
for(i=0;i3;i++)
{
DACLK=1;
_nop_();
_nop_();
DADATA=0;//0通道 0倍增益
_nop_();
DACLK=0;
_nop_();
_nop_();
}
datt=(uchar)(date*256/5);//基准电压为5V 不放大增益
for(i=0;i8;i++)
{
DACLK=1;
_nop_();
_nop_();
dat=datt0x80;//送数据
if(dat) DADATA=1;
else DADATA=0;
DACLK=0;
_nop_();
_nop_();
datt=1;
}
_nop_();
DALDAC=0;
_nop_();
DALOAD=0
文档评论(0)