|
发表于 2022-7-29 09:40:24
|
显示全部楼层
/*******************************************************************
函数名:ADC初始化及8位A/D转换函数
返回值:8位的ADC数据
结 果:读出指定ADC接口的A/D转换值,并返回数值
备 注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
*******************************************************************/
uchar Read (uchar CHA)
{
uchar i;
uint ADC = 0;
uchar AD_FIN=0; //存储A/D转换标志;若在函数外定义此变量则不能得到连续变化的模拟量的显示
for(i=0;i<10;i++)
{
/******以下为ADC初始化程序****************************/
CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位)
ADC_CONTR = 0x60; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置)
_nop_();
ADC_CONTR |= CHA; //选择A/D当前通道
_nop_();
ADC_CONTR |= 0x80; //启动A/D电源
delay(1); //使输入电压达到稳定(1ms即可?
/******以下为ADC执行程序****************************/
ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1)
_nop_();
_nop_();
_nop_();
_nop_();
while (AD_FIN ==0)
{ //等待A/D转换结束
AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否
}
ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换,
ADC += ADC_DATA;
}
ADC = ADC/10;
return ((uchar)ADC); //返回A/D转换结果(8位)
} |
|