概述
被选择使用ADC功能的IO口,必须先将其设置为高阻输入模式
ADC.H
#ifndef __ADC_H_
#define __ADC_H_
//---头文件---//
#include <stc32g.h>
#include <intrins.h>
//---宏定义---//
#define uchar unsigned char
#define uint unsigned int
//---函数声明---//
void InitADC();
float AD_average();
uint GetADCResult();
void DisplayADCResult();
//---全局变量声明---//
extern uchar bai,shi,ge;
#endif
ADC.C
#include <ADC.h>
uchar bai=0,shi=0,ge=0;
void InitADC() //adc初始化
{
ADCTIM=0x3f; //设置ADC内部时序
ADCCFG=0x2f; //设置ADC时钟为系统时钟/2/16
ADC_CONTR=0x0c; //设置ADC端口为P0.4
ADC_POWER=1; //打开ADC电源
ADC_RES = 0; //清空ADC数据
}
uint GetADCResult() //adc开始采样
{
ADC_START=1;//启动AD转换
_nop_();
_nop_();
while (!ADC_FLAG);//查询ADC完成标志
ADC_FLAG=0;//清完成标志
return (ADC_RES<<8)|ADC_RESL;
}
float AD_average() //平均滤波
{
int i;
float value=0;
for(i=0;i<100;i++)
{
value+=GetADCResult(); //100次采样
}
value/=100; //求平均
value=value*4.95/4096; //根据官方手册的公式,ADC端口电压=12位ADC结果*参考电压/4096
return value;
}
void DisplayADCResult() //adc显示
{
float ADResult;
uint Result;
ADResult=AD_average()*100;
Result=(int)ADResult;
bai=Result/100; //数据分离
shi=Result%100/10; //百位为小数点前一位,十位为小数点后一位,个位为小数点后两位
ge=Result%10; //单位为伏
}
最后
以上就是落后烧鹅为你收集整理的STC32G12K128-Beta 普通 一般精度ADC的全部内容,希望文章能够帮你解决STC32G12K128-Beta 普通 一般精度ADC所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复