基于STM8单片机的锂电池电压检测程序
这里分享一个前一段时间写的一个单片机程序。程序的主要功能是对锂电池充放电模块的锂电池电压和输出电压进行检测,并将检测后的电压用数码管进行显示。
下图呢就是实际的显示效果,左侧是锂电池的电压,右侧是输出电压。

程序的主控芯片是STM8S103F3P。用的是下图的最小系统板。


基本参数如下:
1、核心尺寸:8bit
2、速度:16MHz
3、连接性:12C,IrDA,LIN,SPI, UART/USART4、外设:欠压检测/复位,POR,PWM,WDT
5、I/0数:16
6、程序存储容量:8KB(8Kx8)
7、程序存储器类型:闪存FLASH 可擦写一万次
8、EEPROM容量:640x8
9、RAM容量:1Kx8
10、电压-电源(Vcc/Vdd): 2.95V~5.5V
11、数据转换器:A/D 5x10b
12、振荡器类型:内部
13、工作温度:-40°C~85°C(TA)

数码管显示部分用的是TM1637驱动的数码管模块。该模块是一个12脚的带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,只需2根信号线即可使单片机控制4位8段数码管。
模块特点如下:
显示器件为4位共阳红字数码管;
数码管8级灰度可调;
控制接口电平可为5V或3.3V;
4个M2螺丝定位孔,便于安装。
数码管模块的:
CLK引脚与PB4引脚相连;
DIO引脚与PB5引脚相连。
由于本次使用的单片机的ADC部分为3.3V供电,而锂电池电压和输出电压都大于3.3V,所以这里通过串接电阻分压的方式来实现电压的检测。程序中分别使用单片机ADC的通道2、通道3、通道4对输入端电压、锂电池电压及输出端电压进行检测。
程序中利用单片机的定时器4进行采样周期定时,采样时间到后程序控制ADC进行电压采集和计算,并进行了10次累加求平均值,最后将采集的电压转换为实际电压进行显示。