AD模塊TLV5615/TLV5636

#include<12C5A60S2.h> 
#include<intrins.h>

sbit din  = P3^4;
sbit sclk = P3^5;
sbit cs   = P3^6;
sbit fs   = P3^7;
void TLV5636_WriteData(unsigned int da);
void TLV5636_Init(void);
void TLV5636_DA_Transform(unsigned int da);
unsigned int code da[]= {0x800,0x98f,0xb0f,0xc71,0xda7,0xea6,0xf63,0xfd8,0xfff,0xfd9,
                 0xf64,0xea8,0xda9,0xc74,0xb12,0x992,0x803,0x673,0x4f3,0x391,
                 0x25a,0x15b,0x9d,0x28,0x0,0x26,0x99,0x156,0x253,0x389,0x4ea,0x66a
                };
/**********************主程序(產生正弦波)*********************/
void main()
{
    unsigned char i;
    TLV5636_Init();
    while(1)
    {
        for(i=0; i<32; i++)
        {
            TLV5636_DA_Transform(da[i]);
        }
    }
}
/************************向TLV5636寫16位數據*************************/
void TLV5636_WriteData(unsigned int da)
{
    unsigned char i;
    cs=1;
    fs=1;
    cs=0;
    _nop_();
    fs=0;
    sclk=1;
    for(i=0; i<16; i++)
    {
        if(da&0x8000)
        {
            din=1;
        }
        else
        {
            din=0;
        }
        _nop_();
        da<<=1;
        sclk=0;
        sclk=1;
    }
    fs=1;
    cs=1;
}
/******************************初始化5636*************************/
void TLV5636_Init(void)
{
    TLV5636_WriteData(0xd002); //初始化設置爲快速模式,內部2.048V基準電壓
}
/****************************DA轉換函數**************************/
void TLV5636_DA_Transform(unsigned int da)
{
    da&=0x0fff;   //屏蔽高四位
    da|=0x4000;
    TLV5636_WriteData(da);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章