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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5A60S2單片機制作的鋰電池容量測試源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:353874 發表于 2019-6-18 22:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
去年做了一個89C52+ad0804的鋰電池容量測試儀,沒有成功,今年新買入了12C5A60S2,自帶AD,開始著手再次制作。學習了很多論壇里高手的程序,由于水平有限,沒有運用中斷,只會利用1S延時,在開發板實驗成功。放電可以仿照LM358電子負載+鋰電池充電板,這樣電路可以簡單一些。
程序很簡單,鑒于水平有限,如有問題還請各位多多指教。
  1. /*--------------------------------------------------------------*/
  2. #include <STC12C5A60S2.H>
  3. #include "LCD5510_V3.H"
  4. #include "STC12ADC.C"

  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #define ulong unsigned long


  8. //定義變量
  9. char a[10]={'0','1','2','3','4','5','6','7','8','9'};
  10. int dianya, ge, shi, bai, qian, c=800;           //c設定最小電流
  11. float cap4=0, cap5=0, cap6=0, cap7=0;
  12. uint tims=0, cur;
  13. //ulong cap;
  14. /*--------------------------------------------------------------*/

  15. //時間顯示函數
  16. void displaytime(uint dat)
  17. {
  18.         uint tims1,tims2,timm1,timm2,timh; //定義秒1秒2,分1分2,時
  19.         timh=dat/3600;
  20.         timm2=(dat-timh*3600)/600;
  21.         timm1=(dat-timh*3600)/60%10;
  22.         tims2=(dat-timh*3600-timm2*600-timm1*60)/10;
  23.         tims1=dat%10;
  24.         LCD_prints(0, 5, "RUN");
  25.         LCD_printc(7, 5, a[timh]);
  26.         LCD_prints(8, 5, ":");
  27.         LCD_printc(9, 5, a[timm2]);
  28.         LCD_printc(10, 5, a[timm1]);
  29.         LCD_prints(11, 5, ":");
  30.         LCD_printc(12, 5, a[tims2]);
  31.         LCD_printc(13, 5, a[tims1]);        
  32. }

  33. /*
  34. //容量顯示函數
  35. void displaycap(uint dat)
  36. {
  37.         LCD_printc(8, 1, a[dat/1000]);
  38.         LCD_printc(9, 1, a[dat/100%10]);
  39.         LCD_printc(10, 1, a[dat/10%10]);
  40.         LCD_printc(11, 1, a[dat%10]);        
  41. }
  42. */

  43. //表頭顯示函數
  44. void displaybiaotou()
  45. {
  46.         LCD_prints(0, 0, "No");
  47.         LCD_prints(3, 0, "I-mA");
  48.         LCD_prints(8, 0, "CY-mAH");
  49.         LCD_prints(1, 1, "1");
  50.         LCD_prints(1, 2, "2");
  51.         LCD_prints(1, 3, "3");
  52.         LCD_prints(1, 4, "4");
  53. }

  54. /*
  55. //5ms定時器中斷函數
  56. void InitTimer0(void)
  57. {
  58.     TMOD = 0x01;
  59.     TH0 = 0x15;
  60.     TL0 = 0x0A0;
  61.     EA = 1;
  62.     ET0 = 1;
  63.     TR0 = 1;
  64. }
  65. */

  66. //1S延時函數
  67. void delay1s(void)   //誤差 -0.000000000056us
  68. {
  69.     uchar a,b,c,n;
  70.     for(c=70;c>0;c--)
  71.         for(b=168;b>0;b--)
  72.             for(a=249;a>0;a--);                         //a=249,每10分鐘快1秒;a=250,每6分鐘慢1秒,每10分鐘慢1.4秒
  73.     for(n=1;n>0;n--);
  74. }

  75. void delay1ms(void)   //誤差 0us
  76. {
  77.     unsigned char a,b;
  78.     for(b=129;b>0;b--)
  79.         for(a=45;a>0;a--);
  80. }


  81. //主函數
  82. void main()
  83. {
  84.         LCD5510_Init();                  //5110初始化
  85.         Init_ADC();               //ADC初始化
  86.         displaybiaotou();         //顯示表頭
  87.         
  88.         while(1)
  89.                 {
  90.                 uchar lu;
  91.                         for(lu=4;lu<8;)
  92.                         {
  93.                                  Get_ADC_Result(lu);  //開始轉換
  94.                                 
  95. //**********以下為放電電流顯示語句*********************                                                               
  96.                                 dianya = Count(lu)*1000;
  97.                                 LCD_printn(3, lu-3, dianya, 5);

  98. //**********以下為電池容量語句*********************
  99.                                 if(lu == 4)
  100.                                 {
  101.                                         if(dianya > c)                         //最小電流,假設電阻為1歐姆5W,電壓與電流數值相同
  102.                                         {
  103.                                                 cap4 = (float)dianya/3600 + cap4;
  104.                                         }
  105.                                         else
  106.                                         {
  107.                                                 cap4 = cap4;
  108.                                         }
  109.                                         LCD_printn(8, lu-3, cap4, 4);
  110.                                 }

  111.                                 if(lu == 5)
  112.                                 {
  113.                                         if(dianya > c)
  114.                                         {
  115.                                                 cap5 = (float)dianya/3600 + cap5;
  116.                                         }
  117.                                         else
  118.                                         {
  119.                                                 cap5 = cap5;
  120.                                         }
  121.                                         LCD_printn(8, lu-3, cap5, 4);
  122.                                 }

  123.                                 if(lu == 6)
  124.                                 {
  125.                                         if(dianya > c)
  126.                                         {
  127.                                                 cap6 = (float)dianya/3600 + cap6;
  128.                                         }
  129.                                         else
  130.                                         {
  131.                                                 cap6 = cap6;
  132.                                         }
  133.                                         LCD_printn(8, lu-3, cap6, 4);
  134.                                 }

  135.                                 if(lu == 7)
  136.                                 {
  137.                                         if(dianya > c)
  138.                                         {
  139.                                                 cap7 = (float)dianya/3600 + cap7;
  140.                                         }
  141.                                         else
  142.                                         {
  143.                                                 cap7 = cap7;
  144.                                         }
  145.                                         LCD_printn(8, lu-3, cap7, 4);
  146.                                 }

  147.                                 lu++;
  148.                         }
  149.                         
  150.                         displaytime(tims);
  151.                         tims++;
  152.                         delay1s();
  153.                         delay1ms();         //加入延時,每10分鐘慢0.6秒
  154.                 }
  155. }
復制代碼


全部資料51hei下載地址:
5110鋰電池容量測試儀.rar (57.61 KB, 下載次數: 115)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:328014 發表于 2019-6-18 23:23 | 只看該作者
好東東,不過沒有原理圖 樓主能介紹下電路嗎?
回復

使用道具 舉報

板凳
ID:353874 發表于 2019-6-19 08:59 | 只看該作者
STC12C5A60S2,P1.4—1.7作為ADC轉換,用5110液晶屏,電子負載參考“數碼之家”中stdzlqz的電路圖,
回復

使用道具 舉報

地板
ID:415539 發表于 2019-8-9 22:11 | 只看該作者
好東東,不過沒有原理圖 樓主能介紹下電路嗎?
回復

使用道具 舉報

5#
ID:48413 發表于 2019-8-27 20:04 | 只看該作者
學習一下謝謝樓主
回復

使用道具 舉報

6#
ID:732567 發表于 2020-4-19 23:58 來自手機 | 只看該作者
樓主能發一下完整的電路圖嗎
回復

使用道具 舉報

7#
ID:746837 發表于 2020-5-8 13:22 | 只看該作者
請問樓主有沒有仿真圖呢?
回復

使用道具 舉報

8#
ID:305511 發表于 2020-5-31 09:08 | 只看該作者
好東西,如果有原理圖就更好了!
回復

使用道具 舉報

9#
ID:238730 發表于 2020-6-5 01:18 | 只看該作者
感謝分享
回復

使用道具 舉報

10#
ID:105698 發表于 2020-6-5 15:13 | 只看該作者
感謝分享
回復

使用道具 舉報

11#
ID:687469 發表于 2020-10-13 23:57 | 只看該作者
求電路圖
回復

使用道具 舉報

12#
ID:143767 發表于 2020-10-14 11:09 | 只看該作者
不錯的設計如果能用LED數碼管顯示就好了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产ts人妖一区二区三区 | 亚洲精品视频久久 | 精品国产欧美一区二区 | 91国自产| 羞羞视频在线观看 | 中文字字幕在线中文乱码范文 | 美女天天操| 三级在线视频 | 性大毛片视频 | 在线a视频 | 国产91久久精品一区二区 | 粉嫩一区二区三区国产精品 | 综合国产在线 | 久久激情视频 | 精品一二区 | 日韩中文字幕视频在线观看 | 欧美精品欧美精品系列 | 国产高清一区二区 | 亚洲精品国产成人 | 日韩欧美国产一区二区三区 | 国产97人人超碰caoprom | 黄色成人国产 | 综合久久av | 青青久久久 | 国产在线视频在线观看 | 国产在线不卡 | 国产精品视频一区二区三区不卡 | 久久久精品在线 | 成人在线观看网站 | 谁有毛片 | 日韩精品免费看 | 青青久久| 久久国际精品 | 日韩在线免费视频 | 二区视频 | 亚洲国产成人av好男人在线观看 | 亚洲成人免费在线 | 一区二区成人 | 成人在线视频一区 | 国产羞羞视频在线观看 | 99精品一区二区三区 |