找回密码
 立即注册
查看: 83|回复: 0

用stc8g1k08单片机低成本qc快充充电宝给路由器供电 含原理图PCB源码

[复制链接]

该用户从未签到

4

主题

1

回帖

96

积分

等待验证会员

积分
96
发表于 2024-3-28 14:05:45 | 显示全部楼层 |阅读模式
         
          设目的是为了在断电的时候能利用带qc快充功能的充电宝直接给路由器供电,
   相比于一般的5v-12v升压的方案,效率更高且输出功率更大。为了能够方便的调节
   输出电压为路由器常用的5v,9v或12v,使用了一颗stc8g1k08-8pin的单片机。

          PCB大小只有10.5x25mm,小巧精致。
          附件里包含原理图,PCB和单片机的源码。原理图和pcb是AD的,源码是keil4的。
          欢迎大家一起交流。




   成品图如下:
110724t2rvnuqq4tt38qrm.jpg

110724u8mt4dmo5zj8csod.jpg

110724rdp9nq1oh3wmqqwi.jpg


原理图和PCB图如下:(附件中可下载工程文件)

111355dpdkkiiirxxxix2p.png

111355pfjw8mftwc0lcctf.png


单片机部分源程序如下:

  • #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;
  • }




代码: QC.zip (655.66 KB, 下载次数: 10)
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-5 23:33 , Processed in 0.054351 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表