SPI串行接口AD轉(zhuǎn)換器TLC2543的驅(qū)動(dòng)程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
SPI串行接口AD轉(zhuǎn)換器TLC2543的驅(qū)動(dòng)程序
//-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
#include
#include
//--------------------------------------------------------------------------------------------------
//2543控制引腳宏定義
//--------------------------------------------------------------------------------------------------
sbitSS1=P1^0;//將p1.0口模擬片選
sbitSCK=P1^1;//將p1.1口模擬時(shí)鐘輸出
sbitMOSI=P1^2;//將p1.2口模擬主機(jī)輸出
sbitMISO=P1^3;//將p1.3口模擬主機(jī)輸入
//-----------------------預(yù)定義控制字--------------------------------------------------------
#defineCONTROL_WORD0x00//選擇通道0,輸出數(shù)據(jù)長度12bit,MSB,單極性二進(jìn)制數(shù)
//--------------------------------------------------------------------------------------------------
//函數(shù)名稱:delay
//入口參數(shù):N
//函數(shù)功能:延時(shí)子程序,實(shí)現(xiàn)(16*N+24)us的延時(shí)
//系統(tǒng)采用11.0592MHz的時(shí)鐘時(shí),延時(shí)滿足要求,其它情況需要改動(dòng)
//--------------------------------------------------------------------------------------------------
voiddelay(unsignedintN)
{
inti;
for(i=0;i
//--------------------------------------------------------------------------------------------------
//名稱:read2543
//功能:TLC2543驅(qū)動(dòng)模塊
//輸入?yún)?shù):CON_WORD控制字
//輸出參數(shù):ad轉(zhuǎn)換值
//--------------------------------------------------------------------------------------------------
unsignedintread2543(unsignedcharCON_WORD)
{
unsignedintad=0,i;
SCK=0;
SS1=0;
for(i=0;i<12;i++)
{
if(MISO)ad|=0x01;
MOSI=(bit)(CON_WORD&0x80);
SCK=1;
delay(3);
SCK=0;
delay(3);
CON_WORD<<=1;
ad<<=1;
}
SS1=1;
ad>>=1;
return(ad);
}
//--------------------------------------------------------------------------------------------------
//名稱:main
//功能:主函數(shù)
//輸入?yún)?shù):無
//輸出參數(shù):無
//--------------------------------------------------------------------------------------------------
voidmain()
{unsignedintad;
while(1)
{
ad=read2543(CONTROL_WORD);
}
}