基于51单片机的移动电源设计

描述

功能

本设计由STC89C52单片机电路+无线充电模块电路+高亮灯电路+按键电路+锂电池充电保护电路+升压电路组成。

1、通过线圈之间产生的磁场传输电能,来代替电源线,主要采用了电磁感应原理。即无线充电。

2、按键按下,高亮灯亮,再次按下,高亮灯灭。

3、双USB口5V输出。

4、LCD1602液晶实时显示系统是否在充电中。

原理图

 

51单片机

 

源代码

 

 #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include
#include "1602.h"
#include "delay.h"




sbit check = P1^0;
sbit key =P1^1;
sbit led =P2^1;


char dis0[16];         //打印数组初始化
char dis1[16];         //打印数组初始化


unsigned long time_20ms=0;       //定时器计数


unsigned char     disFlag;             //变量


void Init_Timer0(void);        //函数声明
bit rekey =0;


void main (void)
{     


  Init_Timer0();        //定时器0初始化


  LCD_Init();           //初始化液晶
  DelayMs(20);          //延时有助于稳定
  LCD_Clear(); 


  LCD_Write_String(0,0,"my desiger! ");
  while (1)         //主循环
  {
    if(disFlag == 1)  //更新显示
    {
       disFlag = 0;
      if(check == 1)//检测到充电
      {LCD_Write_String(0,1,"cd: Yes   ");}


    }




  else
  {
    rekey = 0;       //防止重复按下
  }


  }
}






void Init_Timer0(void)
{
  TMOD |= 0x01;    //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响         
  TH0=(65536-20000)/256;      //重新赋值 20ms
  TL0=(65536-20000)%256;
  EA=1;            //总中断打开
  ET0=1;           //定时器中断打开
  TR0=1;           //定时器开关打开
}


void Timer0_isr(void) interrupt 1 
{
  TH0=(65536-20000)/256;      //重新赋值 20ms
  TL0=(65536-20000)%256;


  time_20ms++;
  if(time_20ms % 10 == 0)
  {
     disFlag =1 ;//定时更新显示
  }


}




  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分