资料编号:198 下面是该资料仿真演示视频:
198-基于51单片机锂电池电压电量检测(原理图+PCB+程序+全套资料)
功能介绍:
采用51系列自带AD的单片机stc12c5a60s2型号单片机(也是51单片机,外观引脚大小都是一摸一样,程序也是通用),实时通过自带的AD来采集锂电池的电压,并且根据当前的电压值来判断当前的电量还剩多少,用LED灯指示当前的电量,LCD1602显示当前的电压,当电量低于一定值,等明确进行报警,以此来实现的锂电池电压电量检测;
部分程序展示:
void delay_m(int ms)//延时函数
{
int i;
do{
i = 11059200L / 13000;
while(--i) ; //14T per loop
}while(--ms);
}
void SystemInit(void)//定时器函数
{
TMOD = 0x10;
// TH0 = (65536 - 45872) / 256; // ?50ms //??:11.0592MHZ
// TL0 = (65536 - 45872) % 256;
TH1 = (65536 - 45872) / 256; // ?50ms //??:11.0592MHZ
TL1 = (65536 - 45872) % 256;
// ET0 = 1;
// TR0 = 1;
ET1 = 1;
TR1= 1;
EA = 1;
}
void main()
{
USART_Init();
ADC_Init();//ADC初始化
init();//LCD初始化
beep=0;
delay_m(200);
beep=1;
while (1)
{
if(key1==0)
{
set++;
}
if(key2==0)
{
set--;
if(set<1) set=1;
}
e=ADC_Value(0)*100;
write1_1602(2, e%1000/100+0x30);
write1_1602(4, e%100/10+0x30);
write1_1602(5, e%10+0x30);
if(e<280) e=280;
write1_1602(10, (e-280)*2%1000/100+0x30);
write1_1602(12, (e-280)*2%100/10+0x30);
write1_1602(13, (e-280)*2%10+0x30);
write_1602(10, set%1000/100+0x30);
write_1602(12, set%100/10+0x30);
write_1602(13, set%10+0x30);
if((e-280)*2<set) beep=0;
else beep=1;
//printf("%.2f\n",ADC_Value(0));
}
}
资料分享下载链接:
https://docs.qq.com/doc/DTUZnQk5rcHFUVkRV