DAC7611控制數(shù)/模轉(zhuǎn)換器程序
/****************************************************
子程序名:DAC7611
程序功能:控制數(shù)/模轉(zhuǎn)換器DAC7611的工作
程序出口:引腳P1.0(輸出片選信號(hào))
引腳P1.1(輸出時(shí)鐘)
引腳P1.2(輸出數(shù)據(jù))
引腳P1.3(輸出數(shù)/模轉(zhuǎn)換過(guò)程啟動(dòng)信號(hào))
12M晶振
*******************************************************/
#include
#include
#defineuintunsignedint
sbitCS=P1^0;//輸出片選信號(hào)
sbitCLK=P1^1;//輸出時(shí)鐘
sbitSDI=P1^2;//輸出數(shù)據(jù)
sbitLD=P1^3;//輸出數(shù)/模轉(zhuǎn)換過(guò)程啟動(dòng)信號(hào)
/******初始化DAC7611******************/
voidinit_da(void)
{
LD=0;//裝載引腳置低
CS=1;//片選置高
CLK=1;//時(shí)鐘置高
SDI=0;
}
/*****時(shí)鐘脈沖子函數(shù)***********/
voidcLOCk(void)
{
CLK=0;
_nop_();
CLK=1;//產(chǎn)生一個(gè)時(shí)鐘脈沖
_nop_();
}
/******DAC7611轉(zhuǎn)換***************/
voidDAC_7611(uintvol)
{
uinti,j;
vol<<=4;
LD=1;//裝載引腳置高
_nop_();
CS=0;//片選拉低,準(zhǔn)備轉(zhuǎn)換
for(i=0;i<12;i++)
{
j=vol;
SDI=j&0x8000;
clock();
vol<<=1;
}
CLK=1;//輸出時(shí)鐘置高
_nop_();
CS=1;//DAC7611片選引腳CS置高
_nop_();
LD=0;//裝載引腳LD置低以啟動(dòng)數(shù)模轉(zhuǎn)換
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();//延時(shí)一會(huì),使輸出模擬電壓達(dá)到穩(wěn)定
LD=1;//LD置高
}
/**********主程序*****************/
voidmain()
{
init_da();
DAC_7611();
}
DAC7611控制數(shù)/模轉(zhuǎn)換器程序