我是靠谱客的博主 落后烧鹅,最近开发中收集的这篇文章主要介绍STC32G12K128-Beta 普通 一般精度ADC,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

被选择使用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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部