TLC5615的CVAVR程序
// TLC5615輸出電壓0-5V
// 芯片 ATMEGA16L
// 時(shí)鐘 4MHz 內(nèi)部
// 采用系統(tǒng)自帶延時(shí)程序
#include
#include
#define SCLK5615 PORTD.4 // tlc5615時(shí)鐘線, PD4輸出
#define DATA5615 PORTD.5 // tlc5615數(shù)據(jù)線, PD5輸出
#define CS5615 PORTD.6 // tlc5615片選線 ,PD6輸出
void tlc5615(unsigned int dat);
void main()
{
delay_ms(200);
DDRD=0xff;
tlc5615(200); // 轉(zhuǎn)換輸出電壓=2*Vref*code/1024,輸出電壓最大為電源電壓。當(dāng)前輸出1.77V。
while(1);
}
void tlc5615(unsigned int dat)
{
unsigned char i;
CS5615=1;
DATA5615=0;
SCLK5615=0; // CS高電平期間,SCLK為低電平
dat<<=6; // 數(shù)字量dat左移6位,保留原dat低10位。新dat的高10位有效,低6位全0。
CS5615=0; // CS片選有效,開始接收數(shù)據(jù)
SCLK5615=0;
for(i=0;i<12;i++) // 發(fā)送10位數(shù)據(jù)和2位0,從最高位開始發(fā)送。
{ // 非級(jí)聯(lián)方式,只需要輸入12位數(shù)據(jù)。
if((dat&0x8000)==0x8000)
DATA5615=1;
else
DATA5615=0;
SCLK5615=1; // SCLK上升沿,數(shù)據(jù)輸入
dat<<=1;
SCLK5615=0; // SCLK恢復(fù)低電平
}
CS5615=1; // CS上升沿,數(shù)據(jù)送到DAC寄存器
// CS的上升沿和下降沿只有在SCLK為低的時(shí)候有效
SCLK5615=0;
DATA5615=0; // 拉高片選端,拉低時(shí)鐘端與數(shù)據(jù)端,回到初始狀態(tài)
}