9.4.2 数字电压表设计

更新于 2026年10月10日 版权声明
9.4.2 数字电压表设计

1.任务要求

请利用滑动变阻器、ADC、USART设计一个数字电压表,ADC实时采集滑动变阻器上的电压,将采集到的电压值通过串口2上传到计算机串口调试助手,并在本地LCD1602上显示。请设计程序,并通过Proteus完成仿真和调试。

2.硬件设计

数字电压表硬件电路如图9.7所示,STM32的PB0外接滑动变阻器,通过调节RV1,PB0接口的电压将会发生变化;串口1对应的PA9、PA10通过CH340与上位机USB相连;LCD1602的数据端和控制端分别与PC0~PC10相连。

图示

图9.7 数字电压表硬件电路

3.软件设计

选用STM32F1系列MCU的ADC1,从PB0(Channel8)外接滑动变阻器。ADC采用规则通道,n=1;以软件触发方式启动ADC转换;采样时间设置为1.5个采样周期;设置ADC的数据格式为右对齐;采用单一转换模式;设置为ADC中断;系统时钟设置为8 MHz。ADC配置如图9.8所示。

图示

图9.8 ADC配置

串口采用USART2,通过PA2(TXD)、PA3(RXD)与计算机通信,将ADC采集的电压值传到串口调试助手。配置波特率为115 200 bit/s、数据位为8位、停止位为1位、无校验位。(https://www.daowen.com)

LCD1602的数据端和使能端分别与PC0~PC10相连,PC0~PC7与LCD1602的D0~D7相连,PC8~PC10分别与LCD1602的RS、R/W和E接口相连,PC0~PC10接口设置为输出。

将上述参数通过STM32CubeMX生成MDK工程文件,在ADC中断服务程序的回调函数中添加读取ADC结果值的程序,在main()函数中添加串口发送程序。ADC、USART、GPIO和NVIC由软件自动生成初始化代码,无须修改。主程序和ADC回调函数如下。

图示

图示

另外,也可以采用轮询模式获取ADC转换值,程序如下。

图示

4.仿真与调试

在Proteus中绘制仿真电路图,PC0~PC10连接LCD1602,PA2(TXD)、PA3(RXD)外接串口虚拟终端Virtual Terminal,PB0外接滑动变阻器,调节滑动变阻器可改变送到ADC_CHANNEL_8的电压值,进而通过内部ADC进行转换,并在LCD1602上显示被测的电压值,并以每秒1次的速度上传到串口2,仿真电路图与调试效果如图9.9所示。

图示

图9.9 仿真电路图与调试效果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)