打印
[方案相关]

ADC采样 + LCD显示实例:打造简易电压检测仪!

[复制链接]
62|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢动作|  楼主 | 2025-5-21 23:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本项目以 HC32A4A0 为核心,读取多个模拟电压通道(如传感器、电池电压等),并实时将数值显示在 LCD 上。通过这一示例你将掌握:

ADC 配置与多通道采样;

电压值转换与处理;

基于 LCD 的 UI 输出;

一个完整的小型测量仪表系统构建过程。


核心代码结构

① ADC 初始化(多通道采样)
c
复制
编辑
#define ADC_CHANNEL_NUM  2
uint16_t adc_raw[ADC_CHANNEL_NUM];

void ADC_Init(void)
{
    PWC_Fcg3PeriphClockCmd(PWC_FCG3_ADC, Enable);

    Gpio_SetAnalogMode(PortA, Pin00); // AIN0
    Gpio_SetAnalogMode(PortA, Pin01); // AIN1

    stc_adc_init_t stcInit;
    ADC_StructInit(&stcInit);
    stcInit.u16ScanMode   = ADC_SCAN_SEQ;
    stcInit.u8RepeatMode  = ADC_SEQ_SINGLE;
    ADC_Init(ADC, &stcInit);

    ADC_SeqChCmd(ADC, ADC_SEQ_CH0, Enable);  // AIN0
    ADC_SeqChCmd(ADC, ADC_SEQ_CH1, Enable);  // AIN1

    stc_adc_ch_cfg_t chCfg;
    chCfg.u8SamplingTime = 0x60;
    for (uint8_t i = 0; i < ADC_CHANNEL_NUM; i++) {
        chCfg.u8Channel = i;
        ADC_ChCfg(ADC, &chCfg);
    }

    ADC_Cmd(ADC, Enable);
}
② 获取电压值函数(单位:mV)
c
复制
编辑
float Convert_ADC_to_Voltage(uint16_t adc_val)
{
    return (float)adc_val * 3300.0f / 4095.0f;  // 假设使用 3.3V 参考电压
}
③ LCD 显示函数(调用 LCD 库)
c
复制
编辑
extern void LCD_Print(uint8_t row, char *text);  // 你自己的 LCD 库接口

void Show_Voltages_On_LCD(void)
{
    char str[32];
    for (int i = 0; i < ADC_CHANNEL_NUM; i++) {
        float voltage = Convert_ADC_to_Voltage(adc_raw);
        snprintf(str, sizeof(str), "CH%d: %.2f V", i, voltage / 1000.0f);
        LCD_Print(i, str);
    }
}
④ 主循环逻辑
c
复制
编辑
int main(void)
{
    ADC_Init();
    LCD_Init();  // 初始化 LCD 模块

    while (1)
    {
        ADC_Start(ADC);
        while (ADC_GetStatus(ADC, ADC_FLAG_EOC) == Reset);

        adc_raw[0] = ADC_GetValue(ADC, ADC_CH0);
        adc_raw[1] = ADC_GetValue(ADC, ADC_CH1);

        Show_Voltages_On_LCD();

        DDL_DelayMS(500);  // 每500ms更新一次
    }
}

进阶拓展建议
加入 按钮 实现通道切换或数值保持;

使用 DMA + 定时器触发 ADC,自动刷新;

添加 报警阈值设置,超限时闪烁或蜂鸣;

支持 USB/UART 输出,实现数据上传。

可以帮助你系统理解 HC32A4A0 的:

  • ADC 多通道采样原理;
  • LCD 驱动与动态数据显示;
  • 简单的电压监测应用开发流程。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

897

帖子

0

粉丝