这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » TLC5615驱动

共1条 1/1 1 跳转至

TLC5615驱动

助工
2014-10-14 20:34:35     打赏

.概述


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


.电路设计


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


 


          


 


.软件设计


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


*程序名称:TLC5615驱动


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




* MCU型号:AT89S52-24PU


*时钟频率:12MHZ




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


#include<reg52.h>


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;


}


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]