![基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/d14614a5-1f6b-48e4-9b7c-02eb9196e430/d14614a5-1f6b-48e4-9b7c-02eb9196e4301.gif)
![基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/d14614a5-1f6b-48e4-9b7c-02eb9196e430/d14614a5-1f6b-48e4-9b7c-02eb9196e4302.gif)
![基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/d14614a5-1f6b-48e4-9b7c-02eb9196e430/d14614a5-1f6b-48e4-9b7c-02eb9196e4303.gif)
![基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/d14614a5-1f6b-48e4-9b7c-02eb9196e430/d14614a5-1f6b-48e4-9b7c-02eb9196e4304.gif)
![基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/d14614a5-1f6b-48e4-9b7c-02eb9196e430/d14614a5-1f6b-48e4-9b7c-02eb9196e4305.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)報(bào)告書 課程名稱: 專業(yè)綜合課程設(shè)計(jì) 題 目:基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)系 (院): 電子工程學(xué)院 學(xué) 期: 11-12-1 專業(yè)班級(jí): 電子 姓 名: 學(xué) 號(hào): 評(píng)語:成績:簽名:日期:1. 選題意義隨著社會(huì)的發(fā)展,科技的進(jìn)步,電子技術(shù)和微型計(jì)算機(jī)的迅速發(fā)展,以及測溫儀器在各個(gè)領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度監(jiān)控系統(tǒng)發(fā)展的主流方向。單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛。利用單片機(jī)對(duì)溫度進(jìn)行控制的技術(shù)也隨之而生,并日益發(fā)展和完善,且越來越顯示出它的優(yōu)越性。單總線技術(shù)是美國Dallas半導(dǎo)體公司近年推出的新技術(shù)。它將地址線、數(shù)據(jù)線、控制線合為1根信號(hào)線,允許在這根信號(hào)線上掛接數(shù)百個(gè)單總
2、線器件芯片。溫度是一個(gè)重要的物理量,它反映了物體冷熱的程度,與自然界中的各種物理和化學(xué)過程相聯(lián)系。在工、農(nóng)業(yè)生產(chǎn)和日常生活中,各個(gè)環(huán)節(jié)都與溫度緊密相聯(lián),溫度的準(zhǔn)確監(jiān)測及控制占據(jù)著極其重要地位。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行等。沒有合適的溫度環(huán)境,許多電子設(shè)備就不能正常工作,糧倉的儲(chǔ)糧就會(huì)變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障??梢?,溫度的監(jiān)控是非常重要的。單總線技術(shù)是美國Dallas半導(dǎo)體公司近年推出的新技術(shù)。它將地址線、數(shù)據(jù)線、控制線合為1根信號(hào)線,允許在這根信號(hào)線上掛接數(shù)百個(gè)單總線器件芯片。單總線技術(shù)應(yīng)用于某些低速(約100kb
3、ps以下的速率)測控系統(tǒng)中,可以大大簡化線路結(jié)構(gòu)和減少硬件開銷,可以通過PC機(jī)串行口、并行口、USB總線或單片機(jī)直接進(jìn)行測控,PC機(jī)的軟件開發(fā)也直觀、容易。本設(shè)計(jì)為基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)。2. 設(shè)計(jì)目的、要求及步驟概述2.1設(shè)計(jì)目的(1)對(duì)單總線設(shè)備的結(jié)構(gòu)特點(diǎn)和以單總線技術(shù)構(gòu)建起來的微型局域網(wǎng)的拓樸結(jié)構(gòu)、網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化以及設(shè)備與單總線的連接進(jìn)行闡述和研究。(2)設(shè)計(jì)基于單總線的溫度采集電路,單總線和PC機(jī)串行口的接口電路,在電路設(shè)計(jì)時(shí)重點(diǎn)考慮單總線設(shè)備的供電問題和數(shù)據(jù)的可靠采集。(3) 用自己熟悉的計(jì)算機(jī)語言編寫溫度實(shí)時(shí)監(jiān)控系統(tǒng)軟件,軟件的界面要友好、簡明、直觀。在軟件編寫時(shí)重點(diǎn)考慮溫度采
4、集數(shù)據(jù)存儲(chǔ)、單總線設(shè)備中的CRC循環(huán)冗余碼的實(shí)現(xiàn)方法、從設(shè)備的“即時(shí)插即用” 的算法研究。 2.2設(shè)計(jì)內(nèi)容及要求(1) 溫度測量范圍50100。(2) 測溫分辨率不低于0.0625。(3) 數(shù)據(jù)傳輸距離不低于60米。(4) 溫度測量點(diǎn)不少于3。(5) 溫度采集間隔不底于10分鐘。(6) 能顯示一天實(shí)時(shí)溫度變化曲線。2.3設(shè)計(jì)步驟概述實(shí)習(xí)制作大概步驟如圖1準(zhǔn)備好要用的器件進(jìn)行焊接設(shè)計(jì)電路Delphi程序設(shè)計(jì)檢測完善電路完整調(diào)試完善研究課題的要求程序檢測完善圖13. 電路的設(shè)計(jì)3.1硬件電路設(shè)計(jì)在硬件電路設(shè)計(jì)時(shí),應(yīng)著重考慮電子器件的供電方式,以及對(duì)器件的限壓和限流保護(hù)。因?yàn)楸敬卧O(shè)計(jì)要求利用單總線技
5、術(shù),所以可以考慮使用寄生供電方式。設(shè)計(jì)的電路圖如下。圖2 基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)硬件電路總圖圖3 基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)硬件電路原理圖3.2軟件設(shè)計(jì)3.2.1設(shè)計(jì)窗體本次設(shè)計(jì)要求軟件的可視化窗體中包含實(shí)時(shí)溫度顯示、數(shù)據(jù)記錄、存儲(chǔ)管理和ROM數(shù)據(jù),并且能將測得的數(shù)據(jù)保存到指定的數(shù)據(jù)庫中。窗體界面如下。圖4 窗體界面實(shí)時(shí)溫度顯示中可以看到當(dāng)前室溫,并且可以顯示攝氏溫度和華氏溫度。數(shù)據(jù)記錄包含溫度曲線和溫度日志,可以顯示一天內(nèi)的溫度變化曲線。存儲(chǔ)管理和ROM數(shù)據(jù)用來對(duì)數(shù)據(jù)庫中已經(jīng)保存的溫度數(shù)據(jù)進(jìn)行管理,如刪除、轉(zhuǎn)移等操作。3.2.2軟件編程本系統(tǒng)軟件部分采用Delphi來實(shí)現(xiàn)初始化、數(shù)據(jù)
6、采集處理、溫度報(bào)表管理,其主程序的流程圖見圖5。圖5 主程序流程圖本系統(tǒng)軟件部分共分為3個(gè)部分,分別是:1)初始化程序。a設(shè)置串行通信波特率;b串行通訊方式的初始化;c對(duì)TO,T1兩個(gè)計(jì)數(shù)器的初始化;d中斷控制程序的初始化。此外,還負(fù)責(zé)從E2PROM 中調(diào)出以前的采樣參數(shù),使器件能夠以它采樣溫度數(shù)據(jù)。2) 當(dāng)監(jiān)控到ONTIME1和NTIME2標(biāo)記時(shí)作相應(yīng)溫度的存儲(chǔ)、轉(zhuǎn)換、發(fā)送處理。ONTIME1和NTIME2的標(biāo)記主要有定時(shí)電路決定,當(dāng)?shù)竭_(dá)采樣間隔時(shí),做出相應(yīng)的處理。3)采用動(dòng)態(tài)顯示方式即時(shí)顯示溫度,以節(jié)省電路規(guī)模,使得整個(gè)系統(tǒng)的體積變小。4. 元器件的選擇4.1主要元器件知識(shí)4.1.1 DS
7、18B20DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO92小體積封裝形式;溫度測量范圍為55125,可編程為9位12位A/D轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625,被測溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3根或2根線上,只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點(diǎn)使DS18B20非常適用于遠(yuǎn)距離多點(diǎn)溫度檢測系統(tǒng)。 DS18B20的內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)如圖5所示,主要由4部分組成:64位ROM、溫度傳
8、感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如圖6所示,DQ為數(shù)字信號(hào)輸入輸出端;GND為電源地;VDD為外接供電電源輸入端,在寄生電源接線方式時(shí)接地,見圖7。圖6 DS18B20的內(nèi)部結(jié)構(gòu) 圖7 DS18B20的管腳排列ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個(gè)DS18B20的64位序列號(hào)均不相同。64位ROM的排的循環(huán)冗余校驗(yàn)碼(CRC=X8X5X41)。ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。DS18B20中的溫度傳感器完成對(duì)溫度的測量,用16位符號(hào)
9、擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625/LSB形式表達(dá),其中S為符號(hào)位。例如125的數(shù)字輸出為07D0H,25.0625的數(shù)字輸出為0191H,25.0625的數(shù)字輸出為FF6FH,55的數(shù)字輸出為FC90H。 高低溫報(bào)警觸發(fā)器TH和TL、配置寄存器均由一個(gè)字節(jié)的EEPROM組成,使用一個(gè)存儲(chǔ)器功能命令可對(duì)TH、TL或配置寄存器寫入。其中配置寄存器的格式如下:0 R1 R0 1 1 1 1 1 MSBLSBR1、R0決定溫度轉(zhuǎn)換的精度位數(shù):R1R0=“00”,9位精度,最大轉(zhuǎn)換時(shí)間為93.75ms;R1R0=“01”,10位精度,最大轉(zhuǎn)換時(shí)間為187.5ms;R1R0=“10”,11位精
10、度,最大轉(zhuǎn)換時(shí)間為375ms;R1R0=“11”,12位精度,最大轉(zhuǎn)換時(shí)間為750ms;未編程時(shí)默認(rèn)為12位精度。高速暫存器是一個(gè)9字節(jié)的存儲(chǔ)器。開始兩個(gè)字節(jié)包含被測溫度的數(shù)字量信息;第3、4、5字節(jié)分別是TH、TL、配置寄存器的臨時(shí)拷貝,每一次上電復(fù)位時(shí)被刷新;第6、7、8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個(gè)字節(jié)的CRC碼,可用來保證通信正確。 DS18B20的工作時(shí)序DS18B20的一線工作協(xié)議流程是:初始化ROM操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。其工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序,如圖8(a)(b)(c)所示。(a)初始化時(shí)序 (b)寫時(shí)序 (c)讀
11、時(shí)序圖8 DS18B20的工作時(shí)序圖 DS18B20與微處理器的連接DS18B20與微處理器的連接如下圖9所示。(a)寄生電源工作方式 (b)外接電源工作方式圖9 DS18B20與微處理器的典型連接圖4.1.2串口UART/RS232至單總線通信協(xié)議的轉(zhuǎn)接橋DS2480B DS2480B主要特性串口UART/RS232至單總線通信協(xié)議的轉(zhuǎn)接橋,可直接連到UART和5V RS232系統(tǒng)中, 支持Dallas全系列單總線器件,如數(shù)字溫度傳感器DS18B20、A/D轉(zhuǎn)換器DS2450等;將主機(jī)從單總線時(shí)序控制中解脫出來,提供規(guī)范的、靈活的和強(qiáng)驅(qū)動(dòng)的單總線定時(shí);支持標(biāo)準(zhǔn)UA
12、RT通信,支持9.6(默認(rèn))、19.2、57.6和115.2 kbps速率;具有較強(qiáng)的總線驅(qū)動(dòng)能力,通信距離可達(dá)300 m;可編程下拉擺率控制和有源上拉,工作范圍 5 V,-40 +85 ,8引腳SOIC封裝。管腳圖及引腳說明1234875RXDTXDPOLVPPGND1-WNCVDD圖10 DS2480B的封裝和引腳DS2480B為8腳貼片式封裝,如圖10所示。引腳功能如表1所列:表1 引腳功能說明引腳號(hào)引腳名稱引 腳 功 能1GND地線21-W單總線輸入輸出端3NC懸空4VDD4.55.5V電壓5VPPEPROM編程電壓6POLRXD/TXD選擇端7TXD發(fā)送端8RXD接收端
13、DS2480B工作原理框圖如圖11所示。圖11 DS2480B工作原理框圖 DS2480B與RS232的接口技術(shù)DS2480B與RS232的接口如圖12所示。 圖12 DS2480B與RS232的接口圖 4.2元件清單表2 元件清單序號(hào)元件個(gè)數(shù)1PC機(jī)串行口UART/RS2321 個(gè)2轉(zhuǎn)接橋DS2480B1 個(gè)3數(shù)字溫度傳感器DS18B201 個(gè)4電容U07HF1 個(gè)5穩(wěn)壓管2 個(gè)6二極管M72 個(gè)7電路板XF071 個(gè)5. 學(xué)習(xí)心得通過這次專業(yè)課程設(shè)計(jì),我對(duì)本專業(yè)的理論知識(shí)和動(dòng)手操作能力都有了大幅度的提高。首先從研究課題的要求和任務(wù)開始,剛拿到“基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)”這
14、個(gè)設(shè)計(jì)題目時(shí),完全是不知所措,不知道從那下手。經(jīng)過王老師和李老師的耐心講解后,才有點(diǎn)頭緒。課后通過自己查資料和老師所給的任務(wù)書與指導(dǎo)書才真正開始搞懂題目,并且去研究它。根據(jù)指導(dǎo)書上的要求和指示,我們小組設(shè)計(jì)出了基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng)硬件電路。接下來就要依據(jù)設(shè)計(jì)好的電路圖,進(jìn)行硬件的焊接。說到焊接,我并不陌生,在大二的時(shí)候就焊接過收音機(jī),在專業(yè)綜合實(shí)習(xí)時(shí),又焊接過紅外線感應(yīng)開關(guān)。焊接最需要注意的是焊接的溫度和時(shí)間,焊接時(shí)要使電烙鐵的溫度高于焊錫,但是不能太高,以烙鐵接頭的松香剛剛冒煙為好,焊接的時(shí)間不能太短,因?yàn)槟菢雍更c(diǎn)的溫度太低,焊點(diǎn)融化不充分,焊點(diǎn)粗糙容易造成虛焊,而焊接時(shí)間長,焊錫容
15、易流淌,使元件過熱,容易損壞,或者造成焊接短路現(xiàn)象。在軟件設(shè)計(jì)與編程的環(huán)節(jié),要求用自己熟悉的計(jì)算機(jī)語言編寫溫度實(shí)時(shí)監(jiān)控系統(tǒng)軟件。在設(shè)計(jì)之前我也考慮過關(guān)于選用什么語言的問題,在大學(xué)生涯中,我學(xué)過了C語言,Java語言和Delphi語言,在去年的計(jì)算機(jī)課程設(shè)計(jì)中,我曾用Delphi語言編寫過一個(gè)高校學(xué)生選課成績管理系統(tǒng),對(duì)Delphi言語的應(yīng)用相對(duì)靈活些,所以我決定用Delphi語言編寫程序。在本次課程設(shè)計(jì)的過程中,我還發(fā)現(xiàn)基于DS18B20數(shù)字溫度傳感器構(gòu)成的實(shí)時(shí)監(jiān)控系統(tǒng)確實(shí)具有精度高、抗干擾能力強(qiáng)、電路簡單等諸多優(yōu)點(diǎn)。相比之下,傳統(tǒng)的溫度檢測系統(tǒng)采用熱敏電阻等溫度敏感元件,熱敏電阻成本低,但需
16、要后續(xù)信號(hào)調(diào)理、AD轉(zhuǎn)換處理電路才能將溫度信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),不但電路復(fù)雜,而且熱敏電阻的可靠性相對(duì)較差,測量溫度的精度差,很難保證熱敏電阻的一致性和線性。通過對(duì)這個(gè)專業(yè)課程設(shè)計(jì)的學(xué)習(xí),為我們掌握單總線的溫度采集電路,單總線和PC機(jī)串行口的接口電路的開發(fā)打下了堅(jiān)實(shí)的基礎(chǔ),還使我掌握了設(shè)計(jì)復(fù)雜電路和裝配技能,培養(yǎng)了我理論聯(lián)系實(shí)際的能力,提高了我分析問題和解決問題的能力,增強(qiáng)了獨(dú)立工作的能力。其中感觸最深的便是實(shí)踐聯(lián)系理論的重要性,當(dāng)遇到實(shí)際問題時(shí),只要認(rèn)真思考,用所學(xué)的知識(shí),再一步一步探索,是完全可以解決遇到的一般問題的。在實(shí)習(xí)過成中,要時(shí)刻保持清醒的頭腦,出現(xiàn)錯(cuò)誤,一定要認(rèn)真的冷靜的去檢查分析
17、錯(cuò)誤,不能草草了事,這樣做出來的課程設(shè)計(jì)才能達(dá)到它真正的效果,為我們以后步入社會(huì)做好充分的準(zhǔn)備。6. 參考文獻(xiàn)1 DS18B20 Programmable Resolution 1-Wire Digital Thermometer2 DS2480B Serial 1-Wire Line Driver with Load Sensor3 左冬紅,謝瑞和.實(shí)現(xiàn)單總線搜索ROM命令的一種算法 4 李朝青,單片機(jī)原理及接口技術(shù)(簡明修訂版)M. 19985 李廣弟.單片機(jī)基礎(chǔ)M. 1994 6 沙占友等.智能化集成溫度傳感器原理與應(yīng)用. 20027 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版)M. 1989附:源
18、程序清單- TEMPDL32 : This utility uses TMEX to view a read the temperature from a DS18B20. It requires the 32-Bit Windows TMEX drivers to be present. Compiler : Borland Delphi 5.0 procedure TForm1.FormCreate(Sender: Tobject;Var ztbuf : array0.200 of Char; Typebuf : array 0.200 of Char; i,k,RetValue : sm
19、allint; RetStr : array0.200 of Char; SetupDone: Boolean; PortNum, PortType : smallint; begindieer :=false; SetupDone := FALSE; TMSetup not done yet Label4.Caption := '' Read default Port Number and Port Type from registry RetValue := TMReadDefaultPort(PortNum, PortType); if (RetValue < 1)
20、 then TMReadDefaultPort(PortNum, PortType) begin ShowMessage('Please set port first'); Halt; end else begin read the tmex version and type version Get_Version(ztbuf); Label1.Caption := StrPas(ztbuf); TMGetTypeVersion(PortType,Typebuf); Label2.Caption := StrPas(Typebuf); attemp to get a sessi
21、on Done := False; Repeat SHandle := TMExtendedStartSession(PortNum,PortType,NIL); If (SHandle > 0) Then begin if (TMSetup(SHandle) = 1) then The device that will be found is Temperature Device DS18B20, so Family Type is set to $28 FindFirstFamily($28,SHandle) else begin TMEndSession(SHandle); Sho
22、wMessage('Fail to setup MicroLan!'); Halt; end; end else begin if (SHandle < 0 ) then Begin ShowMessage('The Default Port Type does not have a driver !'); Halt; end; end; Release control back to window Application.ProcessMessages; until (Done); Done := False; Repeat SHandle := TME
23、xtendedStartSession(PortNum,PortType,NIL); If (SHandle > 0) Then begin if (TMSetup(SHandle) = 1) then The device that will be found is Temperature Device DS18B20, so Family Type is set to $28 FindSecondFamily($28,SHandle) else begin TMEndSession(SHandle); ShowMessage('Fail to setup MicroLan!&
24、#39;); Halt; end; end else begin if (SHandle < 0 ) then Begin ShowMessage('The Default Port Type does not have a driver !'); Halt; end; end; Release control back to window Application.ProcessMessages; until (Done); label18.Caption :=keke1; label19.caption :=keke2; table1.Active :=true; if
25、 table1.CanModify then begin table1.Append; table1.Fields0.AsDateTime :=now; table1.Fields1.AsString :=floattostr(diwei1); table1.Fields2.AsFloat :=shangxian1; table1.Fields3.AsFloat :=xiaxian1; table1.Fields4.AsString :=floattostr(diwei2); table1.Fields5.AsFloat :=shangxian2; table1.Fields6.AsFloat
26、:=xiaxian2; table1.Post; end; end;end;procedure TForm1.FindFirstFamily(family : smallint; SHandle: longint); var i , flag : smallint; romstr : string; rom : array0.8 of smallint;begin Set up to find the first device with the family 'family' if (TMFamilySearchSetup(SHandle,stateBuf,family ) =
27、 1 ) then begin if (TMNext(SHandle, stateBuf)= 1) then begin Read the rom number by setting rom0 to 0 for reading and using TMRom rom0 := 0; TMRom(SHandle,stateBuf,rom); Check if correct type romstr := '' if (family and $7F )= (rom0 and $7F) then begin for i := 7 downto 0 do romstr := romstr
28、 + IntToHex(ROMi,2); Label3.caption := 'Serial ROM ID1 : ' + romstr; ReadTemperature1(SHandle); end else begin ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port')
29、; halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end;end;procedure TForm1.ReadTemperature1(session_handle : longint);var tsht, i, tmp1 : smallint; cr,cpc, tmpf,tmp : Extended; rbuf : array0.9 of smallint ; st : longint; CRCBy
30、te,xiaxianbyte : Byte;begin tmp := 0.00; access the device if (TMAccess(session_handle,StateBuf)= 1) then begin Send the recall E2 command (by setting $B8 to outbyte in TMTouchByte) make sure Scratch is correct TMTouchByte(session_handle, $B8); Send the start T command if (TMAccess(session_handle,St
31、ateBuf) = 1) then begin Prepare the strong pullup after next TMTouchByte TMOneWireLevel(session_handle,LEVEL_SET,LEVEL_STRONG_PULL_UP, PRIMED_BYTE); Send the conversion command (by setting $44 to outbyte in TMTouchByte) TMTouchByte(session_handle, $44); Sleep for a second st := GetTickCount + 1000;
32、While (GetTickCount < st) do TMValidSession(Session_handle); Disable the strong pullup TMOneWireLevel(session_handle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NONE); verify conversion is complete by setting $01 to outbit in TMTouchBit and check the return value with 1 if (TMTouchBit(session_handle,$01) = $0
33、1) then begin Access device If (TMAccess(session_handle,StateBuf) = 1 ) then begin Send read scratch command by setting $BE to outbyte in TMTouchByte TMTouchByte(session_handle,$BE); CRC8 := 0; Read scratch (setting $FF to outbyte in TMTouchByte) and check crc for each byte for i := 0 to 7 do begin
34、rbufi:= TMTouchByte(session_handle, $FF); CRCByte := Byte(rbufi); the byte to run through CRC8 routine CRC8 := TMCRC(1, CRCByte, CRC8, 0); end; Check crc CRCByte := Byte(TMTouchByte(session_handle, $FF); the byte to run through CRC8 routine CRC8 := TMCRC(1, CRCByte, CRC8, 0); if ( CRC8 = 0 ) then be
35、gin Calculate the temperarure tsht := rbuf0; if (rbuf1 and $01)= 1) then tsht := tsht or (-256); tmp1 := Round(tsht)/2); tmp := tmp1; cr := rbuf6; cpc := rbuf 7; if (rbuf7 <> 0) then tmp := tmp - (0.25) + (cpc-cr)/cpc; if (rbuf1 and $F8)= $F8) then BEGIN END ELSE BEGIN case (rbuf4 and $60) of
36、$00: begin fenbianlv1 :=9; tmp:=(rbuf1 and $07)*16+(rbuf0 and $f8)/16; diwei1 :=(rbuf0 and $f8)/16; end; $20: begin fenbianlv1 :=10; tmp:=(rbuf1 and $07)*16+(rbuf0 and $fc)/16; diwei1 :=(rbuf0 and $fc)/16; end; $40: begin fenbianlv1 :=11; tmp:=(rbuf1 and $07)*16+(rbuf0 and $fe)/16; diwei1 :=(rbuf0 a
37、nd $fe)/16; end; $60: begin fenbianlv1 :=12; tmp:=(rbuf1 and $07)*16+rbuf0/16; diwei1 :=rbuf0/16; end; end; END; tmpf := (tmp * 9 )/5 + 32; label4.caption := 'Current temp1 : ' + FormatFloat('0.0000',tmp) + ' C or ' + FormatFloat('0.0000', tmpf) + ' F' keke1 :
38、=FormatFloat('0.0000',tmp); yuanshi1 :=rbuf4; shangxian1 :=rbuf2 and $7f; xiaxianbyte :=rbuf3 and $80; if xiaxianbyte = 1 then xiaxian1 := (rbuf3 and $7f) * (-1) else xiaxian1 := rbuf3 and $7f; MessageBeep(0); TMEndSession(session_handle); Done := True; end; end; end; end; end;end;procedure
39、TForm1.FindSecondFamily(family : smallint; SHandle: longint); var i , flag : smallint; romstr : string; rom : array0.8 of smallint;begin Set up to find the first device with the family 'family' if (TMFamilySearchSetup(SHandle,stateBuf,family ) = 1 ) then begin Get first device if (TMNext(SHa
40、ndle, stateBuf)= 1) then if (TMNext(SHandle, stateBuf)= 1) then begin Read the rom number by setting rom0 to 0 for reading and using TMRom rom0 := 0; TMRom(SHandle,stateBuf,rom); Check if correct type romstr := '' if (family and $7F )= (rom0 and $7F) then begin for i := 7 downto 0 do romstr
41、:= romstr + IntToHex(ROMi,2); Label10.caption := 'Serial ROM ID2 : ' + romstr; ReadTemperature2(SHandle); end else begin ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the
42、port'); halt; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end;end;procedure TForm1.ReadTemperature2(session_handl
43、e : longint);var tsht, i, tmp1 : smallint; cr,cpc, tmpf,tmp : Extended; rbuf : array0.9 of smallint ; st : longint; CRCByte ,xiaxianbyte: Byte;begin tmp := 0.00; access the device if (TMAccess(session_handle,StateBuf)= 1) then begin Send the recall E2 command (by setting $B8 to outbyte in TMTouchByt
44、e) make sure Scratch is correct TMTouchByte(session_handle, $B8); Send the start T command if (TMAccess(session_handle,StateBuf) = 1) then begin Prepare the strong pullup after next TMTouchByte TMOneWireLevel(session_handle,LEVEL_SET,LEVEL_STRONG_PULL_UP, PRIMED_BYTE); Send the conversion command (b
45、y setting $44 to outbyte in TMTouchByte) TMTouchByte(session_handle, $44); Sleep for a second st := GetTickCount + 1000; While (GetTickCount < st) do TMValidSession(Session_handle); Disable the strong pullup TMOneWireLevel(session_handle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NONE); verify conversion is complete by setting $01 to outbit in TMTouchBit and check the return value with 1 if (TMTouchBit(session_handle,$01) = $01) then begin Access device If (TMAccess(session_handle,StateBuf) = 1 ) then
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年眉山貨運(yùn)資格證模擬考試新題庫
- 電梯加件協(xié)議書(2篇)
- 電力需求預(yù)測合同(2篇)
- 2024-2025學(xué)年四年級(jí)語文上冊(cè)第五單元橋12橋之思備課教案北師大版
- 湘教版數(shù)學(xué)七年級(jí)下冊(cè)2.2.2《運(yùn)用完全平方公式進(jìn)行計(jì)算》聽評(píng)課記錄
- 律師事務(wù)所年度檢查考核總結(jié)
- 第三季度財(cái)務(wù)工作總結(jié)
- 采購計(jì)劃年終工作總結(jié)
- 聽評(píng)課記錄二年級(jí)語文
- 領(lǐng)導(dǎo)給員工的評(píng)語與希望
- 2025年度化妝品電商平臺(tái)流量互換銷售合作合同
- 學(xué)習(xí)解讀2025年印發(fā)《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》課件
- 全過程造價(jià)咨詢服務(wù)的質(zhì)量、進(jìn)度、保密等保證措施
- 縣城屠宰場建設(shè)可行性研究報(bào)告
- 25學(xué)年六年級(jí)數(shù)學(xué)寒假作業(yè)《每日一練》
- 2025高考數(shù)學(xué)一輪復(fù)習(xí)-第8章-第3節(jié) 圓的方程【課件】
- 環(huán)保行業(yè)深度研究報(bào)告
- 保障性住房補(bǔ)貼委托書范本
- 公益捐助活動(dòng)影響力評(píng)估方法
- 國家電網(wǎng)安全培訓(xùn)
- 2025年中國陪診服務(wù)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
評(píng)論
0/150
提交評(píng)論