Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目
基于单片机的移动充电宝设计与实现
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052

为单片机设备供电:

为手机供电:

硬件原理图:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "adc.h"
#include "oled.h"
#include "iwdg.h"
int main(void)
{
u8 t;
u16 adcx;
u16 adcx2,adcx3,adcx4;
float temp,temp3,temp4,foult,tempp,power;
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
Adc_Init(); //ADC初始化
OLED_Init(); //初始化OLED
OLED_Clear();
IWDG_Init(4,625); //与分频数为64,重载值为625,溢出时间为1s
t=' ';
while(1)
{
OLED_ShowCHinese(18,0,4);//电
OLED_ShowCHinese(36,0,5);//压
OLED_ShowCHinese(72,0,4);//电
OLED_ShowCHinese(90,0,6);//流
OLED_ShowCHinese(18,4,7);//功
OLED_ShowCHinese(36,4,8);//率
adcx3=Get_Adc_Average(ADC_Channel_2,10);
printf( "%2d\n",adcx3 );
temp4=(float)adcx3*(3.3/4096);
temp3=2.0*temp4;
tempp=temp3;//
adcx3=temp3;
OLED_ShowNum(18,2,adcx3,1,16);
OLED_ShowString(26,2,".");
temp3-=adcx3;
temp3*=1000;
OLED_ShowNum(28,2,temp3,3,16);
adcx=Get_Adc_Average(ADC_Channel_1,10);
temp=(float)adcx*(3.3/4096);
foult=temp*10*1000;//temp*10为电流值,单位为mA
adcx=foult;
OLED_ShowNum(72,2,adcx,4,16);
power=temp*10*tempp;
adcx4=power;
OLED_ShowNum(60,4,adcx4,1,16);
OLED_ShowString(68,4,".");
power-=adcx4;
power*=1000;
OLED_ShowNum(70,4,temp3,3,16);
IWDG_Feed(); //喂狗
delay_ms(250);
}
}
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052