KEA128 控制器 ADC0 SE9 引脚 AD 电压检测 Keil 程序
#include "KEA128.h"
void ADC_Init(uint8_t channel, uint8_t resolution) { // 选择ADC通道 ADCSC1 = ADCSC1_ADCH(channel);
// 选择ADC分辨率
ADC_CFG1 = (ADC_CFG1 & ~ADC_CFG1_MODE_MASK) | ADC_CFG1_MODE(resolution);
// 使能ADC
ADCSC2 |= ADCSC2_ADTRG_MASK;
}
float ADC_GetVoltage(uint16_t adcValue) { // 根据ADC分辨率计算参考电压 float vref = 3.3; // 假设参考电压为3.3V
// 根据公式 V = (adcValue / 2^resolution) * vref 计算电压
float voltage = (adcValue / (float)(1 << ADC_CFG1_MODE(ADC_CFG1 & ADC_CFG1_MODE_MASK))) * vref;
return voltage;
}
int main(void) { // 初始化ADC ADC_Init(9, 1); // 使用ADC0的SE9通道和12位分辨率
while (1) {
// 启动ADC转换
ADCSC1 |= ADCSC1_ADCH(9);
// 等待转换完成
while (!(ADCSC1 & ADCSC1_COCO_MASK));
// 读取ADC结果
uint16_t adcValue = ADCR;
// 将ADC结果转换为电压
float voltage = ADC_GetVoltage(adcValue);
// 输出电压结果
// TODO: 将电压结果输出到你想要的地方,比如串口或LCD屏幕等
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/qfaJ 著作权归作者所有。请勿转载和采集!