<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機DS18B20溫度控制報警程序(可設置溫控范圍)

          51單片機DS18B20溫度控制報警程序(可設置溫控范圍)

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
          DS18B20的管腳定義:

          1、GND
          2、DQ
          3、VCC

          本文引用地址:http://www.ex-cimer.com/article/201611/323666.htm

          DQ → P1.7

          K1 → P3.2
          K2 → P3.4
          K3 → P3.6
          K4 → P3.7

          溫度顯示用四位數(shù)碼管,當溫度>=100度時,第四位才顯示。
          第五位數(shù)碼管顯示狀態(tài)符號。

          開機檢測 DS18B20 狀態(tài):

          DS18B20正常顯示:

          O 18.8 ← 顯示實時溫度和加熱標記“O”

          DS18B20不正常顯示:
          黑屏、蜂鳴器一直響。

          這時你要檢查DS18B20是否連接好、接對,否則要更換一個新的 DS18B20 芯片。

          程序在整個運行過程中,始終對 DS18B20 進行檢測。
          你可以將 DS18B20 從 51hei-5 拔掉,檢測一下此功能。

          一、查看溫度報警值:

          K1 → 進入查看溫度報警值 TL 狀態(tài):

          L--20
          TL: 20 低位報警值

          K1 → 進入查看溫度報警值 TH 狀態(tài):

          H--28
          TH: 28 高位報警值

          K1 → 退出查看溫度報警值狀態(tài)。


          二、設定溫度報警值:

          1、K3 → 進入設定溫度報警值 TL 狀態(tài):

          L--20

          2、K3 → 進入設定溫度報警值 TH 狀態(tài):

          H--28

          3、K3 → 返回

          4、設定過程: K1 →加鍵 (UP), K2 →減鍵 (DOWN),可快速調(diào)。

          將設定的溫度報警值自動存入 DS18B20 的 EEROM 中,可永久保存。
          每次開機時自動從 DS18B20 的 EEROM 讀出溫度報警值。

          三、報警狀態(tài)的顯示:

          1、當實際溫度大于 TH 的設定值時,

          H 38.8 H → 閃動

          關閉繼電器,表示超溫。

          2、當實際溫度小于 TL 的設定值時,

          L 18.8 L → 閃動

          表示加熱部分出現(xiàn)故障。

          3、當實際溫度小于 TH 的設定值時,繼電器吸合,開始加熱。

          加熱標記為“O”

          四、其它功能

          1、以閃動方式顯示標記符 “ H”、“ L”、“O”。

          2、實時溫度百位數(shù)為 “0”時,不顯示。

          3、報警溫度值百位數(shù)為 “0”時,顯示“-”。

          完整的程序代碼下載地址:http://www.51hei.com/f/DS18B20溫度控制LED顯示_asm.rar

          ;*****************************************************************;*  標題:  51Hei單片機開發(fā)系統(tǒng)演示程序 - DS18B20溫度控制數(shù)碼管顯示              *;*  晶振:  12M                                                                  *;*  跳線設置:J5的12腳用跳線帽短接,J5的第3腳用杜邦線連接到頂部P1.0擴展,其他默認                                                                  *                                                 *;*  網(wǎng)站: http://www.51HEI.com                                                  *;******************************************************************;*  描述:                                                                       *;*          DS18B20溫度控制數(shù)碼管顯示                                           *;*        1、K3 → 進入設定溫度報警值 TL 狀態(tài):                                   *;*           L--20                                                            *;*        2、K3 → 進入設定溫度報警值 TH 狀態(tài):                                   *;*           H--28                                                            *;*        3、K3 → 返回                                                          *;*        4、設定過程: K1 →加鍵 (UP), K2 →減鍵 (DOWN),可快速調(diào)。         *;*                                                                              *;********************************************************************************TIMER_L     DATA  23HTIMER_H     DATA  24HTIMER_COUN  DATA  25HTEMPL       DATA  26HTEMPH       DATA  27HTEMP_TH     DATA  28HTEMP_TL     DATA  29HTEMPHC      DATA  2AHTEMPLC      DATA  2BHTEMP_ZH     DATA  2CHBEEP        EQU   P1.0DATA_LINE   EQU   P1.7RELAY       EQU   P2.2FLAG1       EQU   20H.0FLAG2       EQU   20H.1;-------------------------------------------------K1   EQU  P3.2K2   EQU  P3.4K3   EQU  P3.6K4   EQU  P3.7;=================================================ORG 0000HJMP  MAINORG  000BHAJMP  INT_T0;--------------------------------------------------MAIN:     MOV SP,#30H;以下5行的功能是關閉8*8點陣的輸出,也就是把所有的行置0,這樣不管列為任何電平點陣都不會亮了.MOV     R2,#8    ;輸出數(shù)據(jù)8位 hei:     CLR     P2.4     ;拉低SCL,以便下次拉高便可產(chǎn)生上升沿CLR     P2.5  ;數(shù)據(jù)先送入74hc164,等待clk上升沿的到來SETB    P2.4     ;低電平到高電平邊沿觸發(fā)到來,并行數(shù)據(jù)輸出至164的Q0-Q7DJNZ    R2,hei   ;判斷輸出完畢了沒有MOV  TMOD,#01H        ;T0,方式1MOV  TIMER_L,#00H     ;50ms定時值MOV  TIMER_H,#4CHMOV  TIMER_COUN,#00H  ;中斷計數(shù)MOV  IE,#82H          ;EA=1,ET0=1LCALL  READ_E2;LCALL  RE_18B20MOV  20H,#00HSETB   BEEPSETB   RELAYMOV  7FH,#0AH         ;熄滅符CALL RESET            ;復位與檢測DS18B20JNB FLAG1,MAIN1       ;FLAG1=0,DS18B20不存在JMP  STARTMAIN1:    CALL RESETJB FLAG1,STARTLCALL  BEEP_BL        ;DS18B20錯誤,報警JMP  MAIN1START:MOV A,#0CCH         ; 跳過ROM匹配CALL WRITEMOV A,#044H         ; 發(fā)出溫度轉換命令CALL WRITECALL RESETMOV A,#0CCH         ; 跳過ROM匹配CALL WRITEMOV A,#0BEH         ; 發(fā)出讀溫度命令CALL WRITECALL  READ           ;讀溫度數(shù)據(jù)CALL  CONVTEMPCALL  DISPBCDCALL  DISP1CALL  SCANKEYLCALL  TEMP_COMPJMP   MAIN1;=====================================================;DS18B20 復位與檢測子程序;FLAG1=1 OK, FLAG1=0 ERROR;======================================================RESET:SETB DATA_LINENOPCLR DATA_LINEMOV R0,#64H            ;主機發(fā)出延時600微秒的復位低脈沖MOV R1,#03HRESET1:   DJNZ R0,$MOV R0,#64HDJNZ R1,RESET1SETB DATA_LINE        ;然后拉高數(shù)據(jù)線NOPMOV R0,#25HRESET2:   JNB DATA_LINE,RESET3  ;等待DS18B20回應DJNZ R0,RESET2JMP RESET4            ; 延時RESET3:   SETB FLAG1            ; 置標志位,表示DS1820存在JMP RESET5RESET4:   CLR FLAG1             ; 清標志位,表示DS1820不存在JMP RESET6RESET5:   MOV R0,#064HDJNZ R0,$             ; 時序要求延時一段時間RESET6:   SETB DATA_LINERET;===========================================================;;===========================================================WRITE:  MOV R2,#8            ;一共8位數(shù)據(jù)CLR CYWR1:CLR DATA_LINE        ;開始寫入DS18B20總線要處于復位(低)狀態(tài)MOV R3,#09DJNZ R3,$            ;總線復位保持18微妙以上RRC A                ;把一個字節(jié)DATA 分成8個BIT環(huán)移給CMOV DATA_LINE,C      ;寫入一個BITMOV R3,#23DJNZ R3,$            ;等待46微妙SETB DATA_LINE       ;重新釋放總線NOPDJNZ R2,WR1          ;寫入下一個BITSETB DATA_LINERET;============================================================;從DS18B20中讀出溫度低位、高位和報警值TH、TL;存入26H、27H、28H、29H;============================================================READ:    MOV R4,#4            ; 將溫度高位和低位從DS18B20中讀出MOV R1,#26H          ; 存入26H、27H、28H、29HRE00:    MOV R2,#8RE01:    CLR CSETB DATA_LINENOPNOPCLR DATA_LINE        ;讀前總線保持為低NOPNOPNOPSETB DATA_LINE       ;開始讀總線釋放MOV R3,#09           ;延時18微妙DJNZ R3,$MOV C,DATA_LINE      ;從DS18B20總線讀得一個BITMOV R3,#23DJNZ R3,$            ;等待46微妙RRC A                ;把讀得的位值環(huán)移給ADJNZ R2,RE01         ;讀下一個BITMOV @R1,AINC R1DJNZ R4,RE00RET        				   
          				
                      
                          
          			
          							
          上一頁 1 2 3 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();