注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

III = Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

TLC5615测试电路  

2017-07-27 09:19:07|  分类: 数字电路 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
TLC5615 是TI公司的产品,是具有串行接口的DAC,其输出为电压型,而且最大输出电压是基准电压值的两倍,性能比早期电流型输出的 DAC 要好。只需要通过 3 根串行总线就可以完成 10 位数据的串行输入, 易于和SPI等接口连接。
接线原理图:
TLC5615测试电路 - Lemniscate - 信息 灵感 创新
 代码如下:
#include <reg51.h>
#include <intrins.h>

sbit CLK=P2^4;
sbit CS=P2^5;
sbit DIN=P2^6;
sbit DOUT=P2^7;//though not in use

void delay(unsigned int m)
{
    unsigned char z;
    for(;m>0;m--)
        for(z=100;z>0;z--);
}

void Init_TLC5615()
{
    CS=1;
    CLK=0;
}

void DAConversion_TLC5615(unsigned int dat)
{
    unsigned char i;
    CS=0;//the first come out bit is MSB
    dat<<=2;//fill last 2 bits with 0
    for(i=0;i<12;i++)
    {
        CLK=0;
        DIN=(dat&0x800)>>11;
        CLK=1;//raising edge transfer data
        dat<<=1;
    }
    CS=1;
}

void main()
{
    unsigned int ui=0;
    Init_TLC5615();
    while(1)
    {
        DAConversion_TLC5615(ui);
        ui++;
        if(ui>=1024)ui=0;
        delay(100);
    }
}
代码中唯一需要提一下的是DAConversion_TLC5615这个函数。虽然TLC5615是10位的DAC,但是内部锁存器是12位的,最低两位需要用0补齐,这个可以查阅Datasheet:
TLC5615测试电路 - Lemniscate - 信息 灵感 创新
 然后就是串行数据的传输,需要注意两点:
1. 先传送的是MSB,因此语句DIN=(dat&0x800)>>11每次取最高位传送,然后让dat左移1位即可把次MSB变为MSB。
2. 数据在时钟的上升沿传送,因此在准备数据时,CLK=0,数据准备好之后CLK=1,即可将数据传递出去。Datasheet中对于数据输入的时间都在纳秒(ns)级别,因此不需要刻意去延时。
模拟量的输出,需要了解的是,最高可以达到参考输入电压的两倍,因此,电路图中为了显示的连贯性和范围,使用了+2.048V这一电压值。
  评论这张
 
阅读(57)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017