找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5392|回復(fù): 7
收起左側(cè)

帶低壓報(bào)警的51單片機(jī)太陽(yáng)能充電寶設(shè)計(jì)與制作(完整代碼資料)

  [復(fù)制鏈接]
ID:721056 發(fā)表于 2020-11-25 09:13 | 顯示全部樓層 |閱讀模式
本設(shè)使用太陽(yáng)能電池板不定時(shí)自供電給鋰電池,同時(shí)加入51單片機(jī)通過(guò)adc0809芯片解析鋰電池電源,并能進(jìn)行低壓報(bào)警,支持兩路5V1A同時(shí)放電,增加三個(gè)按鍵,支持菜單切換顯示等功能。以及相關(guān)設(shè)計(jì)所用的模塊資料。
所用模塊:
STC89C51單片機(jī)最小系統(tǒng)
1602LCD
ADC0809模數(shù)轉(zhuǎn)換芯片
DC-DC升壓芯片
太陽(yáng)能板
鋰電池充放電管理模塊
3.7V鋰電池(1S)
實(shí)物圖:
54bce5f05fa6becc2b1a5a567953c4f.jpg

8d73dd6d2b8b2bea8e96a3c1d0b0112.jpg

太陽(yáng)能充電模塊:

f563169779d53f0aba5b33efff037c9.png

升壓模塊:

ef187032053b21dd91d0ca61c3ccc42.png 6807fd9bc741f3c447cf7bc3f529d55.png 3de0ec0e19250d62606d4df1d331cc4.png


部分單片機(jī)程序代碼:
  1. void Hardware_Init(void)
  2. {
  3.         EA=1;                                 //開總中斷
  4.     TMOD=0x02;                         //設(shè)定定時(shí)器 T0工作方式
  5.     TH0=216;                         //利用T0中斷產(chǎn)生CLK信號(hào)
  6.     TL0=216;  
  7.     TR0=1;                                 //啟動(dòng)定時(shí)器T0
  8.     ET0=1;                                 //配置adc0809
  9.     STR=0;
  10.     OE=0;
  11.         delayms(50);
  12.         LcdInit();                        //lcd初始化
  13.         for(i=0;i<14;i++)LcdWriteData(welcome[i]);
  14.         led_warn();                        //小燈報(bào)警
  15.         delayms(100);
  16.         LcdWriteCom(0x01);  //清屏
  17.         for(i=0;i<12;i++)LcdWriteData(instruction1[i]);
  18.         LcdWriteCom(0x40+0x80);
  19.         for(i=0;i<9;i++)LcdWriteData(instruction2[i]);
  20.         LED=1;
  21.         delayms(100);
  22. }
  23. /*******************************************************************************
  24. 函數(shù)名:  key_scan()
  25. 功  能:    按鍵掃描函數(shù)
  26. *******************************************************************************/
  27. uint update=0;
  28. void key_scan(void)
  29. {
  30.    if(KEY1==0)
  31.    {
  32.            delayms(5);                                         //按鍵消抖,具體原理自行百度
  33.          if(KEY1==0)
  34.          {
  35.                  while(KEY1==0);                                 //等待按鍵釋放,保證按下按鍵只運(yùn)行一次程序
  36.                  LcdWriteCom(0x01);                   //清屏
  37.                 for(i=0;i<15;i++)LcdWriteData(I_Disp[i]);
  38.                 update=1;                                         //開啟實(shí)時(shí)更新標(biāo)志位,主函數(shù)內(nèi)更新
  39.          }
  40.    }
  41.    if(KEY2==0)
  42.    {
  43.            delayms(5);
  44.          if(KEY2==0)
  45.          {
  46.                  while(KEY2==0);
  47.                  LcdWriteCom(0x01);                          //清屏
  48.                  update=0;                                                //關(guān)閉實(shí)時(shí)更新標(biāo)志位
  49.                  LcdWriteCom(0x80);
  50.                  for(i=0;i<12;i++)LcdWriteData(instruction1[i]);
  51.                  LcdWriteCom(0x40+0x80);
  52.                  for(i=0;i<9;i++)LcdWriteData(instruction2[i]);
  53.          }
  54.    }
  55.    if(KEY3==0)
  56.    {
  57.            delayms(5);
  58.          if(KEY3==0)
  59.          {
  60.                  while(KEY3==0);                                   //可增加額外任務(wù)
  61.                 LED=!LED;
  62.          }
  63.    }
  64. }
  65. /*******************************************************************************
  66. 函數(shù)名:  battery_check()
  67. 功  能:    電池檢測(cè)及報(bào)警函數(shù)
  68. *******************************************************************************/
  69. void battery_check(void)
  70. {
  71.         AD();                                //adc數(shù)據(jù)解析
  72.         if(update)
  73.         {
  74.                 LcdDisplay();
  75.                 delayms(4);                //建議加延時(shí),否則小數(shù)點(diǎn)后兩位變化過(guò)快看不清
  76.         }
  77.         if(KEY1&&KEY2&&KEY3) //由于按鍵引腳和adc引腳分時(shí)復(fù)用,所以當(dāng)按鍵使用引腳時(shí),停止adc使用
  78.         {                                         //否則adc數(shù)據(jù)不準(zhǔn)確,將影響報(bào)警準(zhǔn)確度
  79.            if(disbuff[0]<=3&&disbuff[1]<=2)led_warn();          //警報(bào)功能,預(yù)設(shè)3.2V
  80.         }
  81. }

  82. /*******************************************************************************
  83. 函數(shù)名:  main()
  84. 功  能:  主函數(shù)
  85. 注  意:  主函數(shù)內(nèi)由于加入延時(shí),因此按鍵掃描需稍長(zhǎng)時(shí)間按下才可有反應(yīng)(非中斷式按鍵觸發(fā))
  86. *******************************************************************************/
  87. void main(void)
  88. {
  89.         Hardware_Init();                //系統(tǒng)初始化
  90.         while(1)
  91.           {
  92.                   key_scan();                        //按鍵掃描
  93.                 battery_check();        //電壓檢測(cè)顯示、報(bào)警
  94.           }         
  95. }
復(fù)制代碼
太陽(yáng)能充電寶設(shè)計(jì).zip (664.17 KB, 下載次數(shù): 132)
代碼資料評(píng)論可見(jiàn)。

本貼為原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!
時(shí)間:2020/11/
祝好!
回復(fù)

使用道具 舉報(bào)

ID:517951 發(fā)表于 2020-11-25 23:08 | 顯示全部樓層
正準(zhǔn)備給我的1602萬(wàn)年歷增加太陽(yáng)能供電的,想什么就來(lái)什么,不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

ID:852195 發(fā)表于 2020-12-3 11:24 | 顯示全部樓層
以前做了個(gè)太陽(yáng)能充電寶放車用,現(xiàn)在看看如何加入這個(gè)監(jiān)察電路入去
回復(fù)

使用道具 舉報(bào)

ID:595677 發(fā)表于 2020-12-9 17:00 | 顯示全部樓層
看的幾個(gè)都沒(méi)低功耗的呀
回復(fù)

使用道具 舉報(bào)

ID:370511 發(fā)表于 2020-12-9 17:28 | 顯示全部樓層
馬克,學(xué)習(xí)新知識(shí)
回復(fù)

使用道具 舉報(bào)

ID:370511 發(fā)表于 2020-12-9 17:29 | 顯示全部樓層
馬克,學(xué)習(xí)到了新的知識(shí)了!
回復(fù)

使用道具 舉報(bào)

ID:796461 發(fā)表于 2020-12-9 20:03 來(lái)自手機(jī) | 顯示全部樓層
樓主,這個(gè)給0809信號(hào)的是電池的正極嗎
回復(fù)

使用道具 舉報(bào)

ID:839987 發(fā)表于 2021-2-27 23:46 來(lái)自手機(jī) | 顯示全部樓層
正好想要研究研究
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表