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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機檢測主電源和電池電壓程序問題求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:709761 發表于 2021-9-13 17:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序每秒檢測主電源和電池電壓,并發送電量顯示指令。
現在的問題是我不想每秒都發送,而是在電量掉一格電有變化時再發送,如何實現。
  1. if(ms500 == 1) //每秒檢測電壓
  2.          {
  3.             ms500 = 0;
  4.             dy = adc119(10); //電源電壓
  5.             dc = adc119(11); //電池電壓
  6.              if(dy >= 270||dc >= 270)//主電源或者電池電壓超過15V
  7.                                                  {
  8.                                                 
  9.                                                  //超壓直接關機
  10.                                                  pwm5 = 0; //關閉充電
  11.                     for(i = 0; i < 9; i++)
  12.                     {
  13.                         UartSend(dc6[i]) ;

  14.                     }//顯示電源或電池異常
  15.                                                 
  16.                                                  }
  17.             else if(dy < 25 || dy == 0) //主電源停電,電池供電
  18.             {



  19.                 if(dc >= 228) //電壓12.6V 4格電
  20.                 {
  21.                     for(i = 0; i < 9; i++)
  22.                     {
  23.                         UartSend(dc4[i]) ;

  24.                     }
  25.                 }
  26.                 else if(dc >= 220 && dc < 228) //電壓12.2V 3格電
  27.                 {
  28.                     for(i = 0; i < 9; i++)
  29.                     {
  30.                         UartSend(dc3[i]) ;

  31.                     }
  32.                 }
  33.                 else if(dc >= 213 && dc < 220) //電壓12V 2格電
  34.                 {
  35.                     for(i = 0; i < 9; i++)
  36.                     {
  37.                         UartSend(dc2[i]) ;

  38.                     }
  39.                 }
  40.                 else if(dc >= 207 && dc < 213) //電壓11.6V 1格電
  41.                 {
  42.                     for(i = 0; i < 9; i++)
  43.                     {
  44.                         UartSend(dc1[i]) ;

  45.                     }
  46.                 }
  47.                                                                
  48.                                                                 else if(dc < 200) //電池電壓低于11V  欠壓關機
  49.                 {
  50.                     //                                                T4T3M &= ~0x08;                //關閉定時器3 防止再次檢測發送
  51.                     gpwm34();//關閉DDS
  52.                     for(i = 0; i < 9; i++)
  53.                     {
  54.                         UartSend(gj9[i]) ; //發給主單片機發送關機指令 9字節
  55.                     }

  56.                     //等待串口接收主單片機發來關機指令
  57.                 }
  58.             }

  59.             else if(dy>216&&dy <270) //主電源有電時  12V到15V之間
  60.             {


  61.                 if(dc == 0 || dc < 100) //電池電壓為0或者小于6V
  62.                 {
  63.                     pwm5 = 0; //關閉充電
  64.                     for(i = 0; i < 9; i++)
  65.                     {
  66.                         UartSend(dc6[i]) ;

  67.                     }//顯示電池異常
  68.                 }

  69.                 else if (dc >= 162&&dc<dy) //電池電壓大于等于9V 小于主電源電壓

  70.                 {

  71.                     pwm5 = 1; //打開充電
  72.                     for(i = 0; i < 9; i++)
  73.                     {
  74.                         UartSend(dc5[i]) ;

  75.                     } //顯示充電中
  76.                                                                         }
  77.                                                                 else if(dc>dy)////電池電壓大于主電源電壓
  78.                                                                         {
  79.                                                                         
  80.                     pwm5 = 0; //關閉充電
  81.                     for(i = 0; i < 9; i++)
  82.                     {
  83.                         UartSend(dc6[i]) ;

  84.                     }//顯示電池異常
  85.                                                                          }



  86.             }
復制代碼

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

使用道具 舉報

沙發
ID:624769 發表于 2021-9-13 17:47 | 只看該作者
做一個變量, 保存上一次測量時的 檔位, 周期執行 判斷當前檔位是否比變量保存的檔位 低,
是的話:發送, 并且記錄新的檔位到變量,  反之,啥也不干。
回復

使用道具 舉報

板凳
ID:709761 發表于 2021-9-14 09:27 | 只看該作者
人工置頂下
回復

使用道具 舉報

地板
ID:123289 發表于 2021-9-14 15:17 | 只看該作者
腦子怎么想的?
發送前識別一下電壓,而后再發,不就OK了嗎?
回復

使用道具 舉報

5#
ID:624769 發表于 2021-9-14 15:53 | 只看該作者
yzwzfyz 發表于 2021-9-14 15:17
腦子怎么想的?
發送前識別一下電壓,而后再發,不就OK了嗎?

他在等人給他代碼。
回復

使用道具 舉報

6#
ID:709761 發表于 2021-9-14 17:23 | 只看該作者
188610329 發表于 2021-9-14 15:53
他在等人給他代碼。

不懂什么意思,最好有代碼示范
回復

使用道具 舉報

7#
ID:161164 發表于 2021-9-14 23:54 | 只看該作者
李冬 發表于 2021-9-14 17:23
不懂什么意思,最好有代碼示范

示范來了~

  1. if(dc >= 228) //電壓12.6V 4格電
  2. {
  3.         Voltage_Mode = 4;
  4. }
  5. else if(dc >= 220 && dc < 228) //電壓12.2V 3格電
  6. {
  7.         Voltage_Mode = 3;
  8. }






  9. if(Voltage_Mode != Voltage_Mode_Old)
  10. {
  11.         switch(Voltage_Mode)
  12.         {
  13.                 。
  14.                 。
  15.                 。
  16.                 case 3:               
  17.                         for(i = 0; i < 9; i++)
  18.                         {
  19.                                 UartSend(dc3[i]) ;
  20.                         }
  21.                 break;
  22.                 case 4:               
  23.                         for(i = 0; i < 9; i++)
  24.                         {
  25.                                 UartSend(dc4[i]) ;
  26.                         }
  27.                 break;
  28.                 。
  29.                 。
  30.                 。
  31.         }
  32.         Voltage_Mode_Old = Voltage_Mode;
  33. }
復制代碼
回復

使用道具 舉報

8#
ID:420836 發表于 2021-9-15 07:52 | 只看該作者
程序會不斷檢查來自每個源的電壓,并循環檢查電壓是否低于閾值設置。 然后決定是否應該發送電壓值。
回復

使用道具 舉報

9#
ID:709761 發表于 2021-9-15 08:05 | 只看該作者

感謝您的指點。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频三级 | 日韩精品在线一区二区 | 亚洲一区二区三区四区五区午夜 | 成人二区| 精品国产91 | 日日干天天操 | 热re99久久精品国99热观看 | 干干干日日日 | 日韩精品极品视频在线观看免费 | 欧美精品一区二区三区在线播放 | 中文字幕在线观看一区 | 9999视频| 日朝毛片 | 偷拍自拍网址 | 日日夜精品视频 | 国产羞羞视频在线观看 | 国产精品99久久久久久久vr | 亚洲成人日韩 | 欧美在线a| 久久免费精品 | 国产成人精品一区二区三 | 91精品国产综合久久婷婷香蕉 | 日本二区在线观看 | 国产精品视频久久久 | 不卡一区 | 欧美一区二区三区久久精品 | 亚洲精品白浆高清久久久久久 | 黄片毛片在线观看 | 久久av一区 | 久草网在线视频 | 成人av播放 | 特黄毛片视频 | 6080亚洲精品一区二区 | 先锋资源站| 亚洲网站免费看 | 亚洲丝袜天堂 | 国产精品久久久久久一区二区三区 | 中文字幕国产日韩 | 欧美a在线 | 免费能直接在线观看黄的视频 | 综合久|