最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

[分享]數(shù)字溫度計程序

作者:jaky 欄目:單片機
S1OK  EQU  5FH
TEMPUTER  EQU  39H
    TEMPH   EQU  5EH
     TEMPL EQU  5DH
     MS50   EQU  5CH
SIGN  EQU  5BH
           S1   BIT  P1.0
           S2   BIT  P1.1
           S3   BIT  P1.2
             S4   BIT  P1.3
               ORG   0000H
            LJMP  MAIN
            ORG   000BH
            LJMP  TOIT
         ORG   0030H
MAIN:   MOV   SP,  #60H
         MOV   TMOD, #01H
         MOV   TH0, #3CH
         MOV   TL0, #0B0H
         SETB  ET0
         SETB  TR0
         SETB  EA
         MOV  TEMPH, #30
         MOV  TEMPL, #9
         MOV  TEMPUTER, #15   ;溫度最始值
         MOV  S1OK,  #00H
         MOV  SIGN,  #00H
         MOV  38H,  #0BH
         MOV  37H,  #0CH
         MOV  36H,  #0BH
         ACALL DISP
         ACALL T1S
; *****************************************
;  主程序
START:  JB  S1,  NET1
        ACALL T12MS
        JB  S1,  NET1
        JNB S1,  $
        INC SIGN
        MOV A, SIGN
        CJNE A, #1, TIAO
        ACALL TIAOTL
   TIAO:CJNE A, #2, NET1
        MOV SIGN, #0
        ACALL TIAOTH
; *****************************************
        NET1: MOV   A, S1OK
        CJNE  A, #1, START
        MOV   A, TEMPUTER
        SUBB  A,  TEMPH
        JNB   ACC.7, ALEM
        MOV   A, TEMPUTER
        SUBB  A,  TEMPL
        JB    ACC.7, ALEM
        SETB  P2.1
        ACALL WENDU
        ACALL DISP
        MOV   S1OK,  #00H
        AJMP  START
  ALEM: MOV   36H, #0CH
        MOV   37H, #0CH
        MOV   38H, #0CH
        CLR   P2.1
        ACALL DISP
        ACALL T1S
        LCALL WENDU
        LCALL DISP
        MOV   S1OK,  #00H
        SJMP  START
;*****************************************
TIAOTL:MOV  50H,    TEMPUTER
       MOV  37H,  TEMPL
       ACALL BIN_BCD
       ACALL DISP
       ACALL T12MS
       ACALL T12MS
       ACALL T12MS
       ACALL T12MS
       MOV   36H, #0AH
       MOV   37H, #0AH
       MOV   38H, #0AH
       ACALL DISP
       ACALL T12MS
       ACALL T12MS
       ACALL T12MS
       ACALL T12MS
       JB  S2,  ADD1
       ACALL T12MS
       JB  S2,  ADD1
       JNB S2,  $
       INC TEMPL
       MOV  A, TEMPL
       CJNE A, #100, ADD1
       MOV  TEMPL, #0
ADD1: JB  S3,  ADD2
       ACALL T12MS
       JB  S3,  ADD2
       JNB S3,   $
       DEC TEMPL
       MOV A, TEMPL
       CJNE A, #00 , ADD2
       MOV  TEMPL,#100
ADD2: JB  S4, TIAOTL
       ACALL T12MS
       JB  S4, TIAOTL
       JNB S4, $
       MOV TEMPUTER, 50H
       LJMP START
2樓: >>參與討論
jaky

bsp;   ACALL T12MS

        JB  S4, TIAOTH
        JNB S4, $
        MOV TEMPUTER, 50H
        LJMP START
;  一秒定時中段
; *****************************************
TOIT:   PUSH   PSW
        PUSH   ACC
        MOV   TH0,  #3CH
        MOV   TL0,  #0B0H
        INC   MS50
        MOV   A,  MS50
        CJNE  A, #14H, RETURN
        MOV   S1OK, #1
        MOV   MS50, #00H
RETURN:POP   ACC
        POP   PSW
        RETI
; *****************************************
;溫度總子程序
; *****************************************
wendu:  ACALL   INIT_1820
        ACALL   RE_CONFIG
        ACALL   GET_TEMPER
        ACALL   TEMPER_COV
        RET
; *****************************************
;DS18B20初始化程序
; *****************************************
      INIT_1820:
      SETB P2.0
      NOP
      CLR P2.0
      MOV R0,#06BH
      MOV R1,#03H
TSR1:
      DJNZ R0,TSR1 ; 延時
      MOV R0,#6BH
      DJNZ R1,TSR1
      SETB P2.0
      NOP
      NOP
      NOP
      MOV R0,#25H
TSR2:
     JNB P2.0,TSR3
     DJNZ R0,TSR2
     LJMP TSR4 ; 延時
TSR3:
     SETB 20H.1 ; 置標志位,表示DS1820存在
     LJMP TSR5
TSR4:
     CLR  20H.1 ; 清標志位,表示DS1820不存在
     LJMP TSR7
TSR5:
     MOV R0,#06BH
     MOV R1,#03H
TSR6:DJNZ R0,TSR6 ; 延時
     MOV  R0,#6BH
     DJNZ R1,TSR6
TSR7:SETB P2.0
     RET
; *****************************************
; 重新寫DS18B20暫存存儲器設(shè)定值
; *****************************************
RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若DS18B20存在,轉(zhuǎn)RE_CONFIG1
      RET
RE_CONFIG1:
      MOV A,#0CCH ; 發(fā)SKIP ROM命令
      LCALL WRITE_1820
      MOV A,#4EH ; 發(fā)寫暫存存儲器命令
      LCALL WRITE_1820
      MOV A,#00H ; TH(報警上限)中寫入00H
      LCALL WRITE_1820
      MOV A,#00H ; TL(報警下限)中寫入00H
      LCALL WRITE_1820
      MOV A,#1FH ; 選擇9位溫度分辨率
      LCALL WRITE_1820
      RET
; *****************************************
; 讀出轉(zhuǎn)換后的溫度值
; *****************************************
GET_TEMPER:
      SETB P2.0 ; 定時入口
      LCALL INIT_1820
      JB 20H.1,TSS2
      RET ; 若DS18B20不存在則返回
TSS2:
      MOV A,#0CCH ; 跳過ROM匹配
      LCALL WRITE_1820
      MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令
      LCALL WRITE_1820
      LCALL INIT_1820
      MOV A,#0CCH ; 跳過ROM匹配
      LCALL WRITE_1820
      MOV A,#0BEH ; 發(fā)出讀溫度命令
      LCALL WRITE_1820
      LCALL READ_18200
      MOV   37H,A ; 將讀出的溫度數(shù)據(jù)保存
      RET
; *****************************************
; 寫DS18B20的程序
; *****************************************
WRITE_1820:
      MOV R2,#8
      CLR C
WR1:CLR P2.0
     NOP
     NOP
     NOP
     NOP
     RRC A
     MOV P2.0,C
     MOV R3,#35
     DJNZ R3,$
     SETB P2.0
     NOP
     DJNZ R2,WR1
     SETB P2.0
     RET
; *****************************************
; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)
; *****************************************
READ_18200:
     MOV R4,#2 ; 將溫度高位和低位DS18B20中讀  
RE00:MOV R2,#8
RE01:CLR C
     SETB P2.0
     NOP
     NOP
     CLR P2.0
     NOP
     NOP
     NOP
     SETB P2.0
     NOP
     NOP
     MOV C,P2.0
     MOV R3,#35
RE20:
     DJNZ R3,RE20
     RRC A
     DJNZ R2,RE01
     MOV @R1,A
     DEC R1
     DJNZ R4,RE00
     RET
; ******************************
3樓: >>參與討論
jaky
; *****************************************
; 將16進制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼
; 38H中放百位,37十位,36個位
; *****************************************
BIN_BCD:
MOV    39H,37H
     MOV    A,37H
     MOV    B,#100
     DIV    AB
     MOV    38H,A
     MOV    37H,B
     XCH    A,B
     MOV    B,#10
     DIV    AB
     MOV    37H,A
     MOV    36H,B
     RET
DISP: SETB RS0
       MOV   R0, #36H
       MOV   R7, #3
LOOPP:MOV   A,  @R0
       MOV DPTR, #TAB
       MOVC A,   @A+DPTR
MOV  SBUF, A
       JNB  TI, $
       CLR  TI
       INC  R0
       DJNZ R7,  LOOPP
       CLR  RS0
       RET
TAB:  DB 11H, 0D7H, 32H, 92H, 0D4H, 98H, 18H, 0D1H, 10H, 90H  ,0FFH, 070H, 0FEH
      ; 延時子程序
T12MS: SETB  RS1
       MOV      R7, #18H
   TM: MOV  R6,  #0FFH
   TM6: DJNZ  R6, TM6
        DJNZ  R7, TM
        CLR  RS1
        RET
   ; 開機延時程序
    T1S: SETB  RS1
        MOV   R6, #3
    LSP:ACALL T12MS
        DJNZ  R6, LSP
        CLR  RS1
        RET
        END
4樓: >>參與討論
jaky
不知道有沒有錯
5樓: >>參與討論
微藍

怎么沒有硬件圖的啊..........

6樓: >>參與討論
godsky
這個程序 我好像見到過 ^_^
7樓: >>參與討論
zjh19831011

這么多,干嗎不用C寫啊

8樓: >>參與討論
luo5610

樓住,能告訴我在這個程序中如何修改程序就可以把這個溫度程序的測溫范圍擴大到1000度啊

9樓: >>參與討論
zwt659
樓主怎么沒有上傳硬件部分啊,這樣看起來有點不太清楚
10樓: >>參與討論
wujing198
我剛才看見一個帖子在求溫度控制,用這個程序改一下就可以實現(xiàn)溫度控制,無非就是加一段控制程序,設(shè)計1、2個控制信號而已。其實資源多的是,就看自己會不會用。
11樓: >>參與討論
wap

C麻煩,不好寫

 

 

 

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
單片機的通訊協(xié)議如何編啊
請教:如何將在計算機上編譯好的obj文件寫入單片機?
求 keil
[原創(chuàng)]匯編1602時鐘程序
求助大俠
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號