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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我制作的電動車充電保護器 含單片機源碼與電路原理圖

  [復制鏈接]
跳轉到指定樓層
樓主
下面是此電瓶車充電保護器作品的外觀圖:

這是一個電瓶車充電器的附加裝置,不對充電器做任何變動,而是將充電器插在該保護器上連成一體代替原充電器進行電瓶車的充電。
功能:1、充電達到設定的電壓,自動斷電停充,防過充。
      2、滿十小時自動停充電,電瓶有故障充不到設定電壓,經十小時也停充。
      3、能根據氣溫設定充電電壓檔次,能記憶設定的檔次,無須每次設定。
      4、用二進制數循環顯示電壓的十位個位小數位值。
用法:將充電器插在該保護器上連成一體,代替原充電器進行電瓶車的充電。插上220V交流后在15秒內左右慢搖保護器,使內置水銀開關接通又斷開(按鍵作用),溫度檔次依次增加,共分1~8檔,對應環境溫度是5℃-40℃。水銀開關斷開15秒后進入充電程序,水銀開關不再起作用。
       充足電的斷充電指示可從原充電器指示燈看出,不另加指示燈。
讀電壓:顯示過程是--四燈全亮(提示開始)、滅、十位、滅、個位、滅、小數一位、滅,循環不斷。用四位二進制數表示0到9,讀出數不難,記得四燈分別代表8、4、2、1,將亮燈的數相加就是了。0也顯示為滅,可從時間上判別出來。
例:54.9顯示為
       ○○○○  開始
  ●○●○  5
       ●○●●  4
       ○●●○  9
為省事沒用數碼管,自己用的東西,簡單實用為好。四個發光管也合用一個限流電阻,單片機復位用的電容電阻也省了,晶振也省了。

工作原理:用手機充電器拆來的電路板為裝置提供5V電源。單片機AD轉換測電壓,每15秒進行一次。測得的電壓與設定的終止電壓比較,達到了就給繼電器模塊送一信號,收到信號繼電器就斷開充電器電源。單片機同時計時,滿十時也發出停充電信號,滿十天自動重啟單片機進行充電管理(暑假長時間人不在家也沒問題了)。
    為避免單片機工作電壓變動對電壓測量的影響,用TL431提供一個基準電壓,P1.1對其進行AD轉換。電瓶電壓1/15分壓后用P1.0進行AD轉換,然后用下式算出電瓶電壓。
         十五分之一電瓶電壓:基準電壓=電瓶AD值:基準電壓的AD值
實測TL431穩壓后是2.524伏,程序中采用的具體算法是:
      電瓶電壓伏特數=(電瓶AD值×37+電瓶AD值×86÷100)÷基準電壓AD值   
被除數是兩個8位,除數是一個8位,我是用循環做減法的辦法來求商。具體見源碼。
      分壓電阻的調整,借助萬用表反復細心調精密可調電阻,使阻值之比為14:1。
材料:單片機STC12C5204AD  繼電器模塊,手機充電器,交流插座等。

電路原理圖:


接線示意圖:


制作過程:


單片機編程源碼如下:
  1.                                                                  ;1/15取樣,單片機工作電壓約5V,能測電壓達75V。
  2. ;改成最多充電10小時。十天后重啟。
  3. ;使用EEPROM保存溫度檔。                                                                                                                                                                                                ;2016年7月6日修改:
  4. ;使用汞開關設定溫度檔,使用EEPROM保存溫度檔。
  5. ;開機16秒內(大約)按鍵設定溫度檔數,若不按鍵,則默認上次的檔數。有1,2,3,4,5,6,7,8共八檔。
  6. ;設溫度檔后接通220V
  7. ;從溫度5度起為第1檔,10度為第2檔,15度為第3檔,……35度為第7檔,40度為第8 檔,0檔同第8檔。停下不按鍵約15秒自動進入下一環節。

  8. ;顯示電瓶伏特數,按四燈亮、黑、十位、黑、個位、黑、小數位、黑,循環顯示。四燈亮和黑是半秒,數字是1秒
  9. ;20H.0設置溫度檔[WENDU]子程序控制位,初值賦1,在等待按鍵的子程序[xunhuan]中清0.僅在開機初用一次。
  10. ;20H.2 顯示控制位.走時置1,顯示后清0,使得半秒進行一次顯示。
  11. ;20H.3 秒標志
  12. ;21H.0
  13. ;21H.2 [Tuoliu]程序控制位,使程序只運行一次。
  14. ;21H.3
  15. ;21H.4是電瓶正常標志,初值賦1(正常),檢測到電瓶充滿或不正常將其清0,清0后要重啟才能置1.
  16. ;21H.6充電10小時標志,初值為1,充電達10小時將其清0.清0后要重啟才能置1.
  17. ;22H.0 走時用的20ms標志,在中斷置1,走時中清0。
  18. ;22H.3 時標志
  19. ;22H.5 每15秒運行一次的標志位,走時置1.
  20. ;22H.7
  21. ;用檢測到的電壓AD值與設定的終止電壓AD值進行比較,確定電瓶滿或不正常(電壓太低或無電瓶)關斷220V供電。
  22. ;開機接通220V,電瓶充滿(或不正常)關斷,充電10小時關斷,十天后單片機重啟。

  23. ;P1.0--A/D轉換
  24. ;P1.1--A/D轉換測TL431電壓
  25. ;P1.2--鍵,每按一次溫度檔數加1,在0--8之中循環,停下不按鍵約15秒自動進入下一環節。
  26. ;P1.7,P1.6,P1.5,P1.4接LED做溫度檔顯示,點亮分別表示8,4,2,1,二進制數。
  27. ;P3.2--通過光耦控制220V通斷 0-通  1-斷
  28. ;***************

  29. ;***
  30. U_zhongzhixiao  EQU 5EH  ;終止電壓小數寄存器
  31. U_zhongzhizheng EQU 5FH  ;終止電壓整數寄存器
  32. JSHQ_WEI EQU 65H        ;顯示第幾位計數器
  33. XUN_JSHQ EQU 67H        ;循環次數
  34. wendudang  EQU  68H     ;溫度檔數
  35. v_ZH   EQU 5DH         ;電瓶伏特整數寄存器
  36. V_XAO  EQU 5CH         ;電瓶伏特小數寄存器
  37. TL431_AD   EQU  5BH     ;TL431的AD值
  38. TL431_AD1  EQU  5AH     ;TL431的AD值(第一次)
  39. jiace_adzhi1 EQU 58H    ;第一次檢測到的AD值
  40. ;xiu_adzhi  EQU  6CH     ;(修)終止電壓AD值
  41. Jiace_ADzhi EQU 59H     ;檢測AD值  檢測到的AD值
  42. JSHQ_15   EQU  6EH      ;15秒計數器
  43. JSHQ_20mS  EQU  70H     ;20mS計數器  計20mS的個數
  44. JSHQ_S     EQU  71H     ;半秒計數器
  45. JSHQ_M     EQU  72H     ;分計數器
  46. JSHQ_H     EQU  73H     ;時計數器
  47. ;60H,61H,62H,63H,64H 用在顯緩中
  48. beichushugao  equ  75h     ;被除數高位
  49. beichushudi  EQU  76H    ;被除數低位
  50. chushu     EQU  77H     ;除數
  51. zhengshang  EQU 78H     ;整數商
  52. XIAOSHUSHANG  EQU 79H    ;小數商
  53. YUSHU      EQU  7AH     ;余數
  54. LSSHU     EQU  7BH     ;臨時存
  55. DISHU  EQU 7CH         ;低數 第二次的被除數的低位
  56. GAOSHU  EQU 7DH        ;高數 第二次的被除數的高位

  57. ADC_CONTR EQU 0BCH     ;ADC控制寄存器
  58. ADC_RES   EQU 0BDH     ;A/D轉換結果寄存器
  59. P1ASF  EQU 09DH       ;p1口模擬功能控制寄存器
  60. WDT_CONTR EQU 0C1H    ;看門狗
  61. ;AUXR DATA 8EH         ;選擇1T與12T的寄存器

  62. IAP_CONTR EQU 0C7H      ;下載/復位控制器

  63. jian  EQU  p1.2         ;鍵
  64. kong  EQU  p3.2         ;控 220V   0-通  1-斷
  65. p1m1  equ  91h
  66. p1m0  equ  92h
  67. ;EEPROM有關的寄存器
  68. dat       equ     0C2H               
  69. drh       equ     0C3H               
  70. drl       equ     0C4H                  
  71. cmd       equ     0C5H               
  72. trig      equ     0C6H               
  73. contr     equ     0C7H
  74. ;****************

  75.         ORG   0000H
  76.         AJMP  START
  77.         ORG          000BH
  78.         LJMP  TIME_0
  79. ;        ORG   001BH

  80.         ORG   0030H
  81. START:
  82. ;其它初始化寫在此     
  83.    MOV P1M1,#00000011B
  84.    MOV P1M0,#00000000B    ;P1.0 P1.1兩個高阻輸入做AD     
  85.    MOV P1,#00001111B
  86.     setb kong          ;斷220V交流 設溫度檔后接通

  87.         MOV 22H,#00100000B    ;檢測標志 1-檢 0-不檢 每15秒檢測AD一次和處理顯緩一次的標志位,走時置1,處理顯緩后清0
  88.         MOV 21H,#01010000B   ;21h.4 電瓶 1-能充  0-不能充電(含無、充滿)  
  89.                                ;21H.6  初值1,充電10小時清0 。

  90. ;*用計數器0  初步設置定時中斷    20MS中斷  20毫秒@10.911MHz
  91.     MOV SP,#80H                     ;設置堆棧區域
  92. ;           ANL AUXR,#7FH                ;定時器時鐘12T模式  默認是12T模式 省略本句
  93.         MOV        TMOD,#00010001B         ;定時器0定時器1都是 16位
  94.         MOV        TL0,#0F7H
  95.         MOV        TH0,#0B8H               

  96.         SETB EA
  97.         SETB        ET0
  98.         SETB        TR0              ;開放中斷
  99.         
  100.         setb 20h.0          ;控制設置溫度檔程序的循環用
  101. ;*****************
  102. ;設置溫度檔   從EEPROM中讀出保存值,一段時間內不按鍵,則使用該檔值;如按鍵則改之,停下不動,過會兒保存并啟用。
  103.      LCALL  DOUEEPROM    ;讀EEPROM中的保存值
  104. WENDU:
  105.      jnb 20H.0,WENDUret       ;0-跳

  106.      LCALL  doujian       ;讀鍵和健值處理
  107.      LCALL  XIANSHI       ;顯示
  108.      LCALL  xunhuan       ;循環 次數
  109.      AJMP WENDU
  110. WENDUret:
  111.      LCALL clear_write     ;先擦除EEPROM再寫EEPROM保存溫度檔,然后關閉EEPROM
  112.      nop
  113. ;********************
  114. ;設AD檔  據wendudang中數字,設定終止電壓
  115. ADdang:
  116.      MOV A,wendudang
  117.      cjne a,#1,ADdang1
  118.      MOV U_zhongzhizheng,57
  119.      mov U_zhongzhixiao,1      ;對應是57.11V   5度以下
  120.         JMP ADdangRET     
  121. ADdang1:
  122.      cjne a,#2,ADdang2
  123.      MOV U_zhongzhizheng,56
  124.      mov U_zhongzhixiao,6        ;對應是56.64V   10度以下
  125.         JMP ADdangRET
  126. ADdang2:
  127.      cjne a,#3,ADdang3
  128.      MOV U_zhongzhizheng,56
  129.      mov U_zhongzhixiao,1        ;對應是56.16V   15度以下
  130.         JMP ADdangRET        
  131. ADdang3:
  132.      cjne a,#4,ADdang4
  133.      MOV U_zhongzhizheng,55
  134.      mov U_zhongzhixiao,6        ;對應是55.68V   20度以下
  135.         JMP ADdangRET        
  136. ADdang4:
  137.      cjne a,#5,ADdang5
  138.      MOV U_zhongzhizheng,55
  139.      mov U_zhongzhixiao,2        ;對應是55.20V   25度以下
  140.         JMP ADdangRET        
  141. ADdang5:
  142.      cjne a,#6,ADdang6
  143.      MOV U_zhongzhizheng,54
  144.      mov U_zhongzhixiao,7         ;對應是54.72V   30度以下
  145.         JMP ADdangRET
  146. ADdang6:
  147.      cjne a,#7,ADdang7
  148.      MOV U_zhongzhizheng,54
  149.      mov U_zhongzhixiao,2         ;對應是54.24V   35度以下
  150.         JMP ADdangRET
  151. ADdang7:
  152.      cjne a,#8,ADdang8
  153.      MOV U_zhongzhizheng,53
  154.      mov U_zhongzhixiao,7          ;對應是53.76V   40度以下
  155.         JMP ADdangRET
  156. ADdang8:             ;剩下的就是 a=0了    同a=8 檔           
  157.      MOV U_zhongzhizheng,53
  158.      mov U_zhongzhixiao,7          ;對應是53.76V   40度以下

  159. ADdangRET:
  160.      clr kong     ;接通220V
  161.         nop
  162.         NOP
  163.     ;進入主程序之前不能有RET,否則運行到此止。
  164. ;*****************
  165. ;主程序
  166. ZhuPRO:
  167.      LCALL PRO_ZOUSHI         ;走時   統計20mS的個數,計時,設立半秒標志、分標志、時標志 檢測標志
  168.      LCALL  KAIJISHISHU   ;開機時數   開機10小時停充電,開機240小時重新啟動單片機。
  169. jnb 22h.5,zhu_a
  170.         clr 22h.5             ;每15秒一次的標志位,走時置1,在此清0
  171.      lcall  jiaceTL431       ;檢測TL431做基準電壓的AD值
  172.       LCALL  jiacesheding   ;檢測(電瓶)設定      測出電瓶AD
  173.      LCALL  JISUAN         ;計算 電瓶電壓伏特數=(電瓶AD值×37+電瓶AD值×0.5)÷基準電壓AD值 求出伏特整數和小數
  174.      LCALL  probijiao    ;比較     電瓶電壓與基準電壓做比較 標記是否充滿電
  175.      lcall XIANhuan           ;顯緩 存放好要顯示的十位、個位、小數位
  176. zhu_a:
  177.      LCALL  xiu_V      ;顯示電瓶電壓
  178.      
  179.      lcall  PROKongZhi     ;控制      充滿斷電 十小時斷電
  180.      mov WDT_CONTR,#00111110B      ;喂狗
  181.      jmp  ZhuPRO

  182. ;*************************** WENDU 溫度 設溫度檔 *********************************
  183. ;DOUEEPROM    ;讀EEPROM中0000H處的保存值
  184. DOUEEPROM:
  185.                     mov     contr,#84h ;設定操作時間
  186.                     mov     cmd,#01h   ;設定讀操作
  187.                     mov     drl,#00h     ;設定存儲單元地址低四位
  188.                     mov     drh,#00h    ;設定存儲單元地址高四位 這里設0000h,也可選用其他單元
  189.                     mov     trig,#5Ah  ;準備觸發
  190.                     mov     trig,#0A5h  ;觸發
  191.                     nop
  192.                     mov     wendudang,dat         ;讀數據寫到RAM指定處
  193. ;                    mov     wendudang,A        ;讀數據寫到RAM指定處

  194. DOUEEPROMret:
  195.         ret
  196. ;*************
  197. ;doujian       ;讀鍵
  198. doujian:
  199.          setb jian
  200.          nop
  201.          nop
  202.          lcall DELAY         
  203.          JB jian,doujianret          ;未按下(p1.2),  1-跳
  204.          lcall DELAY                ;延時
  205.          JB jian,doujianret
  206.          inc wendudang               ;溫度檔加1
  207.          mov XUN_JSHQ,#0            ;循環計數清0
  208.          mov a,#9
  209.          cjne a,wendudang,doujian_1  ; 分0,1,2,3,4,5,6,7,8九檔,最高8檔
  210.          mov wendudang,#0

  211. doujian_1:
  212.          nop
  213.          jb jian,doujian_1       ;1-跳 等待釋放鍵
  214.          lcall DELAY
  215.          lcall DELAY
  216. doujianret:
  217.    ret

  218. ;****************
  219. ;XIANSHI    ;顯示
  220. XIANSHI:
  221.         mov a,wendudang
  222.         cpl a          ;取反
  223.         swap a         ;高低四位交換
  224.         ANL A,#11110000B   ;獲高四位
  225.         mov R0,a

  226.         mov a,p1
  227.         anl a,#00001111B   ;獲低四位
  228.         orl a,R0           ;整合高低八位
  229.         mov p1,a           ;驅動LED
  230. XIANSHIret:
  231.     ret
  232. ;****************   
  233. ;xunhuan       ;循環 次數
  234. xunhuan:
  235.       lcall DELAY      ;延時
  236.       INC XUN_JSHQ     ;循環計數加1
  237.       mov a,XUN_JSHQ
  238.       cjne a,#200,xunhuanret
  239.       mov XUN_JSHQ,#0
  240.       clr 20h.0         ;停止按鍵后循環200次約??秒,結束設溫度檔程序

  241. xunhuanret:
  242.      RET
  243. ;******************
  244. ;延時 0.04秒
  245.     DELAY:
  246.             MOV     R7,#250
  247.     D1:     MOV     R6,#250
  248.                     DJNZ    R6,$
  249.                     DJNZ    R7,D1
  250.             RET
  251. ;*****************
  252. ;先擦除再寫入,然后關閉
  253. clear_write:
  254.               mov    contr,#84h  ;設定操作時間
  255.               mov    cmd,#03h    ;設定擦除操作
  256.               mov    drl,#00h    ;設定存儲單元地址低四位
  257.               mov    drh,#00h    ;設定存儲單元地址高四位 這里設0000h

  258.               mov    trig,#5AH   ;準備觸發      
  259.               mov    trig,#0A5h   ;觸發
  260.               nop
  261.               nop
  262. ;---------寫-------------------
  263. write:
  264.                    mov     contr,#84h   ;設定操作時間
  265.                    mov     cmd,#02h     ;設定寫操作
  266.                    mov     drl,#00h     ;設定存儲單元地址低四位
  267.                    mov     drh,#00h     ;設定存儲單元地址高四位 這里設0000h
  268. ;      MOV A,wendudang
  269.                    mov     dat,wendudang         ;wendudang中為準備寫入的數據
  270.                    mov     trig,#5AH    ;準備觸發
  271.                    mov     trig,#0A5H   ;觸發
  272.                    nop
  273.                    nop
  274. ;=========關閉EEPROM====================
  275. off:  
  276.           mov     contr,#0     ;禁止操作
  277.           mov     cmd,#0   ;去除操作命令
  278.           mov     trig,#0   ;防止命令誤觸發
  279.           mov    drl,#0         ;指向非EEPROM區
  280.           mov    drh,#80H        ;指向非EEPROM區
  281.            ret
  282.    
  283. ;*********************************** 充電有關的計時 ******************************



  284. ;****************
  285. ;走時   統計20mS的個數,計時,設立半秒標志、分標志、時標志
  286. PRO_ZOUSHI:
  287.      JNB 22H.0,PROARET     ;20mS標志位
  288.      INC JSHQ_20MS
  289.      CLR 22H.0   
  290.      mov A,#25             ;25個20mS為半秒
  291.      CJNE A,JSHQ_20mS,PROARET
  292.      MOV JSHQ_20mS,#0
  293.      inc jshq_S
  294.      setb 20h.2         ;控制顯示的半秒標志
  295. PROA_1:
  296.   MOV A,#30
  297.   CJNE A,JSHQ_S,PROARET
  298.        MOV JSHQ_S,#0
  299.   SETB 22H.5   ;15秒檢測一次
  300.   INC JSHQ_15
  301.   MOV A,#4
  302.   CJNE A,JSHQ_15,PROARET
  303.      MOV JSHQ_15,#0
  304.      INC JSHQ_M
  305.      MOV A,#60             ;60分為1小時
  306.      CJNE A,JSHQ_M,PROARET
  307.      MOV JSHQ_M,#0
  308.      setb 22h.3       ;時標志

  309. PROARET:
  310.      RET

  311. ;********************
  312. ;開機時數   開機10小時停充電,開機240小時重新啟動單片機。
  313. KAIJISHISHU:
  314.     JNB 22H.3,KAIJISHISHURET
  315.     clr 22h.3
  316.     INC JSHQ_H
  317.     MOV A,#10         ;最多充電10小時
  318.     CJNE A,JSHQ_H,KAIJISHISHU_1
  319.     CLR 21H.6        ;初值1,充電10小時清0。
  320.     setb kong          ;斷220V交流
  321.     JMP KAIJISHISHURET
  322. KAIJISHISHU_1:
  323.     mov a,#240         ;十天重啟
  324.     cjne a,jshq_h,KAIJISHISHURET
  325.     MOV IAP_CONTR,#00100000B  ;熱重啟
  326. KAIJISHISHURET:
  327.      RET
  328. ;*******************
  329. ;檢測設定    每15秒進行一次     兩次測電壓相同 確定占空比  溫度檢測沒使用
  330. jiacesheding:
  331. ;          MOV P1,#11111111B           ;關顯示 再延時 防止電壓波動對AD轉換的影響
  332. ;          LCALL DELAY                 ;延時0.4秒
  333. dianya:
  334.       lcall PRO_ad   ;AD轉換測電瓶電壓
  335.       MOV jiace_adzhi1,jiace_adzhi
  336.       mov jiace_adzhi,#0
  337.       lcall PRO_ad  ;AD轉換測電瓶電壓  
  338. BiJiao:                 ;比較兩次測電壓結果 同-進入下一步 不同-重測
  339.       mov a,jiace_adzhi1
  340.       cjne a,jiace_adzhi,dianya
  341.       
  342. jiaceshedingret:
  343.      ret

  344. ;********************
  345. ;AD轉換測電瓶電壓
  346. PRO_ad:
  347.       MOV P1ASF,#0000001B   ;P1.0做AD檢測
  348.      MOV ADC_RES,#0                ;轉換結果寄存器清零
  349.      MOV ADC_CONTR,#11100000B  
  350.      nop
  351.      nop
  352.      nop
  353.      nop
  354.      mov a,#11101000b
  355.      MOV ADC_CONTR,A            ;開始A/D轉換
  356.       NOP                        ;在質詢之前一定等候
  357.       NOP
  358.       NOP
  359.       NOP
  360. WAIT:      
  361.     MOV        A,ADC_CONTR        ;等候完成的標志
  362.     JNB        ACC.4,WAIT        ;轉換完成標志位 不是1就轉           
  363.     MOV        ADC_CONTR,#01100000B                ;關轉換 清標志位  
  364.    
  365.     MOV jiace_adzhi,ADC_RES       ;讀出AD值保存

  366. PRO_adRET:
  367.       RET

  368. ;********************
  369. jiaceTL431:
  370. ;          MOV P1,#11111111B           ;關顯示 再延時 防止電壓波動對AD轉換的影響
  371. ;          LCALL DELAY                 ;延時0.4秒
  372. dianyaTL:
  373.       lcall prTL431_ad   ;AD轉換測TL431的AD
  374.       MOV TL431_AD1,TL431_AD
  375.       mov TL431_AD,#0
  376.       lcall prTL431_ad  ;AD轉換測TL431的AD
  377. BiJiaoTL:                 ;比較兩次測電壓結果 同-進入下一步 不同-重測
  378.       mov a,TL431_AD1
  379.       cjne a,TL431_AD,dianyaTL

  380. jiaceTL431ret:
  381.      ret
  382. ;******************
  383. ;AD轉換測TL431
  384. prTL431_ad:
  385.       MOV P1ASF,#0000010B   ;P1.1做AD檢測
  386.      MOV ADC_RES,#0                ;轉換結果寄存器清零
  387.      MOV ADC_CONTR,#11100001B  
  388.      nop
  389.      nop
  390.      nop
  391.      nop
  392.      mov a,#11101001b
  393.      MOV ADC_CONTR,A            ;開始A/D轉換
  394.       NOP                        ;在質詢之前一定等候
  395.       NOP
  396.       NOP
  397.       NOP
  398. TL431WAIT:      
  399.     MOV        A,ADC_CONTR        ;等候完成的標志
  400.     JNB        ACC.4,TL431WAIT        ;轉換完成標志位 不是1就轉           
  401.     MOV        ADC_CONTR,#11100001B                ;關轉換 清標志位  
  402.    
  403.     MOV TL431_AD,ADC_RES       ;讀出AD值保存

  404. TL431_adRET:
  405.       RET

  406. ;*******************
  407. ;比較 ;通過電瓶電壓整數與終止電壓整數比較,電瓶電壓小數與終止電壓小數比較,確定并標記電瓶有無充滿.
  408. probijiao:
  409.       clr c
  410.       mov a,v_ZH   ;電瓶電壓整數
  411.       CJNE A,U_zhongzhizheng,bijiao_1     ;電瓶電壓整數與終止電壓整數比較
  412.       MOV A,V_XAO
  413.       CJNE A,U_zhongzhixiao,bijiao_1     ;電瓶電壓小數與終止電壓小數比較
  414.       
  415. bijiao_0:      
  416.        clr 21h.4     ;電瓶正常標志位  1--正常  0--充滿(或不能充電)   
  417.        JMP bijiao_ret
  418. bijiao_1:
  419.       JC bijiao_0  ;超過終止電壓 C=1
  420.       
  421. bijiao_ret:
  422.       ret      
  423.       
  424. ;******************
  425. ; ;控制充斷電
  426. PROKongZhi:
  427.       jb 21h.4,pro_a     ;電瓶正常標志 1-正常 0-不正常 無電瓶 或充滿
  428.       setb kong      ;通過光耦控制220V通斷 0-通  1-斷
  429. pro_a:
  430.       JB 21H.6,PROKongZhiRET                     
  431.       setb kong      ;通過光耦控制220V通斷 0-通  1-斷      
  432. PROKongZhiRET:
  433.       RET
  434. ;****************
  435. ;顯緩
  436. XIANhuan:
  437.        MOV A,v_ZH    ;電瓶伏特整數
  438.        MOV B,#10
  439.        DIV AB
  440.        MOV 61H,B            ;個位
  441.        MOV 60H,A            ;十位
  442.        MOV 62H,V_XAO        ;小數
  443.       
  444.        MOV 63H,#0          ;黑屏的數字
  445.        mov 64h,#00001111B   ;四燈全亮

  446. XIANhuan_ret:
  447.        ret

  448. ;***************  
  449. ; xiu_V 顯伏特數 十、個位、小數位分別顯示,每位顯示2秒,黑屏1秒,三位顯示完黑屏3秒。
  450. xiu_V:
  451.        JNB 20H.2,XianZ   ;每秒運行一次
  452.        CLR 20H.2

  453.       INC JSHQ_WEI
  454.        MOV A,#11
  455.        CJNE A,JSHQ_WEI,xiu_V_1
  456.        MOV JSHQ_WEI,#0      
  457.         mov R1,60H           ;顯十位
  458.         LCALL PROXIAN
  459.       JMP xiu_VRET
  460. xiu_V_1:  
  461.         MOV A,#1            ;顯示十位
  462.        CJNE A,JSHQ_WEI,xiu_V_2
  463.        nop                  ;保持原顯示就行了
  464.         ;mov R1,60H
  465.         ;LCALL PROXIAN
  466. XianZ:  jmp  xiu_VRET           ;中間跳板
  467. xiu_V_2:  
  468.         MOV A,#2     ;黑屏
  469.        CJNE A,JSHQ_WEI,xiu_V_3      
  470.         mov R1,63H
  471.         LCALL PROXIAN
  472.       JMP xiu_VRET        
  473. xiu_V_3:  
  474.         MOV A,#3     ;顯示個位
  475.        CJNE A,JSHQ_WEI,xiu_V_4     
  476.         mov R1,61H
  477.         LCALL PROXIAN
  478.       JMP xiu_VRET        
  479. xiu_V_4:  
  480.         MOV A,#4     ;顯示個位
  481.        CJNE A,JSHQ_WEI,xiu_V_5     
  482.         nop                  ;保持原顯示就行了
  483.         ;mov R1,61H
  484.         ;LCALL PROXIAN
  485.       JMP xiu_VRET        
  486. xiu_V_5:  
  487.         MOV A,#5     ;黑屏
  488.        CJNE A,JSHQ_WEI,xiu_V_6      
  489.         mov R1,63H
  490.         LCALL PROXIAN
  491.       JMP xiu_VRET        
  492. xiu_V_6:  
  493.         MOV A,#6    ;顯示小數位
  494.        CJNE A,JSHQ_WEI,xiu_V_7     
  495.         mov R1,62H
  496.         LCALL PROXIAN
  497.       JMP xiu_VRET        
  498. xiu_V_7:  
  499.         MOV A,#7     ;顯示小數位
  500.        CJNE A,JSHQ_WEI,xiu_V_8     
  501.         nop                  ;保持原顯示就行了
  502.         ;mov R1,62H
  503.         ;LCALL PROXIAN
  504.       JMP xiu_VRET        
  505. xiu_V_8:  
  506.         MOV A,#8     ;黑屏
  507.        CJNE A,JSHQ_WEI,xiu_V_9      
  508.         mov R1,63H
  509.         LCALL PROXIAN
  510.       JMP xiu_VRET        
  511. xiu_V_9:  
  512.         MOV A,#9     ;四燈全亮
  513.        CJNE A,JSHQ_WEI,xiu_V_10     
  514.         mov R1,64H
  515.         LCALL PROXIAN
  516.        JMP xiu_VRET      
  517. xiu_V_10:
  518.        nop                   ;保持原顯示就行了
  519.         ;mov R1,63H     ;黑屏
  520.         ;LCALL PROXIAN

  521. xiu_VRET:
  522.        RET
  523. ;***************

  524. ;顯示     
  525. PROXIAN:
  526.         MOV A,R1
  527.         cpl a          ;取反
  528.         swap a         ;高低四位交換
  529.         ANL A,#11110000B   ;獲高四位
  530.         mov R0,a

  531.         mov a,p1
  532.         anl a,#00001111B   ;獲低四位
  533.         orl a,R0           ;整合高低八位
  534.         mov p1,a           ;驅動LED     
  535.         RET
  536. ;*******************************
  537. ;計算 jì suàn   電瓶電壓伏特數=(電瓶AD值×37+電瓶AD值×0.86)÷基準電壓AD值   TL431穩壓后是2.524伏
  538. ;求出伏特整數和一位小數
  539. JISUAN:
  540.       MOV v_ZH,#0        ;存伏特整數 先清0
  541.       mov V_XAO,#0       ;伏特小數 先清0   
  542.       mov r2,#0
  543.       mov r3,#0
  544. ;電瓶AD值×37      
  545.       MOV A,Jiace_ADzhi  ;電瓶AD值
  546.       MOV B,#37
  547.       MUL AB
  548.       MOV R2,A          ;37倍的積的低8位 存R2
  549.       MOV R3,B          ;37倍的積的高8位 存R3
  550. ;電瓶AD值×86     
  551.       MOV A,Jiace_ADzhi
  552.       mov b,#86        ;
  553.       MUL AB           ;86倍的積高位在B低位在A 高位在B
  554. ;除以100
  555.       MOV beichushugao,B     ;被除數高位
  556.       MOV beichushudi,A      ;被除數低位
  557.       MOV chushu,#100        ;除數
  558.       mov zhengshang,#0      ;整數商
  559.       mov XIAOSHUSHANG,#0    ;小數商
  560.       mov YUSHU,#0           ;余數
  561.       
  562.   LCALL PROCHU
  563.       ;電瓶AD值×0.86的整數部分已經在zhengshang
  564. ;電瓶AD值×37與電瓶AD值×0.86兩積之和
  565.       mov a,zhengshang
  566.       ADD A,R2                 
  567.       MOV R2,A
  568.       JNC  JISUAN_1     ;0-跳
  569.       INC R3
  570.       clr c            ;以上完成了(電瓶AD值×37+電瓶AD值×0.86)  值的高位在R3,低位在R2
  571. JISUAN_1:            
  572. ;下面用減法代除法做[÷基準電壓AD值]部分
  573.       MOV beichushugao,R3     ;被除數高位
  574.       MOV beichushudi,R2     ;被除數低位
  575.       MOV chushu,TL431_AD        ;除數
  576.       mov zhengshang,#0
  577.       mov XIAOSHUSHANG,#0
  578.       mov YUSHU,#0      
  579.       
  580. LCALL PROCHU
  581.       MOV v_ZH,zhengshang     ;伏特整數
  582.       MOV V_XAO,XIAOSHUSHANG  ;伏特小數  
  583. RET
  584. ;*********************
  585. ;除法 被除數有高8位低8位,除數只有8位,商有8位整數1位小數
  586. ;beichushugao     ;被除數高位
  587. ;beichushudi      ;被除數低位
  588. ;chushu        ;除數
  589. ;zhengshang  EQU 78H     ;整數商
  590. ;XIAOSHUSHANG  EQU 79H    ;小數商
  591. ;YUSHU      EQU  7AH     ;余數
  592. ;LSSHU     EQU  7BH     ;臨時存
  593. ; DISHU   低位 第二次的被除數低位
  594. ;GAOSHU   高位 第二次的被除數高位
  595. PROCHU:
  596.       MOV A,#0
  597.       CJNE A,beichushugao,PROCHU_0   ;高位不是0 跳
  598.       MOV A,beichushudi
  599.       jmp PROCHU_A        ;跳到高位是0,求低位的商
  600. PROCHU_0:              ;求高位不是0部分的商
  601.       MOV A,beichushudi
  602. PROCHU_01:      
  603.       SUBB A,chushu
  604.       INC zhengshang
  605.       JNC PROCHU_01      
  606.       DJNZ beichushugao,PROCHU_01
  607. PROCHU_A:            ;高位是0,求低位的商
  608.     ;  MOV  LSSHU,A    ;備份
  609.       SUBB A,chushu
  610.       INC zhengshang
  611.       JNC PROCHU_A     ;c=0 循環再減
  612.       CLR C            ;有借位,表示多減了一次
  613.    ;   DEC zhengshang   ;恢復
  614.    ;   MOV A,LSSHU      ;恢復
  615.      ;*************求小數**********
  616.       MOV B,#10        ;求小數,先將被除數乘10
  617.       MUL AB
  618.       MOV GAOSHU,B       ;高位
  619.       MOV DISHU,A      ;低位
  620. PROCHU_B:
  621.       MOV A,#0
  622.       CJNE A,GAOSHU,PROCHU_B0
  623.       MOV A,DISHU
  624.       JMP PROCHU_C   ;跳到高位是0 求低位商
  625. PROCHU_B0:
  626.       MOV A,DISHU
  627. PROCHU_B01:
  628.       SUBB A,chushu
  629.       INC XIAOSHUSHANG
  630.       JNC PROCHU_B01      
  631.       DJNZ GAOSHU,PROCHU_B01
  632. PROCHU_C:    ;高位是0 求低位商           
  633.       MOV  LSSHU,A
  634.       SUBB A,chushu
  635.       INC XIAOSHUSHANG
  636.       JNC PROCHU_C     ;c=0 循環再減
  637.       CLR C            ;有借位,表示多減了一次
  638. ;      DEC XIAOSHUSHANG   ;恢復   實測顯示數據偏小所以刪此句
  639.       MOV A,LSSHU      ;恢復
  640.       MOV YUSHU,A    ;余數
  641. ret
  642. ;****************      
  643.       
  644. ;**********************************************************************
  645. TIME_0:   ;20毫秒@10.911MHz
  646.         PUSH        ACC
  647.         PUSH        PSW
  648.         MOV        TL0,#0F7H        
  649.         MOV        TH0,#0B8H
  650.         SETB 22H.0          ;20mS標志  專供走時用
  651.         POP        PSW
  652.         POP        ACC
  653.         RETI
  654. ;************************
  655. pppuuu:
  656. nop
  657. nop
  658. nop
  659. nop
  660. nop
  661. nop
  662. nop
  663. nop
  664.   nop
  665. nop
  666. nop
  667. nop
  668.   nop
  669. nop
  670. nop
  671. nop
  672.   nop
  673. nop
  674. nop
  675. nop
  676.   nop
  677. nop
  678. nop
  679. nop
  680.   nop
  681. nop
  682. nop
  683. nop
  684.   nop
  685. nop
  686. nop
  687. nop
  688.   nop
  689. nop
  690. nop
  691. nop
  692.   nop
  693. nop
  694. nop
  695. nop
  696.   nop
  697. nop
  698. nop
  699. nop
  700.   nop
  701. nop
  702. nop
  703. nop
  704.   nop
  705. nop
  706. nop
  707. nop
  708. lcall START
  709. nop
  710. nop
  711. nop

  712. ……………………

  713. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
源碼和hex.rar (8.02 KB, 下載次數: 41)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:286600 發表于 2018-3-3 10:34 | 只看該作者
若配個脈沖電源對電瓶充電,這是個很好的配件。普通充電器用的是開關電源無脈沖。老式變壓器整流不濾波是脈沖,但要注意變壓器輸出電壓不要太高了,據我的經驗48V電瓶不要超過46伏,45V比較合適,46×1.41已經超過普通充電器轉燈前的電壓了。(有的說法是變壓器次級輸出電壓要比電瓶標稱值高1到2V,我不認可。)
      普通充電器轉燈后電壓是55.6V左右,冬天不用此保護也可。夏天環境溫度高,電瓶充到55.6V就過充了。此保護器第8檔,充到53.7V就停充電,可有效地進行保護。
     鉛電瓶有負溫度系數,冬天充電終止電壓高些,夏天低些。
回復

使用道具 舉報

板凳
ID:265635 發表于 2018-3-3 15:12 | 只看該作者
全匯編,贊一下!
回復

使用道具 舉報

地板
ID:286600 發表于 2018-3-8 10:39 | 只看該作者
少有人關注本貼。
1、看來群里人真富,都開汽車沒人騎電動車了。
2、用匯編的人也越來越少了。
回復

使用道具 舉報

5#
ID:162136 發表于 2018-3-21 16:04 | 只看該作者
看到全是匯編,我贊一個。
回復

使用道具 舉報

6#
ID:295097 發表于 2018-3-21 16:26 | 只看該作者
什么時候才能變成你這么厲害

回復

使用道具 舉報

7#
ID:91721 發表于 2019-6-25 11:57 | 只看該作者
全匯編,贊一下!
回復

使用道具 舉報

8#
ID:165363 發表于 2019-6-26 09:43 | 只看該作者
匯編的啊,有點難看懂。
回復

使用道具 舉報

9#
ID:159857 發表于 2020-5-14 21:49 | 只看該作者

全匯編,贊一下!樓主厲害!
回復

使用道具 舉報

10#
ID:733231 發表于 2020-5-18 19:53 | 只看該作者


全匯編,贊一下!樓主厲害!向你學習~~~
回復

使用道具 舉報

11#
ID:58628 發表于 2025-4-9 11:10 來自手機 | 只看該作者
有沒有誰有網上賣的那種電動車充電保護器,檢測輸入側的電流原理種程序
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品国产一区二区青青牛奶 | 国产精品久久久久久婷婷天堂 | 成人精品一区亚洲午夜久久久 | 午夜精品一区二区三区在线视频 | 999精品视频 | 亚洲欧洲精品成人久久奇米网 | 亚洲欧美激情网 | 亚洲五码久久 | 久久69精品久久久久久久电影好 | 欧美激情一区二区三区 | 日韩欧美一级精品久久 | 91在线一区 | а_天堂中文最新版地址 | 狠狠干天天干 | 国产永久免费 | 日韩a在线观看 | 97免费在线观看视频 | 精品一区二区三区在线视频 | 日韩伦理一区二区三区 | 成年人视频免费在线观看 | 日韩一区二区三区在线播放 | av一级毛片 | 国产精品欧美一区二区三区不卡 | 天堂一区二区三区四区 | 91视频免费在观看 | 亚洲视频在线播放 | 日韩精品a在线观看图片 | 欧美jizzhd精品欧美巨大免费 | 国产精品黄视频 | 久久久精品一区二区三区四季av | 99免费精品视频 | 99精品免费 | 欧美高清视频在线观看 | 天天干天天爽 | 在线播放第一页 | 久久久久91 | 天天看天天摸天天操 | 免费黄色的视频 | 国产成人亚洲精品 | 久久人体视频 | 中文字幕乱码一区二区三区 |