TLC5615驱动

摘自:http://blog.21ic.com/user1/8392/archives/2012/91972.html

 

.概述

TLC5615是德州仪器公司生产的一款10D/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<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;

}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于驱动 TLC5615 数字模拟转换器(DAC)的 51 单片机,可以按以下步骤进行操作: 1. 连接硬件:将 TLC5615 DAC 的引脚与 51 单片机的相应引脚连接。TLC5615 有 VCC、GND、CS、CLK、SDI、LDAC 和 REFOUT 引脚,具体引脚功能可以参考其数据手册。 - VCC 和 GND 分别连接到 5V 和地。 - CS(片选)、CLK(时钟)和 SDI(串行数据输入)连接到 51 单片机的 GPIO 引脚。 - LDAC(加载 DAC 输出)可以直接接地,或者连接到 51 单片机的 GPIO 引脚用于外部控制。 - REFOUT(参考电压输出)可以忽略,或者连接到其他需要参考电压的电路。 2. 初始化串行通信:在 51 单片机上设置 GPIO 引脚用于控制 DAC 的 CS、CLK 和 SDI。根据具体的单片机型号和开发环境,使用相应的库函数或编写代码来初始化这些引脚。 3. 编写驱动代码:通过串行通信协议,向 TLC5615 发送配置信息以设置所需的模拟输出值。以下是一个简单的示例代码: ```c #include <reg51.h> sbit CS = P1^0; // 片选引脚 sbit CLK = P1^1; // 时钟引脚 sbit SDI = P1^2; // 串行数据输入引脚 void delay(unsigned int time) { while (time--); } void sendByte(unsigned char byte) { unsigned char i; for (i = 0; i < 8; i++) { SDI = (byte & 0x80) ? 1 : 0; // 设置串行数据输入引脚的值 byte <<= 1; CLK = 1; // 上升沿时钟 delay(10); // 延时 CLK = 0; // 下降沿时钟 delay(10); // 延时 } } void setDACOutput(unsigned int value) { CS = 0; // 片选使能 sendByte(0x30); // 写入模式命令,选择 DAC 寄存器 A sendByte(value >> 8); // 发送高位数据 sendByte(value & 0xFF); // 发送低位数据 CS = 1; // 片选禁止 } void main() { while (1) { // 设置 DAC 输出值为 2048(范围为 0-4095) setDACOutput(2048); } } ``` 上述代码中的 `setDACOutput` 函数用于设置 DAC 的输出值。可以根据需要调整代码中的引脚定义和延时时间。 请注意,以上仅为简单示例代码,实际应用中可能需要根据具体需求进行修改和优化。此外,还需要参考 TLC5615 的数据手册以了解详细的通信协议和配置要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值