找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5547|回复: 12
收起左侧

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

  [复制链接]
ID:857272 发表于 2020-12-9 11:20 | 显示全部楼层 |阅读模式
设目的是为了在断电的时候能利用带qc快充功能的充电宝直接给路由器供电,相比于一般的5v-12v升压的方案,效率更高且输出功率更大。为了能够方便的调节输出电压为路由器常用的5v,9v或12v,使用了一颗stc8g1k08-8pin的单片机(官方价0.65元,某一个宝0.7元还包邮)。
PCB大小只有10.5x25mm,小巧精致。
附件里包含原理图,PCB和单片机的源码。原理图和pcb是AD的,源码是keil4的。
原创设计,欢迎大家一起交流。
51hei图片20201209110648.jpg 51hei图片20201209110652.jpg 51hei图片20201209110644.jpg
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
51hei图片20201209111323.png 51hei图片20201209111308.png

单片机源程序如下:
  1. #include "STC8Gxx.h"

  2. #define MAX_OUT 2 //2:12v,3:20v

  3. void Delay1500ms();                //@11.0592MHz
  4. void Delay50ms();                //@11.0592MHz
  5. void OUT_5V();
  6. void OUT_9V();
  7. void OUT_12V();
  8. void OUT_20V();

  9. sbit DNL0=P5^5;
  10. sbit DPH0=P3^1;
  11. sbit DPL0=P3^2;
  12. sbit KEY=P3^0;
  13. sbit LED=P5^4;
  14. unsigned char OUT_STATE=0;        //0:5V,1:9V,2:12V,3:20V

  15. int main()
  16. {
  17. //        Delay1500ms();
  18.         P5M0|=0x30;                //P54,P55 OUT_PP
  19.         P5M1&=~0x30;
  20.         P3M0&=~0x06;        //P31,P32 INPUT
  21.         P3M1|=0x06;
  22.         P3M0&=~0x01;        //P30 Normal
  23.         P3M1&=~0x01;

  24.         P_SW2|=0x80;         //P31,P32 PUSH_UP DIS
  25.         P3PU&=~0x06;
  26.         P_SW2&=~0x80;

  27.         DNL0=0;

  28.         Delay1500ms();

  29.         OUT_5V();

  30.         while(1)
  31.         {
  32.                 if(KEY==0)
  33.                 {
  34.                         Delay50ms();
  35.                         while(KEY==0);
  36.                         Delay50ms();
  37.                         OUT_STATE++;
  38.                 }
  39.                 else continue;
  40.                 if(OUT_STATE>MAX_OUT) OUT_STATE=0;

  41.                 if(OUT_STATE==0) OUT_5V();
  42.                 else if(OUT_STATE==1) OUT_9V();
  43.                 else if(OUT_STATE==2) OUT_12V();
  44.                 else OUT_20V();

  45.                 Delay1500ms();
  46.         }

  47. }

  48. void Delay50ms()                //@11.0592MHz
  49. {
  50.         unsigned char i, j, k;

  51.         i = 3;
  52.         j = 207;
  53.         k = 28;
  54.         do
  55.         {
  56.                 do
  57.                 {
  58.                         while (--k);
  59.                 } while (--j);
  60.         } while (--i);
  61. }

  62. void Delay1500ms()                //@11.0592MHz
  63. {
  64.         unsigned char i, j, k;

  65.         i = 85;
  66.         j = 40;
  67.         k = 170;
  68.         do
  69.         {
  70.                 do
  71.                 {
  72.                         while (--k);
  73.                 } while (--j);
  74.         } while (--i);
  75. }

  76. void OUT_5V()
  77. {
  78.         LED=1;

  79.         P5M0|=0x30;                //P54,P55 OUT_PP
  80.         P5M1&=~0x30;
  81.         P3M0&=~0x06;        //P31,P32 INPUT
  82.         P3M1|=0x06;
  83.         P3M0&=~0x01;        //P30 Normal
  84.         P3M1&=~0x01;

  85.         P_SW2|=0x80;         //P31,P32 PUSH_UP DIS
  86.         P3PU&=~0x06;
  87.         P_SW2&=~0x80;
  88.         
  89.         DNL0=0;        
  90. }

  91. void OUT_9V()
  92. {
  93.         P5M0|=0x30;                //P54,P55 OUT_PP
  94.         P5M1&=~0x30;
  95.         P3M0|=0x06;                  //P31,P32 OUT_PP
  96.         P3M1&=~0x06;

  97.         P_SW2|=0x80;           //P31,P32 PUSH_UP EN
  98.         P3PU|=0x06;
  99.         P_SW2&=~0x80;

  100.         DNL0=1;
  101.         DPH0=1;
  102.         DPL0=0;
  103.         LED=1;
  104. }

  105. void OUT_12V()
  106. {
  107.         P5M0|=0x30;                //P54,P55 OUT_PP
  108.         P5M1&=~0x30;
  109.         P3M0|=0x06;                  //P31,P32 OUT_PP
  110.         P3M1&=~0x06;

  111.         P_SW2|=0x80;           //P31,P32 PUSH_UP EN
  112.         P3PU|=0x06;
  113.         P_SW2&=~0x80;

  114.         DNL0=0;
  115.         DPH0=1;
  116.         DPL0=0;
  117.         LED=0;
  118. }

  119. void OUT_20V()
  120. {
  121.         P5M0|=0x30;                //P54,P55 OUT_PP
  122.         P5M1&=~0x30;
  123.         P3M0|=0x06;                  //P31,P32 OUT_PP
  124.         P3M1&=~0x06;

  125.         P_SW2|=0x80;           //P31,P32 PUSH_UP EN
  126.         P3PU|=0x06;
  127.         P_SW2&=~0x80;

  128.         DNL0=1;
  129.         DPH0=1;
  130.         DPL0=1;
  131.         LED=0;
  132. }
复制代码
51hei.png

所有资料51hei提供下载:
QC.zip (655.66 KB, 下载次数: 145)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:328014 发表于 2020-12-9 19:28 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:357153 发表于 2020-12-28 14:18 | 显示全部楼层
感谢楼主的分享。收藏、值得学习
回复

使用道具 举报

ID:430492 发表于 2020-12-29 14:06 | 显示全部楼层
好资料,感谢楼主的分享!!快充协议数据格式最为重要了。
回复

使用道具 举报

ID:873241 发表于 2021-1-4 16:44 来自手机 | 显示全部楼层
不错,正好有需求,宿舍晚上就断电了,买了变压器,但是太费电了,这个不错
回复

使用道具 举报

ID:430492 发表于 2021-1-5 17:00 | 显示全部楼层
这个思路不错,其实是诱导QC协议,感谢楼主的分享!!
回复

使用道具 举报

ID:64053 发表于 2021-3-30 23:35 | 显示全部楼层
LR2010B是什么东东呢
回复

使用道具 举报

ID:756506 发表于 2021-3-31 11:55 | 显示全部楼层
不错,赞一个。什么时候做个玩玩。
回复

使用道具 举报

ID:756506 发表于 2021-3-31 11:56 | 显示全部楼层
93mxt 发表于 2021-3-30 23:35
LR2010B是什么东东呢

是个3.3V的LDO。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:64053 发表于 2021-4-3 00:02 | 显示全部楼层

其实是不是也可以用丝印的662K呢
谢谢回复
回复

使用道具 举报

ID:857072 发表于 2021-9-23 23:29 来自手机 | 显示全部楼层
93mxt 发表于 2021-4-3 00:02
其实是不是也可以用丝印的662K呢
谢谢回复

1117-3.3呗
回复

使用道具 举报

ID:395359 发表于 2021-12-25 10:26 | 显示全部楼层
太好了!一直都想做一个类似的东西!感谢!!!
回复

使用道具 举报

ID:983641 发表于 2022-2-14 12:07 | 显示全部楼层
是一个实用的东东。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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