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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9207|回復: 18
打印 上一主題 下一主題
收起左側

STM8單片機+TP4056+LT1935的USB移動電源PCB原理圖和程序

  [復制鏈接]
跳轉到指定樓層
樓主
內容很詳細,有電路原理圖,PCB圖,可用AD打開編輯,還有PDF版的原理圖,可供大家參考

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


stm8單片機源程序如下:
  1. /* MAIN.C file

  2. 編譯環境:IAR
  3. 初版時間: 2013-01-18

  4. */
  5. #include "stm8s.h" //包含用到的外設的頭文件
  6. #include "stm8s_adc1.h"
  7. #include "stm8s_clk.h"

  8. #define FLG_IOUT     0
  9. #define FLG_VOUT     1


  10. #define LED1_OFF()  GPIO_WriteHigh(GPIOC,GPIO_PIN_4)
  11. #define LED1_ON()   GPIO_WriteLow(GPIOC,GPIO_PIN_4)

  12. #define LED2_OFF()  GPIO_WriteHigh(GPIOC,GPIO_PIN_5)
  13. #define LED2_ON()   GPIO_WriteLow(GPIOC,GPIO_PIN_5)


  14. #define LED3_OFF()  GPIO_WriteHigh(GPIOC,GPIO_PIN_6)
  15. #define LED3_ON()   GPIO_WriteLow(GPIOC,GPIO_PIN_6)

  16. #define LED4_OFF()  GPIO_WriteHigh(GPIOC,GPIO_PIN_7)
  17. #define LED4_ON()   GPIO_WriteLow(GPIOC,GPIO_PIN_7)


  18. //LED操作宏
  19. #define LED_ALL_OFF()   do{ LED4_OFF();LED3_OFF();LED2_OFF();LED1_OFF(); }while(0)
  20. #define LED_VOL_100()   do{ LED4_ON();LED3_ON();LED2_ON();LED1_ON(); }while(0)
  21. #define LED_VOL_75()    do{ LED4_ON();LED3_ON();LED2_ON();LED1_OFF(); }while(0)
  22. #define LED_VOL_50()    do{ LED4_ON();LED3_ON();LED2_OFF();LED1_OFF(); }while(0)
  23. #define LED_VOL_25()    do{ LED4_ON();LED3_OFF();LED2_OFF();LED1_OFF(); }while(0)
  24. #define LED_VOL_0()     LED_ALL_OFF()


  25. #define VAT_CAP_100  ((unsigned short)(4.16*1024/6.6))
  26. #define VAT_CAP_75   ((unsigned short)(3.93*1024/6.6))
  27. #define VAT_CAP_50   (((unsigned short)3.79*1024/6.6))
  28. #define VAT_CAP_25   (((unsigned short)3.72*1024/6.6))
  29. #define VAT_CAP_0    (((unsigned short)3.58*1024/6.6))

  30. #define IOUT_0_25    (((unsigned short)0.25*1024/3.3))
  31. #define IOUT_3_00    (((unsigned short)3*1024/3.3))

  32. #define GET_MIN(a,b) (((a) > (b))? (b):(a))


  33. /**************************實現函數********************************************
  34. *函數原型:                void Delay(unsigned int time)
  35. *功  能:                實現一定時間的延時,延時設定時長由輸入time 決定
  36. *******************************************************************************/
  37. void Delay(unsigned int time)
  38. {
  39.         volatile unsigned int i;
  40.         while(time--){
  41.                 i=300;
  42.                 while(i--); //做一些沒有用的事,打發時間
  43.         }
  44. }

  45. void Led_tig(unsigned short adc_val)
  46. {
  47.   static unsigned char flag = 0;   //反轉的標志
  48.   
  49.        if(adc_val >= VAT_CAP_100)
  50.        {
  51.          LED_VOL_100();
  52.        }
  53.        else if(adc_val >= VAT_CAP_75)
  54.        {
  55.          if(flag)LED_VOL_100();
  56.          else LED_VOL_75();
  57.        }  
  58.        else if(adc_val >= VAT_CAP_50)
  59.        {
  60.          if(flag)LED_VOL_75();
  61.          else LED_VOL_50();
  62.        }
  63.        else if(adc_val >= VAT_CAP_25)
  64.        {
  65.          if(flag)LED_VOL_50();
  66.          else LED_VOL_25();
  67.        }
  68.        else
  69.        {
  70.          if(flag)LED_VOL_25();
  71.          else LED_VOL_0();
  72.        }
  73.      flag = !flag;  
  74. }

  75. unsigned short ADC_val_get(unsigned char ch)
  76. {
  77.   unsigned short buf[3] , temp;
  78.   unsigned char i;
  79.   if(FLG_IOUT)
  80.     ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE , ADC1_CHANNEL_3, ADC1_ALIGN_RIGHT);
  81.   else
  82.     ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_4 , ADC1_ALIGN_RIGHT);
  83.   for(i=0 ; i<3 ; i++)
  84.   {
  85.      ADC1_StartConversion();
  86.      while(SET == ADC1_GetFlagStatus(ADC1_FLAG_EOC)){;}

  87.      buf[i] =  ADC1_GetConversionValue();   
  88.      ADC1_ClearFlag(ADC1_FLAG_EOC);
  89.   }
  90.   
  91.   temp = GET_MIN( buf[0] ,  buf[1]);
  92.   temp = GET_MIN( temp ,  buf[2]);
  93.   
  94.   return temp;
  95. }




  96. volatile short adc_val;
  97. volatile u32 u32_clk_freq;
  98. /**************************實現函數********************************************
  99. *函數原型:                main() 主程序
  100. *功  能:                設置LED的端口為輸出,并使開發板上的LED2閃爍
  101. *******************************************************************************/
  102. main()
  103. {
  104.   CLK_DeInit();
  105.   CLK_LSICmd(ENABLE);
  106.   CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8);
  107.   
  108.   GPIO_DeInit(GPIOD);
  109.   GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_SLOW);  // PW_ON高電平
  110.   u32_clk_freq = CLK_GetClockFreq();

  111.   GPIO_DeInit(GPIOC);//把LED1-4設置為高電平輸出,關燈
  112.   GPIO_Init(GPIOC, GPIO_PIN_HNIB , GPIO_MODE_OUT_PP_HIGH_SLOW); //LED1-4 滅
  113.   //ADC 初始化
  114.   ADC1_DeInit();
  115.   ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_4 | ADC1_CHANNEL_3,
  116.             ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
  117.             ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL4 | ADC1_SCHMITTTRIG_CHANNEL3, DISABLE);
  118.   
  119. //  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_2,
  120. //           ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
  121.       //      ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL2, DISABLE);
  122.   ADC1_Cmd(ENABLE);
  123.   ADC1_ITConfig(ADC1_IT_AWDIE, DISABLE);


  124.   while (1)
  125.    { //主循環體
  126.        Delay(100);//延時。
  127.        adc_val =  ADC_val_get(FLG_VOUT);
  128.       
  129.        adc_val =  ADC_val_get(FLG_IOUT);
  130.        if(adc_val >= IOUT_3_00 || adc_val < IOUT_0_25)
  131.        {
  132.          GPIO_WriteLow(GPIOD, GPIO_PIN_4);
  133.        }
  134.        else
  135.          GPIO_WriteHigh(GPIOD, GPIO_PIN_4);
  136.     //   Led_tig(adc_val);   
  137.    }//如些反復,用戶會觀察到LED2一直在閃爍
  138. }
復制代碼

所有資料51hei提供下載:

USB Mobile Power Code.rar

241.67 KB, 下載次數: 153, 下載積分: 黑幣 -5

USB Mobile Power PCB.rar

249.7 KB, 下載次數: 150, 下載積分: 黑幣 -5

USB Mobile Power SCH.rar

32.4 KB, 下載次數: 161, 下載積分: 黑幣 -5

USB Mobile Power.pdf

160.87 KB, 下載次數: 160, 下載積分: 黑幣 -5

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:482999 發表于 2019-3-1 22:39 | 只看該作者
有電池保護電路部分嗎
回復

使用道具 舉報

板凳
ID:56665 發表于 2019-3-6 16:02 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

地板
ID:136083 發表于 2019-6-27 19:28 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

5#
ID:279411 發表于 2019-7-22 14:28 | 只看該作者
學習一下
回復

使用道具 舉報

6#
ID:595322 發表于 2019-8-5 09:23 | 只看該作者
謝謝分享,學習學習!
回復

使用道具 舉報

7#
ID:605120 發表于 2019-8-29 15:02 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

8#
ID:56665 發表于 2019-9-3 11:23 | 只看該作者
其實可以把4056電池充電IC省掉,用單片機控制MOS管來做,單片機輸出PWM并通過一個三極管使MOS管導通或者截止給電池充電,通過串接電池負端或者正端的檢測電流電阻來檢測充電電流,使充電電流恒定在某個值,然后檢測電池端電壓,當電池電壓到達4.1V左右,再啟動恒壓電路,恒壓電路就是在電池兩端用兩個10電阻取樣,電阻中間的電壓值送到單片機ADC端口,判斷電壓高低,決定PWM占空比大小,使充電電流漸漸變小充電,起碼到電池充飽。
回復

使用道具 舉報

9#
ID:142891 發表于 2019-9-30 23:14 | 只看該作者
支持一下,謝謝分享.
回復

使用道具 舉報

10#
ID:283763 發表于 2019-10-20 14:28 | 只看該作者
學習一下,謝謝分享!
回復

使用道具 舉報

11#
ID:653068 發表于 2019-11-30 16:20 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:301788 發表于 2019-12-31 12:50 來自手機 | 只看該作者
支持一下,謝謝分享
回復

使用道具 舉報

13#
ID:375228 發表于 2020-1-29 20:35 | 只看該作者
謝謝分享,很好的學習資料
回復

使用道具 舉報

14#
ID:140183 發表于 2020-2-4 13:40 | 只看該作者
很好的資料!有空做一個玩玩。
回復

使用道具 舉報

15#
ID:369226 發表于 2020-6-1 10:53 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

16#
ID:841696 發表于 2020-11-11 12:57 | 只看該作者
有電池保護電路部分嗎
回復

使用道具 舉報

17#
ID:620337 發表于 2020-11-30 13:51 | 只看該作者
把所有資料做成一個壓縮包不是更好嗎?
回復

使用道具 舉報

18#
ID:895892 發表于 2021-3-26 18:41 | 只看該作者
學習一下,謝謝分享
回復

使用道具 舉報

19#
ID:420097 發表于 2021-4-13 18:29 | 只看該作者
你這最大輸出電流是多少能做PD 的么?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产 日韩 欧美 中文 在线播放 | 亚洲精品高清视频 | 中文字幕日韩欧美 | 一区二区三区免费观看 | 亚洲一区二区三区在线播放 | 成人亚洲网站 | 成人自拍视频 | 欧美一区二区小视频 | 天天色影视综合 | 中文精品视频 | 成人中文网| 国产欧美一区二区三区日本久久久 | 99久久精品视频免费 | 国产亚洲一区二区三区 | 久久精品亚洲精品国产欧美 | 亚洲性人人天天夜夜摸 | 日韩视频在线观看 | 久久精品国产精品青草 | 一区二区三区国产 | av一区在线观看 | 久久影音先锋 | 一区二区三区在线免费看 | 国产日韩欧美 | 7777精品伊人久久精品影视 | 国产一区二区在线免费播放 | 黄色大片在线 | 国产午夜精品久久久 | 99精品免费久久久久久久久日本 | 午夜精品久久久久久久久久久久久 | 色婷婷综合久久久久中文一区二区 | 午夜一级做a爰片久久毛片 精品综合 | 欧美日本亚洲 | 亚洲精品99 | 国产精品毛片在线 | 91精品久久久久久久久 | 欧美一级在线观看 | 久久久精品一区二区三区 | 国产欧美久久一区二区三区 | 久久久久国产精品人 | 成人精品国产一区二区4080 | 国产中文字幕在线观看 |