我是靠谱客的博主 落后烧鹅,这篇文章主要介绍STC32G12K128-Beta 普通 一般精度ADC,现在分享给大家,希望可以做个参考。

被选择使用ADC功能的IO口,必须先将其设置为高阻输入模式

ADC.H

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部