TLV5616(12位D/A转换芯片)单片机驱动

来源:互联网 发布:歌词中有你知到我知道 编辑:程序博客网 时间:2024/06/05 03:57

芯片封装和引脚如图:


代码如下:

#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int void tlv5616_da(uint da);sbit tlv5616_clk=P1^1;sbit tlv5616_data=P1^0;sbit tlv5616_cs=P1^3;sbit tlv5616_fs=P1^2;void tlv5616_da(uint da){    uchar i;    tlv5616_cs=0;    tlv5616_clk=1;    tlv5616_fs=0;    for(i=0;i<16;i++){      _nop_(); _nop_();      tlv5616_data=(bit)(da&0x8000);      tlv5616_clk=0;      _nop_();_nop_();      da<<=1;      tlv5616_clk=1;      _nop_(); _nop_();    }        tlv5616_cs=1;    tlv5616_fs=1;    tlv5616_clk=0;    for(i=0;i<16;i++);}void main(void){    while(1){   tlv5616_da(1000);       _nop_();_nop_();_nop_();_nop_();   tlv5616_da(2000);       _nop_();_nop_();_nop_();_nop_();   tlv5616_da(3000);       _nop_();_nop_();_nop_();_nop_();       tlv5616_da(4000);       _nop_();_nop_();_nop_();_nop_();   tlv5616_da(3000);       _nop_();_nop_();_nop_();_nop_();   tlv5616_da(2000);       _nop_();_nop_();_nop_();_nop_();   tlv5616_da(1000);       _nop_();_nop_();_nop_();_nop_();       tlv5616_da(0);    }}

经D/A芯片转换后产生的波形如下所示:

(------------完-------------)