|
這個是我自己制作的一個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í)物圖如下:
51hei圖片_20210303100329.jpg (121.08 KB, 下載次數(shù): 137)
下載附件
2021-3-3 10:08 上傳
51hei圖片_20210303100324.jpg (123.1 KB, 下載次數(shù): 120)
下載附件
2021-3-3 10:08 上傳
51hei圖片_20210303100318.jpg (134.59 KB, 下載次數(shù): 142)
下載附件
2021-3-3 10:08 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
1614736499(1).jpg (147.43 KB, 下載次數(shù): 146)
下載附件
2021-3-3 10:08 上傳
1614736537(1).jpg (140.53 KB, 下載次數(shù): 146)
下載附件
2021-3-3 10:08 上傳
1614736458(1).jpg (26.3 KB, 下載次數(shù): 149)
下載附件
2021-3-3 10:08 上傳
單片機(jī)源程序如下:
- /*------------------------------------------------------------------*/
- /* --- STC MCU International Limited -------------------------------*/
- /*------------------------------------------------------------------*/
- #include "config.h"
- #include "GPIO.h"
- #include "delay.h"
- #include "eeprom.h"
- /************* 功能說明 **************
- 本程序是快充 功能,MCU --> STC15W204S @24MHz
- *******************************************/
- #define USBA_PD 0 //D+下拉電阻
- #define USBA_PU 1 //D+上拉電阻
- #define USBB_PD 2 //D-下拉電阻
- #define USBB_PU 3 //D-上拉電阻
- sbit LED = P5^5;
- sbit KEY = P5^4;
- /******************************************/
- //配置IO口為準(zhǔn)雙向
- #define IO_BZ_CONF(IO,PIN) do{\
- IO##M0&=~(1<<PIN);\
- IO##M1&=~(1<<PIN);\
- }while(0)\
- /******************************************/
- //配置IO口為推挽
- #define IO_PP_CONF(IO,PIN) do{\
- IO##M0|=(1<<PIN);\
- IO##M1&=~(1<<PIN);\
- }while(0)\
- /******************************************/
- //配置IO口為高阻
- #define IO_HR_CONF(IO,PIN) do{\
- IO##M0&=~(1<<PIN);\
- IO##M1|=(1<<PIN);\
- }while(0)\
- /******************************************/
- //配置IO口為開漏
- #define IO_OD_CONF(IO,PIN) do{\
- IO##M0|=(1<<PIN);\
- IO##M1|=(1<<PIN);\
- }while(0)\
- /******************************************/
- #define IO_OUT_HIGH(IO,PIN) IO|=(1<<PIN)
- #define IO_OUT_LOW(IO,PIN) IO&=~(1<<PIN)
- /************* 本地常量聲明 **************/
- #define Modmax 3
- /************* 本地變量聲明 **************/
- u16 del;
- u8 tmp[2];
- /************* 本地函數(shù)聲明 **************/
- /************* 外部函數(shù)和變量聲明 *****************/
- /************* 本地函數(shù) **************************/
- void step1(void)
- {
- IO_PP_CONF(P3,USBA_PU);
- IO_PP_CONF(P3,USBA_PD);
- IO_OUT_HIGH(P3,USBA_PU);
- IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
-
- IO_HR_CONF(P3,USBB_PU);
- IO_HR_CONF(P3,USBB_PD);//P32、P33高阻態(tài) D-為斷開
- }
- /************* 本地函數(shù) ******************/
- u8 KEY_Scan(u8 mode)
- {
- static u8 key_up=1;//按鍵按松開標(biāo)志
- if(mode)key_up=1; //支持連按
- if(key_up&&(KEY==0))//||KEY2==0))
- {
- Delay_nms(10);//去抖動
- key_up=0;
- if(KEY==0)
-
-
- return 1;
-
- //else if(KEY1==0)return KEY1_PRES;
- // else if(KEY2==0)return KEY2_PRES;
- }else if(KEY==1)key_up=1;
- return 0;// 無按鍵按下
- }
- /************* 本地函數(shù) ******************/
- void OUT5V(void)
- {
- Delay_nms(500);
- step1();
- Delay_nms(3000);
-
- IO_PP_CONF(P3,USBA_PU);
- IO_PP_CONF(P3,USBA_PD);
- IO_OUT_HIGH(P3,USBA_PU);
- IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
-
- IO_HR_CONF(P3,USBB_PU);
- IO_PP_CONF(P3,USBB_PD);//P32、P33高阻態(tài) D-為0V
- IO_OUT_LOW(P3,USBB_PD);
-
- del = 1;
- }
- /************* 本地函數(shù) ******************/
- void OUT9V(void)
- {
- Delay_nms(500);
- step1();
- Delay_nms(3000);
-
- IO_PP_CONF(P3,USBA_PU);
- IO_HR_CONF(P3,USBA_PD);
- IO_OUT_HIGH(P3,USBA_PU);//P30、P31強(qiáng)推挽 D+為3.3V
-
- IO_PP_CONF(P3,USBB_PU);
- IO_PP_CONF(P3,USBB_PD);
- IO_OUT_HIGH(P3,USBB_PU);
- IO_OUT_LOW(P3,USBB_PD);//P32、P33強(qiáng)推挽 D-為0.6V
-
- del = 500;
- }
- /************* 本地函數(shù) ******************/
- void OUT12V(void)
- {
- Delay_nms(500);
- step1();
- Delay_nms(3000);
-
- IO_PP_CONF(P3,USBA_PU);
- IO_PP_CONF(P3,USBA_PD);
- IO_OUT_HIGH(P3,USBA_PU);
- IO_OUT_LOW(P3,USBA_PD);//P30、P31強(qiáng)推挽 D+為0.6V
-
- IO_PP_CONF(P3,USBB_PU);
- IO_PP_CONF(P3,USBB_PD);
- IO_OUT_HIGH(P3,USBB_PU);
- IO_OUT_LOW(P3,USBB_PD);//P32、P33強(qiáng)推挽 D-為0.6V
-
- del = 150;
- }
- /************* 本地函數(shù) ******************
- void OUT20V(void)
- {
- Delay_nms(500);
- step1();
- Delay_nms(3000);
-
- IO_PP_CONF(P3,USBA_PU);
- IO_HR_CONF(P3,USBA_PD);
- IO_OUT_HIGH(P3,USBA_PU);//P30、P31強(qiáng)推挽 D+為3.3V
-
- IO_PP_CONF(P3,USBB_PU);
- IO_HR_CONF(P3,USBB_PD);
- IO_OUT_HIGH(P3,USBB_PU);//P32、P33強(qiáng)推挽 D-為3.3V
-
- del = 10;
- }
- /******************** IO配置函數(shù) **************************/
- void GPIO_config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure; //結(jié)構(gòu)定義
- //P3全部高阻態(tài)
- GPIO_InitStructure.Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //指定要初始化的IO, 或操作
- GPIO_InitStructure.Mode = GPIO_HighZ; //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
- GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //初始化
- //P5.4是按鍵
- GPIO_InitStructure.Pin = GPIO_Pin_4; //指定要初始化的IO, GPIO_Pin_4
- GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
- GPIO_Inilize(GPIO_P5,&GPIO_InitStructure); //初始化
- //P5.5是LED指示燈
- GPIO_InitStructure.Pin = GPIO_Pin_5; //指定要初始化的IO, GPIO_Pin_4
- GPIO_InitStructure.Mode = GPIO_PullUp;
- //GPIO_InitStructure.Mode = GPIO_OUT_PP; //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
- GPIO_Inilize(GPIO_P5,&GPIO_InitStructure); //初始化
- }
- /******************** 主函數(shù) **************************/
- void main(void)
- {
- u8 i=0;
- GPIO_config();
- EEPROM_read_n(0x0000,tmp,2);
- // Delay_nms(500);
- // step1();
- // Delay_nms(3000);
- // LED = 1;
- if(tmp[0]==0)
- {
- OUT5V();
- }else if(tmp[0]==1)
- {
- OUT9V();
- }else if(tmp[0]==2)
- {
- OUT12V();
- }
- // else if(tmp[0]==3)
- // {
- // OUT20V();
- // }
- else
- {
- tmp[0]=0;
- tmp[1]=0xff;
- EEPROM_SectorErase(0x0000);
- EEPROM_write_n(0x0000,tmp,2);
- OUT5V();
- }
- while(1)
- {
- i = KEY_Scan(0);
- if(i)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
51hei.png (8 KB, 下載次數(shù): 147)
下載附件
2021-3-3 15:35 上傳
51hei.png (7.42 KB, 下載次數(shù): 144)
下載附件
2021-3-3 15:35 上傳
所有資料51hei提供下載:
程序與PCB原理圖.7z
(1.09 MB, 下載次數(shù): 164)
2021-10-12 04:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|