void ADC_1120_AIN1_CONVER()
{
//**********************************************
//ADC初始化
//**********************************************
Delay_N_ms(1);//延時(shí)
ADC_CS_LOW;//選中ADC芯片
Delay_N_ms(1);//延時(shí)
SPI1_SendByte(0x06);//復(fù)位ADC命令
Delay_N_ms(1);//延時(shí)
SPI1_SendByte(0x43);//0x43--01000011,寫(xiě)四個(gè)寄存器,從00-11開(kāi)始寫(xiě)
SPI1_SendByte(0x91);//寫(xiě)00寄存器----AIN1為模擬輸入管腳,無(wú)增益,PGA失能
SPI1_SendByte(0xc4);//寫(xiě)01寄存器----數(shù)據(jù)傳輸率1000SPS,單次轉(zhuǎn)換模式
SPI1_SendByte(0x00);//寫(xiě)10寄存器----內(nèi)部2.048V參考源
SPI1_SendByte(0x00);//寫(xiě)11寄存器----DRAY提示轉(zhuǎn)換結(jié)束
//SPI1_SendByte(0x23);//讀寄存器,查看是否正確
//Delay_N_ms(1);//延時(shí)
//UART2_PutChar(SPI1_ReadByte(0x00));
//UART2_PutChar(SPI1_ReadByte(0x00));
//UART2_PutChar(SPI1_ReadByte(0x00));
//UART2_PutChar(SPI1_ReadByte(0x00));
SPI1_SendByte(0x08);//打開(kāi)ADC轉(zhuǎn)換使能,開(kāi)始ADC轉(zhuǎn)換
Delay_N_ms(1);//延時(shí)
ADC_CS_HIGN;
//**********************************************
//ADC結(jié)果讀取并進(jìn)行數(shù)據(jù)處理后通過(guò)RS485發(fā)送至計(jì)算機(jī)
//**********************************************
u16 ADC_HIGN_DATA=0,ADC_LOW_DATA=0;
unsigned char counter,a,b,c,d,e;
u16 ADC_DATA=0;
u32 ADC_8TIMES_DATA=0;
for(counter=0;counter<8;counter++)
{
while(!(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_10) == RESET));//判斷DRAY管腳點(diǎn)平是否變低,數(shù)據(jù)是轉(zhuǎn)換完成準(zhǔn)備
ADC_CS_LOW;
Delay_N_ms(1);
ADC_HIGN_DATA=SPI1_ReadByte(0x00);//讀取ADC結(jié)果高8位
ADC_LOW_DATA=SPI1_ReadByte(0x00);//讀取ADC結(jié)果低8位
Delay_N_ms(1);
ADC_CS_HIGN;
//UART2_PutChar(ADC_HIGN_DATA);
//UART2_PutChar(ADC_LOW_DATA);
ADC_DATA = ADC_HIGN_DATA*256 + ADC_LOW_DATA;//得到16位AD數(shù)據(jù)
ADC_8TIMES_DATA += ADC_DATA;//累加八次做濾波處理
ADC_DATA=0;
}
ADC_DATA = ADC_8TIMES_DATA >> 3;//取八次平均值
ADC_8TIMES_DATA=0;//清零累加器
ADC_DATA = (unsigned int)(((unsigned long)ADC_DATA)*2*20480/65536);//電壓值*10000,用以下來(lái)分離各個(gè)數(shù)字,取小數(shù)點(diǎn)后4位
//ADC_DATA = Real_ADC * 10000;
a = ADC_DATA /10000;
b = ADC_DATA % 10000 / 1000;
c = ADC_DATA % 1000 / 100;
d = ADC_DATA % 100 / 10;
e = ADC_DATA % 10;
UART2_PutChar(0x56);//V
UART2_PutChar(0x4C);//L
UART2_PutChar(0x3D);//=
UART2_PutChar(a+48);
UART2_PutChar(0x2E);//.
UART2_PutChar(b+48);
UART2_PutChar(c+48);
UART2_PutChar(d+48);
UART2_PutChar(e+48);
//UART2_PutChar(0x0D);//回車(chē)
//UART2_PutChar(0x0A);//換行
Delay_N_ms(5);
ADC_CS_HIGN;
//**********************************************
//結(jié)束后使ADC進(jìn)行掉電模式
//**********************************************
ADC_CS_LOW;//選中ADC芯片
Delay_N_ms(1);//延時(shí)
SPI1_SendByte(0x02);//POWERDOWN掉電命令
Delay_N_ms(1);//延時(shí)
}
評(píng)論