1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. DS18B20數字溫度計的設計(一)

        時間:2023-03-07 11:02:06 電子信息工程畢業論文 我要投稿
        • 相關推薦

        DS18B20數字溫度計的設計(一)

        目錄

        第 一 章    引言----------------------------------------------------------- 2
        第 二 章    系統硬件電路的設計-------------------------------------- 3
         一 主控制器----------------------------------------------------- 3
         二 顯示電路----------------------------------------------------- 3
         三 溫度傳感器工作原理-------------------------------------- 3
         四 DS18B20 與單片機的接口電路------------------------- 8
        第 三 章    系統程序的設計-------------------------------------------- 9
         一 主程序--------------------------------------------------------- 9
         二 讀出溫度子程序--------------------------------------------- 10
         三 溫度轉換命令子程序--------------------------------------- 11
         四 計算溫度子程序--------------------------------------------- 11
         五 顯示數據刷新子程序--------------------------------------- 12
         六 DS18B20的各條ROM命令---------------------------------- 12
         七 溫度數據的計算處理方法--------------------------------- 14
        第 四 章    調試及性能分析--------------------------------------------- 15
        第 五 章    程序清單------------------------------------------------------ 16
         第 一 章 引言
         在日常生活及工農業生產中,經常要用到溫度的檢測及控制,傳統的測溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部硬件支持。其缺點如下:
        硬件電路復雜;
        軟件調試復雜;
        制作成本高。
             本數字溫度計設計采用美國DALLAS半導體公司繼DS18B20之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55~-125 ℃,最高分辨率可達0.0625℃.
        DS18B20可以直接讀出被測溫度值,而且采用三線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。
        按照系統設計的功能和要求,確定系統由3個模塊組成:主控制器,測溫電路和顯示電路。
        數字溫度計總體電路結構框圖如圖1所示。
         
         
         設計要求:
         1.測溫范圍 -55~~+125 ℃
         2. 誤差 +0.5℃以內
         3.采用LED數碼管直讀顯示
         第 二 章 系統硬件電路的設計
         溫度計設計原理圖如圖所示,控制器使用單片機AT89C2051,溫度傳感器使用DS18B20,用4位共陽LED數碼管以動態掃描法實現溫度顯示。
          
         
         一 主控制器
         單片機AT89C2051具有低電壓供電和小體積等特點,兩個端口剛好滿足電路系統的設計需要,很適合便攜手持式產品的設計使用。系統可用兩節電池供電。
         二 顯示電路
         顯示電路采用4位共陽LED數碼管,從P1口輸出段碼,列掃描用P3.0~P3.3來實現,列驅動用9012三極管。
         三 溫度傳感器工作原理
         1.DS18B20的性能特點
         DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器。與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9~12位的數字值讀取方式。DS18B20的性能特點如下:
         ●獨特的單線接口僅需要一個端口引腳進行通信;
         ●多個DS18B20可以并聯在惟一的三線上,實現多點組網功能;
         ●無須外部器件;
         ●可通過數據線供電,電壓范圍為3.0~5.5V;
         ●零待機功耗;
         ●溫度以9或12位數字;
         ●用戶可定義報警設置;
         ●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;
         ●負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。
         2.DS18B20的內部結構
         DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內部結構如圖2所示。
         
         
         
         

         
         64位ROM的位結構如圖3所示。開始8位是產品類型的編號;接著是每個器件的惟一的序號,共有48位;最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。非易失性溫度報警觸發器TH和TL,可通過軟件寫入戶用戶報警上下限數據。
         
        8位檢驗CRC 48位序列號 8位工廠代碼(10H) 
        MSB             LSB    MSB            LSB   MSB            LSB
                                 圖3   64位ROM結構框圖
         DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的E2PROM。
         高速暫存RAM的結構為9字節的存儲器,結構如下圖4所示。頭2個字節包含測得的溫度信息,第3和第4字節TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節,為配置寄存器,其內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。該字節各位的定義如圖5所示。其中,低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數,即用來設置分辨率。其定義方法見表1。
         
        TM R1 R0 1 1 1 1 1 
         圖5配置寄存器定義
         

         R1  R0  分辨率//位 溫度最大
        轉換時間/ms 
         0  0  9  93.75 
         0  1  10  187.5 
         1  0  11     375 
         1  1  12  750 
         表1DS18B20分辨率的定義和規定
         由表1可見,DS18B20溫度轉換的時間比較長,而且設定的分辨率越高,所需要的溫度數據轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。
         高速暫存RAM的第6、7、8字節保留未用,表現為全邏輯1。第9字節讀出前面所有8字節的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。
         當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節。
           單片機可以通過單線接口讀出該數據。讀數據時低位在先,高位在后,數據格式以0.0625℃/LSB形式表示。           
         溫度值格式如圖6所示。
         
         低字節
        23 22 21 20 2-1 2-2 2-3 2-4 
         
         高字節
        S S S S S 26 25 24 
         圖6溫度數據值格式
         圖中,S表示符號位。當S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。表2是部分溫度值對應的二進制溫度數據。
        溫度/℃ 二進制表示 十六進制表示 溫度/℃ 二進制表示 十六進制表示 
        +125 0000 0111 1101  0000 07D0H 0 0000  0000
        0000  0000 0000H 
        +85 0000  0101
        0101  0000 0550H -0.5 1111  1111
        1111  1000 FFF8H 
        +26.0625 0000  0001
        1001  0001 0191H -10.125 1111  1111
        0101  1110 FF5EH 
        +10.125 0000  0000
        1010  0010 00A2H -25.0625 1111  1110
        0110  1111 FE6FH 
        +0.5 0000  0000
        0000  1000 0008H -55 1111  1100
        1001  0000 FC90H 
         表2 DS18B20溫度與表示值對應表
         
         DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節內容作比較。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。
         在64位ROM的最高有效字節中存儲有循環冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數據是否正確。
        3.DS18B20測溫原理
        如圖7所示,圖中低溫度系數振蕩器的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數振蕩器隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。
         圖7 DS18B20測溫原理圖
        圖中還隱含著計數門,當計數門打開時DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數,進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55℃所對應的一個基數分別置入減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。
         減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始停止溫度寄存器值的累加,此時溫度寄存器中的數值就是所測溫度值,圖7中的斜率累加器用于補償和修正測溫過程中的非線形性,其輸出用于修正減法計數器的預置值,只要計數門仍未關閉就重復上述過程,直到溫度寄存器值達到被測溫度值。
         另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統對DS18B20的各種操作按協議進行。操作協議為:初使化DS18B20(發復位脈沖)→發ROM功能命令→發存儲器操作命令→處理數據。

         

        四 DS18B20 與單片機的接口電路
         DS18B20可以采用兩種方式供電:一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖8 所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。
         當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為500us。采用寄生電源供電方式時,VDD端均接地。由于單線制只有一根線,因此發送接口必須是三態的。

         圖8 DS18B20采用寄生電源的電路圖
         
          
         
         第 三 章 系統程序的設計
         系統程序主要包括主程序、讀出溫度子程序。溫度轉換命令子程序、計算溫度子程序和顯示數據刷新子程序。
        一 主程序
         主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。
         主程序流程見圖9所示。
         主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內測量一次被測溫度,其程序流程見圖9所示。

         圖9 主程序流程圖
        二 讀出溫度子程序
         讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖10示。

                                                                                   

        圖10 讀出溫度子程序流程圖

        三 溫度轉換命令子程序
         溫度轉換命令子程序主要是發溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中,采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖11所示
        圖11 溫度轉換命令子程序流程圖

        四 計算溫度子程序
         計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,
         其程序流程圖如圖12所示。
         
           
         
         圖12 計數溫度子程序流程圖
         
        五 顯示數據刷新子程序
         顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖13。
         圖13 顯示數據刷新子程序流程圖

        六 DS18B20的各條ROM命令
        1.Read ROM[33H]。這條命令允許總線控制器讀到DS18B20的8位系列編碼、唯一的序列號和8位CRC碼。只有在總線上存在單只DS18B20時,才能使用該命令。
        如果總線上有不止一個從機,則當所有從機試圖同時傳送信號時就會發生數據沖突(漏極開路連在一起形成相“與”的效果)。
        2. Match ROM[55H]。這是一條匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點總線上定位一只特定的DS18B20。只有與64位ROM序列完全匹配的DS18B20才能響應隨后的存儲器操作。所有與64位ROM序列不匹配的從機都將等待復位脈沖。這條命令在總線上有單個或多個器件時都可以使用。
        3. Skip ROM[0CCh=H]。這條命令允許總線控制器不用提供64位ROM編碼就使用存儲器操作命令,在單點總線情況下,可以節省時間。如果總線上不止一個從機,則在Skip ROM命令之后跟著發一條讀命令。由于多個從機同時傳送信號,所以總線上就會發生數據沖突(漏極開路下拉效果相當于相“與”)。
        4. Search ROM[0F0H]。當一個系統初次啟動時,總線控制器可能并不知道單線總線上有多少器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識別總線上的所有從機的64位編碼。
        5. Alarm Search[0ECH]。這條命令的流程與Search ROM相同。然而,只有在最近一次測溫后遇到符合報警條件的情況下,DS18B20才會響應這條命令。報警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報警狀態將一直保持,直到再一次測得的溫度值達不到報警條件。
        6. Write Scratchpad[4EH]。這條命令向DS18B20的暫存器TH和TL中寫入數據。可以在任何時刻發出復位命令來中止寫入。
        7. Read scratchpad[0BEH]。這條命令讀取暫存器的內容。讀取將從第一字節開始,一直進行下去,直到第九字節(CRC)讀完。如果不想讀完所有字節,則控制器可以在任何時間發出復位命令來中止讀取。
        8. Copy scratchpad[48H]。這條命令把暫存器的內容拷貝到DS18B20的E2PROM存儲器里,即把溫度報警觸發字節存入非易失性存儲器里。如果總線控制器在這條命令之后跟著發出讀時間隙,而DS18B20又忙于把暫存器拷貝到E2PROM存儲器,則DS18B20就會輸出一個0,如果拷貝結束則DS18B20輸出1。如果使用寄生電源,則總線控制器必須在這條命令發出后立即啟動強上拉,并最少保持10ms。
        9. Convert[44H]。這條命令啟動一次溫度轉換而無需其他數據。溫度轉換命令被執行后DS18B20保持等待狀態。如果總線控制器在這條命令之后跟著發出讀時間隙,而DS18B20又忙于做時間轉換,則DS18B20將在總線上輸出0;如果溫度轉換完成,則輸出1.如果使用寄生電源,則總線控制器必須在發出這條命令后立即啟動強上拉,并保持500ms以上時間。
        10. Recall E2[0B80H]。這條命令把報警觸發器里的值拷貝回暫存器。這種拷貝操作在DS18B20上電時自動執行,這樣器件一上電暫存器里馬上就存在有效的數據了。若在這條命令發出之后讀數據隙,器件會輸出溫度轉換忙的標識:0表示忙;1表示完成。
        11. Read Power Supply[0B4H]。若把這條命令發給DS18B20后發出讀時間隙,器件會返回它的電源模式:0表示寄生電源;1表示外部電源。
        七 溫度數據的計算處理方法
         從DS18B20讀出的二進制值必須先轉換成十進制值,才能用于字符的顯示。DS18B20的轉換精度為9-12位可選,為了提高精度采用12位。在采用12位轉換精度時,溫度寄存器里的值是以0.0625為步進的,即溫度值為溫度寄存器里的二進制值乘以0.0626,就是實際的十進制溫度值。
         通過觀察表4-2可以發現,一個十進制值與二進制值間有很明顯的關系,就是把二進制的高字節的低半字節和低字節的高半字節組成一字節,這個字節二進制值化為十進制值后,就是溫度值的百、十、個位值,而剩下的低字節的低半字節化成十進制后,就是溫度值的小數部分。因為小數部分是半字節,所以二進制值范圍是0-F,轉換成十進制小數值就是0,0625的倍數(0-15倍)。這樣需要4位的數碼管來顯示小數部分。實際應用不必有這么高的精度,采用1位數碼管來顯示小數,可以精確到0.1℃.
         表3就是二進制與十進制的近似對應關系表。
        小數部分二進制值 0 1 2 3 4 5 6 7 8 9 A B C D E F 
        十進制 0 0 1 1 2 3 3 4 5 5 6 6 7 8 8 9 
         表3 小數部分二進制和十進制的近似對應關系表
         
         
         
         
         
         
         
         
         第 四 章 調試及性能分析
         系統的調試以程序調試為主。
        硬件調試比較簡單,首先檢查電路的焊接是否正確,然后可用萬用表測試或通電檢測。
         軟件調試可以先編寫顯示程序并進行硬件的正確性檢測,然后分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序和顯示數據刷新子程序等的編程和調試。
         由于DS18B20與單片機采用串行數據傳送,因此,對DS18B20進行讀/寫編程時必須嚴格地保證讀/寫時序;否則將無法讀取測量結果。本程序采用單片機匯編編寫,用Waver 3.2編譯器編程調試。
         軟件調試到能顯示溫度值,而且在有溫度變化時(例如用手去接觸)顯示溫度能變化,就基本完成。
         性能測試可用制作的溫度計和已有的成品溫度計同時進行測量比較。由于DS18B20的精度很高,所以誤差指標可以限制在+0.5℃以內。
         另外,-55~~+125 ℃的測溫范圍使得該溫度計完全適合一般的應用場合,其低電壓供電性能可做成用電池供電的手持電子溫度計。
         DS18B20溫度計還可以在高低溫報警、遠距離多點測溫控制等方面進行應用開發,但在實際設計中應注意以下問題:
        DS18B20工作時電流高達1.5mA,總線上掛接點數較多且同時進行轉換時要考慮增加總線驅動,可用單片機端口在溫度轉換時導通一個MOSFET供電。
        連接DS18B20的總線電纜是有長度限制的,因此在用DS18B20進行長距離測溫系統設計時要充分考慮總線分布電容和阻抗匹配等問題。
        在DS18B20測溫程序設計中,向DS18B20發出溫度轉換命令后,程序總要等待DS18B20的返回信號。一旦某個DS18B20接觸不好或斷線,當程序讀該DS18B20時,將沒有返回信號,程序進入死循環。

         


         第 五 章 程序清單
         DS18B20采用4位LED共陽顯示器顯示測溫值,顯示精度為0.1 ℃,測溫范圍為-55~~+125 ℃,用AT89C2051單片機,12MHz晶振
         
         TIMEL  EQU  0E0H
         TIMEN  EQU  0B1H
         TEMPHEAD  EQU  36H
         BITST  DATA  20H
         TIME1SOK  BIT  BITST.1
         TEMPONEOK  BIT  BITST.2
         TEMPL  DATA  26H
         TEMPH  DATA  27H
         TEMPHC  DATA  28H
         TEMPLC  DATA  29H
         TEMPDIN  DIT  P3.7
         
         ORG  0000H
         LJMP  START
         ORG  00BH
         LJMP  T0IT
         ORG 100H
         START: MOV SP , #60H
        CLSMEM: MOV  R0 , #20H
          MOV  R1 , #60H
        CLSMEM1: MOV  @R0,#00H
          INC  R0
              DJNZ  R1 , CLSMEM1
              MOV  TMOD ,#00100001B
              MOV  TH0, #TIMEL
              MOV  TL0, #TIMEH
              SJMP  INIT
        ERROR:  NOP
              LJMP  START
              NOP
         INIT:        NOP
              SETB  ET0
              SETB  TR0
              SETB  EA
              MOV  PSW, #00H
              CLR  TEMPONEOK
              LJMP  MAIN
        T0IT:        PUSH  PSW
              MOV  PSW,#10H
              MOV  TH0,#TIMEH
              MOV  TL0,#TIMEL
              INC  R7
              CJNZ  R7, #32H,T0IT1
              MOV  R7, #00H
              SETB  TIMEISOK
        T0IT1:        POP  PSW
             RETI
        MAIN:       LCALL DISP1
            JNB  TINE1SOK, MAIN
            CLR  TIME1SOK
            JNB  TEMPONEOK ,MAIN2
            LCALL  READTEMP1
            LCALL  CONVTEMP
            LCALL  DISPBCD
            LCALL  DISP1
        MAIN:      LCALL  READTEMP
               SETB  TEMPONEOK
               LJMP  MAIN
        INITDS1820:    SETB  TEMPDIN
                 NOP
                 NOP
                CLR  TEMPDIN
                MOV  R6 , #0A0H
                DJNZ  R6 ,$
                MOV  R6 ,#0A0H
         DJNZ  R6 ,$
                SETB  TEMPIND
                MOV  R6 ,#32H
                DJNZ R6 ,$
                MOV R6,#3CH
        LOOP1820:     MOV  C , TEMPDIN
                JC  INITDS1820OUT
                DJNZ  R6, LOOP1820
                MOV  R6 , #064H
                 DJNZ  R6 ,$
                 SJMP  TNITDS1820
                 RET
        INITDS1820OUT: SETB  TEMPDIN
                    RET
        READDS1820:   MOV  R7 ,#08H
                 SETB  TEMPDIN
                 NOP
                 NOP
        READDS1820LOOP: CLR  TEMPDIN
                      NOP
                      NOP
                             NOP
                          SETB  TEMPIND
                          MOV  R6 ,#07H
                          DJNZ  R6 ,$
                          MOV  C , TEMPDIN
                          MOV  R6 , #3CH
                          DJNZ R6 , $
         RRC  A
         SETB  TEMPDIN
         DJNZ  R7 ,READDS1820LOOP
         MOV  R6 , #3CH
         DJNZ    R6 , $
         RET
        WRITEDS1820:     MOV  R7 ,#08H
              SETB  TEMPDIN
                NOP
                 NOP
        WRITEDS1820LOP:  CLR  TEMPDIN
             MOV  R6 ,#07H
            DJNZ  R6, $
            RRC  A
            MOV  TEMPDIN
                  DJNZ  R7 , WRITEDS1820LOP
             RET
        READTEMP:   LCALL  INITDS1820
           MOV  A ,#0CCH
          LCALL WRITEDS1820
            MOV  R6 ,# 34H
                      DJNZ R6 ,$
                 MOV  A , #44H
          LCALL WRITEDS1820
           MOV  R6 ,# 34H
           DJNZ  R6 ,$
            RET
        READTEMP1:  LCALL  INITDS1820
          MOV  A , #0CCH
            LCALL  WRITEDS1820
             MOV  R6 , #34H
         DJNZ  R6 , $
           MOV  A , #0BEH
          LCALL  WRITEDS1820
            MOV  R6 , #34H
          DJNZ  R6 , $
          MOV  R5 , #09H
         MOV  B , #00H
          READTEMP2: LCALL  READDS1820
                       MOV  @R0 , A
                       INC  R0
          READTEMP21: LCALL  CRC8CAL
                       DJNZ  R5 , READTEMP2
                      MOV  A , B
                      JNZ  READTEMPOUT
                      MOV  A , TEMPHEAD +0
                      MOV  TEMPL , A
                      MOV  A , TEMPHEAD +1
         READTEMPOUT: RET
        CONVEMP: MOV  A , TEMPH
                   ANL  A , #80H
                   JZ  TEMPC1
                   CLR  C
                   MOV  A , TEMPL
                   CLP  A
                   ADD  A, #01H
                   MOV  TEMPL ,  A
                   MOV  A , TEMPH
                   CLP  A
                   ADDC  A , #00H
                   MOV  TEMPH , A
                   MOV   TEMPHC , #0BH
                   SJMP   TEMC11
        TEMPC1:  MOV   TEMPHC , #0AH
        TEMPC11: MOV  A , TEMPHC
                  SWAP  A
                  MOV   TEMPHC , A
                  MOV  A , TEMPL
                  ANL  A , #0FH
                  MOV  DPTR , #TEMPDOTTAB
                  MOVC  A , @A+DPTR
                  MOV  TEMPLC , A
                  MOV  A , TEMPL
                  ANL  A , #0F0H
                  SWAP  A
                  MOV  TEMPL , A
                  MOV  A , TEMPH
                  ANL  A , #0FH
                  SWAP  A
                  ORL  A , TEMPL
                  LCALL  HEX2BCD1
                  MOV  TEMPL , A
                  ANL  A , #0F0H
                  SWAP  A
                  ORL  A , TEMPHC
                 MOV  TEMPHC , A
                 MOV  A , TEMPL
                 ANL  A , #0FH
                 SWAP  A
                 ORL  A , TEMPLC
                 MOV  TEMPLC , A
                 MOV  A , R7
                 JZ  TEMPC12
                 ANL  A , #0FH
                 SWAP  A
                 MOV  A , TEMPHC
                 ANL  A , #0FH
                 ORL  A , R7
        TEMPC12: RET
        TEMPDOTTAB: DB  00H, 01H, 01H, 02H, 03H, 03H, 04H, 04H, 05H, 06H,
         BCD1:MOV  B , #064H
                   DIV  AB
                   MOV  R7 , A
                   MOV  A , #0AH
                   XCH  A , B
                    DIV  AB
                    SWAP  A
                   ORL  A , B
                   RET
        CRC8CAL:  PUSH  ACC
                    MOV  R7 , #08H
        CRC8LOOP1:  XRL  A , B
                    RRC  A
                   MOV  A , B
                   JNC  CRC8LOOP2
                   XRL  A , #18H
        CRC8LOOP2:  RRC  A
                    MOV  B , A
                    POP  ACC
                    RR  A
                    PUSH  ACC
                    DJNZ  R7 , CRC8LOOP1
                    POP  ACC
                    RET
                   END
           

        【DS18B20數字溫度計的設計(一)】相關文章:

        談數字IC設計技術08-25

        數字時鐘論文提綱06-23

        數字視頻接口-DVI 1.005-31

        C語言程序設計 (一)05-11

        寶潔如何在數字世界起舞05-02

        數字媒體藝術的新美學特征分析05-03

        我國高校數字圖書館服務對策探析06-07

        簡談視覺藝術和數字媒體的關系03-13

        酒店管理的數字化發展論文(精選8篇)09-30

        淺談數字媒體藝術的美學特征的表達分析論文04-18

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>