【电机控制器】STC8H1K芯片——ADC电压采集
文章目录
- @[TOC](文章目录)
- 前言
- 一、ADC
- 1.ADC初始化
- 1.ADC_CONTR
- 2.ADCCFG
- 3.ADCTIM
- 4.代码
- 2.ADC读取
- 1.ADC_RES、ADC_RESL
- 2.代码
- 3.VREF电压读取——MCU工作电压
- 1.MCU工作电压计算公式
- 2.代码
- 4.ADC被转换通道的输入电压读取
- 1.ADC被转换通道的输入电压计算公式
- 2.代码
- 二、实验——VREF——MCU工作电压
- 1.原理图
- 2.USB供电
- 3.锂电池供电
- 三、参考资料
- 总结
文章目录
- @[TOC](文章目录)
- 前言
- 一、ADC
- 1.ADC初始化
- 1.ADC_CONTR
- 2.ADCCFG
- 3.ADCTIM
- 4.代码
- 2.ADC读取
- 1.ADC_RES、ADC_RESL
- 2.代码
- 3.VREF电压读取——MCU工作电压
- 1.MCU工作电压计算公式
- 2.代码
- 4.ADC被转换通道的输入电压读取
- 1.ADC被转换通道的输入电压计算公式
- 2.代码
- 二、实验——VREF——MCU工作电压
- 1.原理图
- 2.USB供电
- 3.锂电池供电
- 三、参考资料
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、ADC
1.ADC初始化
1.ADC_CONTR
2.ADCCFG
3.ADCTIM
4.代码
void ADC_Init(void)
{ADCTIM=0X3F;ADCCFG=0X2F;ADC_CONTR=0X80;
}
2.ADC读取
1.ADC_RES、ADC_RESL
2.代码
unsigned int ADC_Read(int channel)
{ADC_RES=0;ADC_RESL=0;ADC_CONTR=(ADC_CONTR&0XF0)|0X40|channel;_nop_();_nop_();_nop_();_nop_();while((ADC_CONTR&0X20)==0);ADC_CONTR&=~0X20;return ((unsigned int)ADC_RES<<8|ADC_RESL);
}
3.VREF电压读取——MCU工作电压
1.MCU工作电压计算公式
2.代码
unsigned int VREF_GetValtage(void)
{unsigned int res;unsigned char i;float Valtage_VREF;ADC_Read(ADC_CHANEEL_15);ADC_Read(ADC_CHANEEL_15);res=0;Valtage_VREF=0.00;for(i=0;i<8;i++){res+=ADC_Read(ADC_CHANNEL_15);}res>>=3;Valtage_VREF=(ADC_10BIT*ADC_BGV/res);return (unsigned int)(Valtage_VREF*ADC_GAIN);
}
4.ADC被转换通道的输入电压读取
1.ADC被转换通道的输入电压计算公式
2.代码
unsigned int OverLoad_GetValtage(void)
{unsigned int res;unsigned char i;unsigned int adcvin;float Valtage_Overload;ADC_Read(ADC_CHANNEL_10);ADC_Read(ADC_CHANNEL_10);res=0;Valtage_Overload=0.00;for(i=0;i<8;i++){res+=ADC_Read(ADC_CHANNEL_10);}res>>=3;adcvin=VREF_GetValtage();Valtage_Overload=(adcvin*res/ADC_10BIT);return (unsigned int)(Valtage_Overload);
}
二、实验——VREF——MCU工作电压
1.原理图
2.USB供电
3.锂电池供电
三、参考资料
STC8H1K08-36I-TSSOP20-规格书.PDF
STC8H单片机利用 ADC 第 15 通道测量外部电压或电池电压
51单片机——串口通信(发送和接受数据)
STC单片机基于Keil平台在线调试仿真
printf函数在Keil 开发C51单片机当中的使用细节
总结
本文仅仅简单介绍了【电机控制器】STC8H1K芯片——ADC电压采集,评论区欢迎讨论。