微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AT89S52+TLC5615驱动

AT89S52+TLC5615驱动

时间:11-29 来源:互联网 点击:
一.概述

TLC5615是德州仪器公司生产的一款10位D/A转换器,单路电压输出,输出电压最大可达到基准电压的两倍,可带最小2K欧姆的负载。这款芯片带有上电复位功能,采用三线制串行总线接口,兼容SPI通信,最大转换时间为12.5微秒(输入从0x000变为0x3ff或者从0x3ff变为0x000,输出稳定信号的时间),还能进行多片级联使用。TLC5615是一款性价比高、很常用的10位数模转换芯片。

二.电路设计

在WSF-51DB开发板上,TLC5615的输出端不接任何负载,只是扩展了一个接口,作为测量仪器的接口。芯片的基准电压取自电源电压DC5V。

三.软件设计

/**************************************************************************

*程序名称:TLC5615驱动

*程序功能:向TLC5615写入数字信号,测量观察输出模拟信号

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者:吴师傅

*版权说明:吴师傅版权所有。转载请注明来源和作者。

**************************************************************************/

#i nclude

sbit sclk=P3^3;//串行时钟

sbit din=P3^2;//串行数据输入

sbit cs=P3^4;//片选

sbit dout=P0^7;//串行数据输出

//延时毫秒函数:

void Delayms(unsigned int t)

{

unsigned int x,y;

for(x=t;x>0;x--)

for(y=120;y>0;y--);

}

//写TLC5615数据函数:

void WriteTLC5615(unsigned int wdata)

{

unsigned char i;

cs=0;//片选使能

wdata<=2;//将数据左移两位,补两位扩展位,组成12位数据写入

for(i=0;i<12;i++)//写入12位数据

{

sclk=0;

din=(wdata&0x0800)?1:0;//取出最高位(第11位)写入

sclk=1;//上升沿送数据

wdata<=1;//下一位移到最高位

}

cs=1;//片选禁止

}

//主函数:

int main(void)

{

unsigned int i;

while(1)

{

//因参考电压取自电源电压5V,输入数据达到512时,转换输出电压就已达到参考电压

//输入数据大于512时,输出电压已经无法再上升。

for(i=0;i<512;i++)

{

WriteTLC5615(i);//输入数据从0-512每间隔200ms递增,

Delayms(200);

//用万用表测量输出引脚,会看到电压从0V-4V每间隔200ms以约10mv递增

}

}

return 0;

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top