?? adc.c
字號:
/**********************************************************************
ADC.c file
ADuC7027的ADC函數
作者:Computer-lov
建立日期:2006-3-25
修改日期:2006-3-25
版本:V1.0
版權所有,盜版必究。
Copyright(C) Computer-lov 2006-2016
All rigths reserved
**********************************************************************/
#include <../My_type.h>
#include <ADuC7027.H>
#include "ADC.h"
////////////////////////由軟件啟動一次轉換,并將ADC結果返回//////////////////////////
uint16 ADC_software_conversion(void)
{
uint16 result;
ADCCON=0x00A3; //開始一次軟件啟動轉換
while(!(ADCSTA & 0x01)); //等待轉換完成
ADCCON=0x0020; //停止轉換
result=ADCDAT>>16; //保存結果
return result; //返回結果
}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////ADC校準/////////////////////////////////////////////////
void ADC_calibration(void)
{
uint16 i;
uint16 result;
ADCCP=0x11; //將輸入接內部地
for(i=0;i<0x03FF;i++) //零點偏移校準
{
ADCOF=i; //設置ADCOF的值
result=ADC_software_conversion(); //讀回ADC的值
if(result==0x01)
{ //校驗到的結果為1時,往回調整一點,就是0了
ADCOF=i-3;
break;
}
}
ADCCP=0x12; //將輸入連接到內部參考電壓
for(i=0;i<0x03FF;i++) //增益校準
{
ADCGN=i; //設置ADCGN的值
result=ADC_software_conversion();
if(result==4094)
{ //校驗結果為4094
ADCGN=i+6; //再將ADCGN加的一點
result=ADC_software_conversion();
if(result==4095)
{ //如果讀回的值為4095,則說明往增大的方向調整一點就是滿量程了
ADCGN=i+4;
break;
}
else
{ //否則,應該按相反的方向調整一點
ADCGN=i-4;
}
}
}
}
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////ADC初始化/////////////////////////////////////////////
void ADC_init(void)
{
ADCCON=0x0023; //ADC時鐘1MHz,打開ADC電源,單端模式,并選擇軟件轉換模式
ADCCP=0x00; //通道0
ADCCN=0x00; //通道0
REFCON=0x01; //使用內部2.5V參考電壓
ADC_calibration(); //ADC校準
ADCCP=0x00; //選擇通道0
}
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////選擇通道ch,啟動轉換,并將ADC結果返回///////////////////
uint16 read_ADC(uint8 ch)
{
ADCCP=ch & 0x1F; //設置通道
return ADC_software_conversion();
}
//////////////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -