功能
本设计由STC89C52单片机电路+无线充电模块电路+高亮灯电路+按键电路+锂电池充电保护电路+升压电路组成。
1、通过线圈之间产生的磁场传输电能,来代替电源线,主要采用了电磁感应原理。即无线充电。
2、按键按下,高亮灯亮,再次按下,高亮灯灭。
3、双USB口5V输出。
4、LCD1602液晶实时显示系统是否在充电中。
原理图
源代码
#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 ;//定时更新显示 } }
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !