久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11781|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

簡易QC2.0快充取電設(shè)計(可當(dāng)可調(diào)電源用)附單片機(jī)程序與原理圖PCB文件

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這個是我自己制作的一個QC2.0快充取電器,主要功能是將支持QC快速充電頭的電壓取出來使用。功能:用一個按鍵循環(huán)切換輸出電壓5V--9V--12V....;用一顆LED不同閃爍頻率指示不同對應(yīng)電壓。
原理:用單片機(jī)IO口控制輸出電壓達(dá)到效果

優(yōu)點(diǎn)是:1.簡單實(shí)用 2.成本低廉
缺點(diǎn)是:1.功能簡單 2.無輸出反饋
特別注意:1.無輸出監(jiān)測,且有EEPROM記憶,每次上電需確定輸出電壓,再連接用電電路。2. 即使無快充功能(或不支持的協(xié)議的)的充電頭,指示燈依然指示設(shè)定的電壓。

制作出來的實(shí)物圖如下:


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機(jī)源程序如下:

  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited -------------------------------*/

  3. /*------------------------------------------------------------------*/

  4. #include        "config.h"
  5. #include        "GPIO.h"
  6. #include        "delay.h"
  7. #include    "eeprom.h"

  8. /*************        功能說明        **************

  9. 本程序是快充 功能,MCU --> STC15W204S  @24MHz

  10. *******************************************/
  11. #define USBA_PD 0  //D+下拉電阻
  12. #define USBA_PU 1  //D+上拉電阻
  13. #define USBB_PD 2  //D-下拉電阻
  14. #define USBB_PU 3  //D-上拉電阻

  15. sbit LED = P5^5;
  16. sbit KEY = P5^4;
  17. /******************************************/

  18. //配置IO口為準(zhǔn)雙向
  19. #define IO_BZ_CONF(IO,PIN) do{\
  20.     IO##M0&=~(1<<PIN);\
  21.     IO##M1&=~(1<<PIN);\
  22.     }while(0)\

  23. /******************************************/

  24. //配置IO口為推挽
  25. #define IO_PP_CONF(IO,PIN) do{\
  26.     IO##M0|=(1<<PIN);\
  27.     IO##M1&=~(1<<PIN);\
  28.     }while(0)\

  29. /******************************************/

  30. //配置IO口為高阻
  31. #define IO_HR_CONF(IO,PIN) do{\
  32.     IO##M0&=~(1<<PIN);\
  33.     IO##M1|=(1<<PIN);\
  34.     }while(0)\

  35. /******************************************/

  36. //配置IO口為開漏
  37. #define IO_OD_CONF(IO,PIN) do{\
  38.     IO##M0|=(1<<PIN);\
  39.     IO##M1|=(1<<PIN);\
  40.     }while(0)\

  41. /******************************************/
  42. #define IO_OUT_HIGH(IO,PIN) IO|=(1<<PIN)
  43. #define IO_OUT_LOW(IO,PIN) IO&=~(1<<PIN)

  44. /*************        本地常量聲明        **************/
  45. #define Modmax 3

  46. /*************        本地變量聲明        **************/
  47. u16 del;
  48. u8 tmp[2];
  49. /*************        本地函數(shù)聲明        **************/


  50. /*************  外部函數(shù)和變量聲明 *****************/

  51. /*************        本地函數(shù) **************************/
  52. void step1(void)
  53. {
  54.     IO_PP_CONF(P3,USBA_PU);
  55.     IO_PP_CONF(P3,USBA_PD);
  56.     IO_OUT_HIGH(P3,USBA_PU);
  57.     IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
  58.    
  59.     IO_HR_CONF(P3,USBB_PU);
  60.     IO_HR_CONF(P3,USBB_PD);//P32、P33高阻態(tài) D-為斷開
  61. }
  62. /*************        本地函數(shù) ******************/
  63. u8 KEY_Scan(u8 mode)
  64. {
  65.            static u8 key_up=1;//按鍵按松開標(biāo)志
  66.         if(mode)key_up=1;  //支持連按                  
  67.         if(key_up&&(KEY==0))//||KEY2==0))
  68.         {
  69.                 Delay_nms(10);//去抖動
  70.                 key_up=0;
  71.                 if(KEY==0)
  72.         
  73.             
  74.             return 1;
  75.         
  76.                 //else if(KEY1==0)return KEY1_PRES;
  77.        // else if(KEY2==0)return KEY2_PRES;
  78.         }else if(KEY==1)key_up=1;            
  79.          return 0;// 無按鍵按下
  80. }
  81. /*************        本地函數(shù) ******************/
  82. void OUT5V(void)
  83. {
  84.     Delay_nms(500);
  85.     step1();
  86.     Delay_nms(3000);

  87.    
  88.     IO_PP_CONF(P3,USBA_PU);
  89.     IO_PP_CONF(P3,USBA_PD);
  90.     IO_OUT_HIGH(P3,USBA_PU);
  91.     IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
  92.    
  93.     IO_HR_CONF(P3,USBB_PU);
  94.     IO_PP_CONF(P3,USBB_PD);//P32、P33高阻態(tài) D-為0V
  95.     IO_OUT_LOW(P3,USBB_PD);
  96.    
  97.     del = 1;
  98. }
  99. /*************        本地函數(shù) ******************/
  100. void OUT9V(void)
  101. {
  102.     Delay_nms(500);
  103.     step1();
  104.     Delay_nms(3000);
  105.    
  106.     IO_PP_CONF(P3,USBA_PU);
  107.     IO_HR_CONF(P3,USBA_PD);
  108.     IO_OUT_HIGH(P3,USBA_PU);//P30、P31強(qiáng)推挽 D+為3.3V
  109.    
  110.     IO_PP_CONF(P3,USBB_PU);
  111.     IO_PP_CONF(P3,USBB_PD);
  112.     IO_OUT_HIGH(P3,USBB_PU);
  113.     IO_OUT_LOW(P3,USBB_PD);//P32、P33強(qiáng)推挽 D-為0.6V
  114.    
  115.     del = 500;
  116. }
  117. /*************        本地函數(shù) ******************/
  118. void OUT12V(void)
  119. {
  120.     Delay_nms(500);
  121.     step1();
  122.     Delay_nms(3000);
  123.    
  124.     IO_PP_CONF(P3,USBA_PU);
  125.     IO_PP_CONF(P3,USBA_PD);
  126.     IO_OUT_HIGH(P3,USBA_PU);
  127.     IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
  128.    
  129.     IO_PP_CONF(P3,USBB_PU);
  130.     IO_PP_CONF(P3,USBB_PD);
  131.     IO_OUT_HIGH(P3,USBB_PU);
  132.     IO_OUT_LOW(P3,USBB_PD);//P32、P33強(qiáng)推挽 D-為0.6V
  133.    
  134.     del = 150;
  135. }
  136. /*************        本地函數(shù) ******************
  137. void OUT20V(void)
  138. {
  139.     Delay_nms(500);
  140.     step1();
  141.     Delay_nms(3000);

  142.     IO_PP_CONF(P3,USBA_PU);
  143.     IO_HR_CONF(P3,USBA_PD);
  144.     IO_OUT_HIGH(P3,USBA_PU);//P30、P31強(qiáng)推挽 D+為3.3V
  145.    
  146.     IO_PP_CONF(P3,USBB_PU);
  147.     IO_HR_CONF(P3,USBB_PD);
  148.     IO_OUT_HIGH(P3,USBB_PU);//P32、P33強(qiáng)推挽 D-為3.3V
  149.    
  150.     del = 10;
  151. }
  152. /******************** IO配置函數(shù) **************************/
  153. void        GPIO_config(void)
  154. {
  155.         GPIO_InitTypeDef        GPIO_InitStructure;                //結(jié)構(gòu)定義
  156.     //P3全部高阻態(tài)
  157.         GPIO_InitStructure.Pin  = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;                //指定要初始化的IO, 或操作
  158.         GPIO_InitStructure.Mode = GPIO_HighZ;                //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  159.         GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);        //初始化
  160.     //P5.4是按鍵
  161.         GPIO_InitStructure.Pin  = GPIO_Pin_4;                //指定要初始化的IO, GPIO_Pin_4
  162.         GPIO_InitStructure.Mode = GPIO_PullUp;                //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  163.         GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);        //初始化
  164.     //P5.5是LED指示燈
  165.         GPIO_InitStructure.Pin  = GPIO_Pin_5;                //指定要初始化的IO, GPIO_Pin_4
  166.     GPIO_InitStructure.Mode = GPIO_PullUp;
  167.         //GPIO_InitStructure.Mode = GPIO_OUT_PP;                //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  168.         GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);        //初始化
  169. }



  170. /******************** 主函數(shù) **************************/
  171. void main(void)
  172. {
  173.         u8 i=0;

  174.         GPIO_config();
  175.         EEPROM_read_n(0x0000,tmp,2);
  176. //    Delay_nms(500);
  177. //    step1();
  178. //    Delay_nms(3000);
  179. //    LED = 1;
  180.     if(tmp[0]==0)
  181.     {
  182.             OUT5V();
  183.     }else if(tmp[0]==1)
  184.     {
  185.             OUT9V();
  186.     }else if(tmp[0]==2)
  187.     {
  188.             OUT12V();
  189.     }
  190. //        else if(tmp[0]==3)
  191. //    {
  192. //            OUT20V();
  193. //    }
  194.     else
  195.     {
  196.         tmp[0]=0;
  197.         tmp[1]=0xff;
  198.         EEPROM_SectorErase(0x0000);
  199.         EEPROM_write_n(0x0000,tmp,2);
  200.         OUT5V();
  201.     }

  202.         while(1)
  203.         {  
  204.         i = KEY_Scan(0);
  205.         if(i)
  206. ……………………

  207. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序與PCB原理圖.7z (1.09 MB, 下載次數(shù): 164)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏21 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:756506 發(fā)表于 2021-3-4 09:29 | 只看該作者
非常不錯,下來研究下
回復(fù)

使用道具 舉報

板凳
ID:224104 發(fā)表于 2021-3-9 06:39 | 只看該作者
用的stc15官方庫?
回復(fù)

使用道具 舉報

地板
ID:878061 發(fā)表于 2021-3-11 08:25 | 只看該作者

是的,官網(wǎng)下載的
回復(fù)

使用道具 舉報

5#
ID:754694 發(fā)表于 2021-3-21 00:18 來自手機(jī) | 只看該作者
不錯的學(xué)習(xí)資料,謝謝
回復(fù)

使用道具 舉報

6#
ID:91165 發(fā)表于 2021-3-21 10:22 | 只看該作者
謝謝分享,樓主辛苦了
回復(fù)

使用道具 舉報

7#
ID:38187 發(fā)表于 2021-8-17 16:56 | 只看該作者
感謝樓主分享, 正好需要這個.
回復(fù)

使用道具 舉報

8#
ID:337139 發(fā)表于 2022-8-10 11:39 | 只看該作者
感謝樓主的分享!
回復(fù)

使用道具 舉報

9#
ID:970121 發(fā)表于 2022-8-11 13:53 | 只看該作者
很實(shí)用的東西,學(xué)習(xí)了!
回復(fù)

使用道具 舉報

10#
ID:1070358 發(fā)表于 2023-4-7 15:51 | 只看該作者
感謝樓主的分享,不錯的學(xué)習(xí)資料
回復(fù)

使用道具 舉報

11#
ID:712097 發(fā)表于 2023-6-30 14:50 | 只看該作者
感謝分享,51HEI有你更精彩!有沒有朋友做過PD快充電路,如下圖,TYPE-C接口取電給蘋果手機(jī)充電。專用IC要3塊大洋,小貴,有沒有更便宜的方案?

51HEI.png (47.98 KB, 下載次數(shù): 106)

51HEI.png
回復(fù)

使用道具 舉報

12#
ID:180919 發(fā)表于 2023-7-12 09:24 | 只看該作者

非常不錯,正想研究
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久一区 | 欧美成人a∨高清免费观看 欧美日韩中 | 成人高清网站 | 国产视频久久 | 精产国产伦理一二三区 | 91久久国产精品 | 免费中文字幕日韩欧美 | 亚洲成人中文字幕 | 日韩波多野结衣 | 国产日韩久久 | 一级片免费网站 | 婷婷综合网 | 一区在线免费视频 | 日本精品视频一区二区 | 久久久久久久久久久福利观看 | 国产成人精品一区二区三区视频 | 亚洲人久久 | 日本国产欧美 | 亚洲精品视频在线看 | 激情网站在线观看 | 精品一区二区三区免费毛片 | 亚洲一级黄色 | 亚洲午夜网| 日中文字幕在线 | 福利影院在线看 | 国产99久久久国产精品下药 | 午夜视频一区二区三区 | 成人日批视频 | 81精品国产乱码久久久久久 | 日韩精品一区二区三区 | 国产精品国产精品 | 欧美一级久久精品 | 亚洲成年人免费网站 | 嫩草伊人 | 欧美日韩三区 | 国产精品美女久久久久aⅴ国产馆 | 国产成人精品一区二区三区视频 | 日日操操操 | 九九热免费视频在线观看 | 521av网站| 成人在线观看免费视频 |