STC单片机ADC采样程序设计

#include“stc12c4052ad.h”
typedefstruct
{
boolrun;//bool量作为定时采样标志,比如每隔3秒,置位一
次该标志
bytecurch;//当前通道
bytetempcvdata[6];//转换结果临时缓冲
bytecvtimes;//采样次数采样4次,去最大最小,保留4个取平均值
byteaddata[max_adch];//max_adch保存各通道最终采样数据
}stadc;
stadcadc;
voidinitadc()
{
uint16i;
adc_contr=0xc0;//adc模块加电,420周期转换一次
for(i=0;i《20000;i++);//adc电源开启后,延时
//设置p口外ad模式
p1m0=0x03;//adc0/1高阻输入
p1m1=0x00;
eadc_spi=1;//开放adcspi总中断
adc_data=0;
auxr=eadci;//开放adc中断
memset(&adc,0,sizeof(stadc));
//启动0号通道
adc.curch=0;
adc_contr|=adc.curch;//设置下一通道
adc.run=true;//标志adc正在转换
adc_contr|=adc_start;//启动ad转换器
}
voidadcisr()interruptadc_vector
{
adc_contr&=adc_stop;//stopad
adc.run=false;
adc.tempcvdata[adc.cvtimes]=adc_data;//取转换值
adc_data=0;
adc.cvtimes++;
adc.cvtimes%=6;
if(adc.cvtimes!=0)
{
adc_contr|=adc_start;//启动ad转换器
adc.run=true;
}
adc_contr&=adc_flag;//清除adc_flag中断标志
}
voidproc_adc()
{
uint16cvsum=0,i;
bytemaxcv=0,mincv=0;
if(adc.run||adc.cvtimes!=0)//ad还在进行,等待
return;
for(i=0;i《6;i++)
{
if(adc.tempcvdata[i]》maxcv)
maxcv=adc.tempcvdata[i];
if(adc.tempcvdata[i]mincv=adc.tempcvdata[i];
}
for(i=0;i《4;i++)
cvsum+=adc.tempcvdata[i];
cvsum=cvsum-maxcv-mincv;
adc.addata[adc.curch]=(cvsum》》2);
adc.curch++;
adc.curch%=max_adch
adc_contr&=0xf8;//先清除当前通道值
adc_contr|=adc.curch;//设置下一通道
adc.run=true;//标志adc正在转换
for(i=0;i《500;i++);//通道切换延时100us左右
adc_contr|=adc_start;//启动ad转换器
}

单结晶体管的检测
将物联网技术运用到传统农业中,实现智能化管理
光纤激光用于医疗诊断的技术
飞兆半导体开发出一款集成漏电流感测功能的功率开关FSGM05
关于一种基于ARM嵌入式技术的牙椅控制系统设计深度剖析
STC单片机ADC采样程序设计
交流变频调速技术详解
谈谈虹膜识别用在智能手机 是喜是忧
iPhone7摄像头模块曝光,或配备光学防抖
iPhone 12 Pro Max将是韩国首款支持高频28GHz毫米波频段的手机
Intel傲腾存储终极形态DIMM内存明年到来 暂时不会彻底淘汰DDR4
新能源汽车电机气密性测试解决方案
Mobile、诺基亚上演专利诉讼“三国杀”
扫地机器人将在智能家居中扮演重要角色
中国电信与美团点评通过云会议,完成了战略合作协议的签署
详解分析0号进程的前世(init_task)今生(idle)
iphone8什么时候发布?iphone8最新消息:iphone8或将采用iphone4设计元素?回归以往经典?
集成电路制造的起源和发展
苹果新专利:柔性材料打造MacBook无缝外壳
如何利用区块链技术来进一步地挖掘城市可再生能源的采用