设目的是为了在断电的时候能利用带qc快充功能的充电宝直接给路由器供电,相比于一般的5v-12v升压的方案,效率更高且输出功率更大。为了能够方便的调节输出电压为路由器常用的5v,9v或12v,使用了一颗stc8g1k08-8pin的单片机(官方价0.65元,某一个宝0.7元还包邮)。
PCB大小只有10.5x25mm,小巧精致。
附件里包含原理图,PCB和单片机的源码。原理图和pcb是AD的,源码是keil4的。
原创设计,欢迎大家一起交流。
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include "STC8Gxx.h"
- #define MAX_OUT 2 //2:12v,3:20v
- void Delay1500ms(); //@11.0592MHz
- void Delay50ms(); //@11.0592MHz
- void OUT_5V();
- void OUT_9V();
- void OUT_12V();
- void OUT_20V();
- sbit DNL0=P5^5;
- sbit DPH0=P3^1;
- sbit DPL0=P3^2;
- sbit KEY=P3^0;
- sbit LED=P5^4;
- unsigned char OUT_STATE=0; //0:5V,1:9V,2:12V,3:20V
- int main()
- {
- // Delay1500ms();
- P5M0|=0x30; //P54,P55 OUT_PP
- P5M1&=~0x30;
- P3M0&=~0x06; //P31,P32 INPUT
- P3M1|=0x06;
- P3M0&=~0x01; //P30 Normal
- P3M1&=~0x01;
- P_SW2|=0x80; //P31,P32 PUSH_UP DIS
- P3PU&=~0x06;
- P_SW2&=~0x80;
- DNL0=0;
- Delay1500ms();
- OUT_5V();
- while(1)
- {
- if(KEY==0)
- {
- Delay50ms();
- while(KEY==0);
- Delay50ms();
- OUT_STATE++;
- }
- else continue;
- if(OUT_STATE>MAX_OUT) OUT_STATE=0;
- if(OUT_STATE==0) OUT_5V();
- else if(OUT_STATE==1) OUT_9V();
- else if(OUT_STATE==2) OUT_12V();
- else OUT_20V();
- Delay1500ms();
- }
- }
- void Delay50ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- i = 3;
- j = 207;
- k = 28;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void Delay1500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- i = 85;
- j = 40;
- k = 170;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void OUT_5V()
- {
- LED=1;
- P5M0|=0x30; //P54,P55 OUT_PP
- P5M1&=~0x30;
- P3M0&=~0x06; //P31,P32 INPUT
- P3M1|=0x06;
- P3M0&=~0x01; //P30 Normal
- P3M1&=~0x01;
- P_SW2|=0x80; //P31,P32 PUSH_UP DIS
- P3PU&=~0x06;
- P_SW2&=~0x80;
-
- DNL0=0;
- }
- void OUT_9V()
- {
- P5M0|=0x30; //P54,P55 OUT_PP
- P5M1&=~0x30;
- P3M0|=0x06; //P31,P32 OUT_PP
- P3M1&=~0x06;
- P_SW2|=0x80; //P31,P32 PUSH_UP EN
- P3PU|=0x06;
- P_SW2&=~0x80;
- DNL0=1;
- DPH0=1;
- DPL0=0;
- LED=1;
- }
- void OUT_12V()
- {
- P5M0|=0x30; //P54,P55 OUT_PP
- P5M1&=~0x30;
- P3M0|=0x06; //P31,P32 OUT_PP
- P3M1&=~0x06;
- P_SW2|=0x80; //P31,P32 PUSH_UP EN
- P3PU|=0x06;
- P_SW2&=~0x80;
- DNL0=0;
- DPH0=1;
- DPL0=0;
- LED=0;
- }
- void OUT_20V()
- {
- P5M0|=0x30; //P54,P55 OUT_PP
- P5M1&=~0x30;
- P3M0|=0x06; //P31,P32 OUT_PP
- P3M1&=~0x06;
- P_SW2|=0x80; //P31,P32 PUSH_UP EN
- P3PU|=0x06;
- P_SW2&=~0x80;
- DNL0=1;
- DPH0=1;
- DPL0=1;
- LED=0;
- }
复制代码
所有资料51hei提供下载:
QC.zip
(655.66 KB, 下载次数: 148)
|