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

QQ登錄

只需一步,快速開(kāi)始

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

STC12LE5620AD(低電壓版)單片機(jī)做的彩屏充電寶

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:358930 發(fā)表于 2018-10-24 21:52 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
制作出來(lái)的實(shí)物圖如下:

全功能,單按鍵,很牛的充電寶,也是充電寶中的五代戰(zhàn)斗了!

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

  1. #include "base_io.h"
  2. #include "uart.h"
  3. #include "adc.h"
  4. #include "lcd.h"
  5. #include "print.h"

  6. void DigitToChar(WORD num,BYTE* s);
  7. void DigitNum(WORD num,BYTE *s);

  8. int main()
  9. {
  10.         int i=0;
  11.         int j=0;
  12.         unsigned int count = 0;
  13.         unsigned int n=0;
  14.         unsigned int adc=0;
  15.         unsigned char date=0;
  16.         BYTE num[7];
  17.         WORD voltage[8];
  18.         num[6] = 0;
  19.        
  20.        
  21.        
  22.         //初始化串口
  23.         UartInit();
  24.         ES = 1;
  25.         EA = 1;
  26.        
  27.        
  28.        
  29.         //初始化ADC
  30.         init_adc(0);  //去警告

  31.         //初始化LCD
  32.         init_lcd();
  33.         SET_LCD();
  34.         fill();
  35.         clear();
  36.        
  37.         P02 =1;                                //激活開(kāi)關(guān)、輸出高電平時(shí),USB輸出為0.5V,可通過(guò)ADC3引腳測(cè)量電池電壓。當(dāng)USB輸出5V時(shí),通過(guò)ADC4測(cè)量USB1電流(1000mAh),ADC5測(cè)量USB2電流(500mAh)
  38.         //當(dāng)充電時(shí),P33變?yōu)榈纂娖,不充電時(shí),P33為高電平,P37一直為高電平
  39.         P11 = 1;                                //無(wú)作用(我沒(méi)測(cè)式出來(lái)作用)
  40.         P12 = 1;                                //無(wú)作用(我沒(méi)測(cè)式出來(lái)作用)
  41.         P13 = 1;
  42.         P16 = 1;                                //無(wú)作用(我沒(méi)測(cè)式出來(lái)作用)
  43.         P17 = 1;                                //無(wú)作用(我沒(méi)測(cè)式出來(lái)作用)

  44.         while(1)
  45.         {
  46.           
  47.                
  48.                 for(i=0;i<8;i++)   //8全通道ADC顯示與轉(zhuǎn)換
  49.                 {
  50.                        
  51.                         if(i==0 || i== 4)
  52.                         {
  53.                                 if(i==0) //
  54.                                 {
  55.                                         clear_line_x8(0);
  56.                                 }
  57.                                 if(i==4)
  58.                                 {
  59.                                         clear_line_x8(2);
  60.                                 }
  61.                         }

  62.                         voltage[i] = adc_get(i);  //全通道ADC顯示與轉(zhuǎn)換
  63.                         DigitNum(voltage[i],&num);
  64.                  
  65.                         //print_string(num);        //全通道ADC顯示
  66.                //print_string(" ");
  67.                        
  68.                 }

  69.                 clear_line_x8(4);
  70.                 print_string(" IN 5V:"); //充電狀態(tài)
  71.                 if(P33 == 0)
  72.                 {
  73.                         print_string(" ok ");
  74.                 }else{
  75.                         print_string("STOP");
  76.                 }
  77.                
  78.                
  79.                 clear_line_x8(6);
  80.                 print_string(" USB5V:");//輸出狀態(tài)
  81.                 if(P02 == 0)
  82.                 {
  83.                         print_string(" ok ");
  84.                 }else{
  85.                         print_string("STOP");
  86.                 }
  87.                
  88.                
  89.                 clear_line_x8(8);
  90.                 print_string(" DZ IN:"); //電池電壓
  91.                 {
  92.                         adc  = 1013-voltage[1];
  93.                         adc *= 43;
  94.                         adc  = (5110-adc);

  95.                         DigitNum(adc,&num);
  96.                         num[5] = 0;
  97.                         //num[4] = num[3];
  98.                         num[3] = num[2];
  99.                         num[2] = num[1];
  100.                         num[1] = '.';
  101.                   print_string(num);
  102.            print_string(" V");


  103.                 clear_line_x8(2);
  104.                         print_string(" Power:");       
  105.                         date = (adc/10000);//充電電壓                       
  106.                    //num[0] = (date)+0x30;  //向后移動(dòng)
  107.                         adc  = adc%100;
  108.                         num[1] = '.';                       
  109.                         date = adc/10;
  110.                         adc  = adc%10;
  111.                         num[2] = date+'0';                       
  112.                         date = adc;
  113.                         num[3] = date+'0';                       
  114.                         //num[4] = 'V';                       
  115.                         print_string(num);
  116.                         print_string(" V");
  117.                 }
  118.                
  119.                 clear_line_x8(10);
  120.                 print_string(" USB 1:");

  121.                 {
  122.                         adc = voltage[5];
  123.                         adc *= 25;
  124.                        
  125.                         DigitNum(adc,&num);
  126.                         print_string(num);
  127.                        
  128.                         print_string(" mA");
  129.                        
  130.                        
  131.                 }
  132.                
  133.                
  134.                 clear_line_x8(12);
  135.                 print_string(" USB 2:");
  136.                 {
  137.                         adc = voltage[4];
  138.                         adc *= 25;
  139.                        
  140.                         adc /= 10;
  141.                         DigitNum(adc,&num);
  142.                         print_string(num);
  143.                        
  144.                         print_string(" mA");
  145.                 }
  146.                
  147.                
  148.                 clear_line_x8(14);
  149.                 if(count<20)
  150.                 {
  151.                         count++;
  152.                 if(count>20)
  153.                         {
  154.                         count=0;
  155.                         }
  156.                 }
  157.                 print_string(" Time :");
  158.                 DigitNum(count,&num);
  159.                 print_string(num);
  160.             print_string(" S");
  161.                                                        

  162.                 if(P32 == 0)
  163.                 {
  164.                         if(n<100)
  165.                         {
  166.                                 n ++;
  167.                                
  168.                                 continue;
  169.                         }else{
  170.                                 n = 0;
  171.                         }
  172.                 }else{
  173.                         if(n<4 && n>0)
  174.                         {
  175.                                 P02 = ~P02;
  176.                         }
  177.                        
  178.                         n = 0;
  179.                 }
  180.         }
  181. }


  182. //無(wú)符號(hào)12位數(shù)二進(jìn)進(jìn)數(shù)轉(zhuǎn)化為4位小數(shù)表示的電壓
  183. void DigitToChar(WORD num,BYTE* s)
  184. {
  185.         int i=0;
  186.        
  187.         num*=11;
  188.         num/=4;
  189.        
  190.        
  191.         for(i=0;i<6;i++)
  192.         {
  193.                 if(i==0)
  194.                 {
  195.                         *s++ = num/1024+48;
  196.                         num %= 1024;
  197.                 }else if(i==1)
  198.                         {
  199.                                 *s++ = '.';
  200.                         }else
  201.                                 {
  202.                                         num*=10;
  203.                                         *s++ = num/1024 + 48;
  204.                                         num%=1024;
  205. ……………………

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

所有資料51hei提供下載:
顯彩STC12LE充電 OK2.zip (89.88 KB, 下載次數(shù): 148)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:358930 發(fā)表于 2018-10-24 21:56 | 只看該作者
源代碼打包送了,自己改的第二版。測(cè)試通過(guò)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:358930 發(fā)表于 2018-10-24 22:04 | 只看該作者
單片機(jī)和彩屏和相關(guān)例程也送了

充電寶單片與彩屏資料.zip

7.3 MB, 下載次數(shù): 131, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

地板
ID:73679 發(fā)表于 2018-10-25 10:48 | 只看該作者
大神,有原理圖嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:399179 發(fā)表于 2018-10-25 19:11 來(lái)自手機(jī) | 只看該作者
感覺(jué)好難啊!
回復(fù)

使用道具 舉報(bào)

6#
ID:305511 發(fā)表于 2019-2-7 09:08 來(lái)自手機(jī) | 只看該作者
冰冰潔潔 發(fā)表于 2018-10-24 22:04
單片機(jī)和彩屏和相關(guān)例程也送了

非常感謝!
回復(fù)

使用道具 舉報(bào)

7#
ID:305511 發(fā)表于 2019-2-7 10:22 來(lái)自手機(jī) | 只看該作者
冰冰潔潔 發(fā)表于 2018-10-24 22:04
單片機(jī)和彩屏和相關(guān)例程也送了

大師,有沒(méi)有電路原理圖
先謝過(guò)了
回復(fù)

使用道具 舉報(bào)

8#
ID:295726 發(fā)表于 2019-7-29 19:02 | 只看該作者
大神,感謝!如樓上所說(shuō)有原理個(gè)電路圖嗎?
回復(fù)

使用道具 舉報(bào)

9#
ID:628332 發(fā)表于 2019-10-22 17:32 | 只看該作者
先做個(gè)馬克一個(gè)
回復(fù)

使用道具 舉報(bào)

10#
ID:617260 發(fā)表于 2019-12-22 22:21 | 只看該作者
不錯(cuò),挺有新意
回復(fù)

使用道具 舉報(bào)

11#
ID:140183 發(fā)表于 2020-1-19 08:50 | 只看該作者
都沒(méi)有電路圖的
回復(fù)

使用道具 舉報(bào)

12#
ID:659397 發(fā)表于 2020-1-20 10:58 | 只看該作者
請(qǐng)問(wèn)用的是什么升降壓方案,單片機(jī)的PWM還是外置芯片?規(guī)格參數(shù)怎么樣?
回復(fù)

使用道具 舉報(bào)

13#
ID:305511 發(fā)表于 2020-2-13 16:13 | 只看該作者
好牛!我要學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

14#
ID:694032 發(fā)表于 2020-2-16 20:03 | 只看該作者
請(qǐng)問(wèn)有原理圖或者Keil模擬圖嗎?
回復(fù)

使用道具 舉報(bào)

15#
ID:706564 發(fā)表于 2020-3-11 18:18 | 只看該作者
感謝分享!學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

16#
ID:53978 發(fā)表于 2020-3-17 20:01 | 只看該作者
有原理圖沒(méi)
回復(fù)

使用道具 舉報(bào)

17#
ID:305511 發(fā)表于 2020-4-4 16:17 | 只看該作者
太厲害了,謝謝呀!
回復(fù)

使用道具 舉報(bào)

18#
ID:377382 發(fā)表于 2020-4-5 12:09 | 只看該作者
非常感謝!
回復(fù)

使用道具 舉報(bào)

19#
ID:79642 發(fā)表于 2020-4-11 22:26 來(lái)自手機(jī) | 只看該作者
正好手里有一塊
回復(fù)

使用道具 舉報(bào)

20#
ID:358930 發(fā)表于 2020-4-12 08:45 來(lái)自手機(jī) | 只看該作者
amwguh86 發(fā)表于 2020-4-11 22:26
正好手里有一塊

原板是成品板,改的程序。
回復(fù)

使用道具 舉報(bào)

21#
ID:262631 發(fā)表于 2020-4-15 15:55 | 只看該作者
要是能顯示漢字更好了
回復(fù)

使用道具 舉報(bào)

22#
ID:93626 發(fā)表于 2021-9-1 17:04 | 只看該作者

要是能顯示漢字更好了
回復(fù)

使用道具 舉報(bào)

23#
ID:437327 發(fā)表于 2021-12-21 10:19 | 只看該作者
好東西,正好需要,多謝LZ 無(wú)私奉獻(xiàn)
回復(fù)

使用道具 舉報(bào)

24#
ID:437327 發(fā)表于 2022-5-3 11:50 | 只看該作者
不錯(cuò),多謝LZ 無(wú)私奉獻(xiàn),正好需要
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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