#include sbit SCLK5615=P1^3; }
sbit DA
sbit CS5615=P1^1;
void tlc5615(unsigned int dat);// TLC5615轉(zhuǎn)換函數(shù)
void delaynms(unsigned char k); // ms延時(shí)函數(shù)
void main()
{
delaynms(200);
tlc5615(100); // 轉(zhuǎn)換輸出電壓=2*Vref*co
while(1);
void tlc5615(unsigned int dat)
{
unsigned char i;
CS5615=1;
DA
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ā)送。
{ // 非級聯(lián)方式,只需要輸入12位數(shù)據(jù)。
if((dat&0x8000)==0x8000)
DA
else
DA
SCLK5615=1; // SCLK上升沿,數(shù)據(jù)輸入
dat<<=1;
SCLK5615=0; // SCLK恢復(fù)低電平
}
CS5615=1; // CS上升沿,數(shù)據(jù)送到DAC寄存器
// CS的上升沿和下降沿只有在SCLK為低的時(shí)候有效
SCLK5615=0;
DA
}
void delaynms(unsigned char k) //延時(shí) n ms
{
while(k)
{
int i;
i=110;
while(i--);
k=k-1;
}
}