📄 adc.bak
字号:
/**********************************************************************
ADC.c file
ADuC7027的ADC函数
作者:Computer-lov
建立日期:2006-3-25
修改日期:2006-3-25
版本:V1.0
版权所有,盗版必究。
Copyright(C) Computer-lov 2006-2016
All rights 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 + -