倉(cāng)庫(kù)溫度、濕度檢測(cè)_第1頁(yè)
倉(cāng)庫(kù)溫度、濕度檢測(cè)_第2頁(yè)
倉(cāng)庫(kù)溫度、濕度檢測(cè)_第3頁(yè)
倉(cāng)庫(kù)溫度、濕度檢測(cè)_第4頁(yè)
倉(cāng)庫(kù)溫度、濕度檢測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

221概述1.1課題意義近幾年來(lái)倉(cāng)庫(kù)的機(jī)械化、自動(dòng)化程度不斷提高,一些智能化倉(cāng)庫(kù)管理技術(shù)如檢測(cè)技術(shù)、監(jiān)視技術(shù)和控制技術(shù)等在倉(cāng)庫(kù)管理中得到廣泛應(yīng)用。在糧食、藥材等的儲(chǔ)存?zhèn)}庫(kù),若不對(duì)倉(cāng)庫(kù)內(nèi)的溫度或濕度進(jìn)行實(shí)時(shí)檢測(cè),就不能及時(shí)了解糧食、藥材的儲(chǔ)藏狀況,可能發(fā)生腐爛,造成極大的經(jīng)濟(jì)損失。由于倉(cāng)庫(kù)對(duì)環(huán)境溫度和濕度提出了很高的要求,因此能否有效地對(duì)這些領(lǐng)域的環(huán)境溫度和濕度進(jìn)行實(shí)時(shí)監(jiān)測(cè)和控制是一個(gè)必須解決的重要課題。本系統(tǒng)解決的就是溫、濕度的實(shí)時(shí)檢測(cè),只要兩者之中的任何一個(gè)超過(guò)限制,就啟動(dòng)報(bào)警系統(tǒng),使人們能夠及時(shí)發(fā)現(xiàn)問(wèn)題,采取有效的措施,以此避免不必要的損失。1.2設(shè)計(jì)任務(wù)本課題是針對(duì)倉(cāng)庫(kù)設(shè)計(jì)的通用溫、濕度檢測(cè)儀,它可以實(shí)現(xiàn)的功能是:(1)實(shí)時(shí)采集外界溫度和相對(duì)濕度的變化,并在數(shù)碼管上實(shí)現(xiàn)實(shí)時(shí)顯示;(2)可通過(guò)鍵盤設(shè)定溫、濕度報(bào)警值,且報(bào)警值掉電不丟失信息;(3)可實(shí)現(xiàn)溫、濕度超限聲、光報(bào)警。1.3主要技術(shù)方案?jìng)}庫(kù)在溫濕度檢測(cè)發(fā)生故障時(shí),會(huì)使其存儲(chǔ)物腐爛,從而造成直接和間接的巨大經(jīng)濟(jì)損失。我們?cè)O(shè)計(jì)了一套溫、濕度檢測(cè)系統(tǒng),實(shí)時(shí)檢測(cè)倉(cāng)庫(kù)的溫、濕度,本系統(tǒng)由AT89C51單片機(jī)、鍵盤顯示電路、報(bào)警電路、數(shù)字溫度傳感器、濕度傳感器、看門狗電路及E2ROM組成,完成對(duì)倉(cāng)庫(kù)內(nèi)溫、濕度數(shù)據(jù)的采集、顯示和超限報(bào)警。本裝置的結(jié)構(gòu)框圖如圖1-1。圖1-1系統(tǒng)結(jié)構(gòu)框圖1.4本文主要工作本專題是溫濕度檢測(cè)儀的數(shù)據(jù)采集部分,要完成的主要工作是(1)選擇溫度傳感器;(2)設(shè)計(jì)濕度傳感器;(3)設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)的硬件電路;(4)采集系統(tǒng)軟件設(shè)計(jì)與編程。2系統(tǒng)總體設(shè)計(jì)2.1系統(tǒng)特點(diǎn)本系統(tǒng)實(shí)時(shí)采集外界溫度和濕度信號(hào),并送單片機(jī)處理,處理結(jié)果送LED顯示,用戶通過(guò)鍵盤設(shè)定上限值后,報(bào)警電路對(duì)外界溫、濕度進(jìn)行監(jiān)控。特點(diǎn):(1)用數(shù)字式溫度傳感器,與單片機(jī)接口簡(jiǎn)單,可靠。(2)采用的濕度傳感器輸出頻率信號(hào),便于單片機(jī)采集和處理。(3)看門狗電路,提高系統(tǒng)可靠性。(4)E2ROM保存鍵盤輸入?yún)?shù),掉電不丟失信息。2.2系統(tǒng)設(shè)計(jì)在系統(tǒng)上電后,溫、濕度傳感器開始實(shí)時(shí)采集溫、濕度數(shù)據(jù)并顯示出來(lái),直到操作者按下“設(shè)定”鍵。此時(shí)系統(tǒng)停止采集數(shù)據(jù),操作者可以通過(guò)鍵盤設(shè)定溫度和濕度的上限,系統(tǒng)會(huì)立即把設(shè)定值通過(guò)數(shù)碼管顯示出來(lái)。操作者按下“運(yùn)行”鍵后,系統(tǒng)會(huì)把數(shù)碼管顯示的上限存入E2R0M中,接著才又開始采集溫濕度數(shù)據(jù),并在每一次采集之后立即將其分別與存于E2ROM中的溫濕度上限作比較。一旦采集的數(shù)據(jù)高于上限,就啟動(dòng)報(bào)警電路報(bào)警;若沒(méi)有超過(guò)上限,則又重復(fù)上述過(guò)程。在采集的數(shù)據(jù)顯示過(guò)程中可以重新設(shè)定報(bào)警值。系統(tǒng)以AT89C51單片機(jī)為核心,由溫濕度數(shù)據(jù)采集、鍵盤顯示、看門狗定時(shí)器、E2ROM及報(bào)警電路組成。2.2.1數(shù)據(jù)采集系統(tǒng)1.溫度傳感器目前在市面上有各式各樣的溫濕度傳感器。這里采用的溫度傳感器是美國(guó)Dallas公司開發(fā)出的DS18B20單線數(shù)字溫度傳感器°DS18B20可以把溫度信號(hào)直接轉(zhuǎn)換為數(shù)字量,而無(wú)須A/D轉(zhuǎn)換器與數(shù)據(jù)調(diào)理電路,既簡(jiǎn)化電路,又提高電路的可靠性。采用單總線原理,易于電路擴(kuò)展,只需在相應(yīng)單總線上繼續(xù)掛接器件即可,是現(xiàn)代集成式溫度傳感器的首選器件。此設(shè)計(jì)將DS18B20的數(shù)據(jù)線接到89C51的P1.0口進(jìn)行數(shù)據(jù)輸入輸出。2.濕度傳感器設(shè)計(jì)中采用的濕度敏電容是HS1101,將其置于555振蕩電路就構(gòu)成濕度傳感器,可以得到與環(huán)境相對(duì)濕度成比例關(guān)系的頻率信號(hào),將此數(shù)字信號(hào)可直接接入89C51的T1計(jì)數(shù)器計(jì)數(shù)。同時(shí)把TO設(shè)定為1秒的定時(shí)器,89C51每隔1秒鐘處理一次T1計(jì)得的數(shù),此數(shù)才是所需要的頻率。2.2.2鍵盤顯示系統(tǒng)本系統(tǒng)采用HD7279A完成數(shù)據(jù)輸入與數(shù)據(jù)顯示。HD7279A是一片具有串行接口的,可同時(shí)驅(qū)動(dòng)8位共陰極數(shù)碼管的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)能對(duì)多達(dá)8X8的鍵盤矩陣的按鍵情況進(jìn)行監(jiān)視,具有自動(dòng)消除鍵抖動(dòng)并識(shí)別按鍵代碼的功能,從而可以提高CPU工作的效率。HD7279A和微處理器之間采用串行接口,其接口電路和外圍電路簡(jiǎn)單,占用的串口少,具有較高的性能價(jià)格比。2.2.3看門狗電路及E2ROM這里選用了Xicor公司生產(chǎn)的可編程看門狗監(jiān)控E2ROM芯片X25045。此芯片把看門狗電路、電壓監(jiān)控和E2ROM組合在一起,降低了系統(tǒng)成本并減少了對(duì)電路板空間的要求??撮T狗定時(shí)器對(duì)主控機(jī)提供了一個(gè)獨(dú)立的保護(hù)機(jī)制,一旦單片機(jī)因干擾而程序走失,可通過(guò)復(fù)位電路使單片機(jī)復(fù)位,保證系統(tǒng)可靠運(yùn)行。X25O45中的E2ROM存儲(chǔ)DS18B2O的序列號(hào)和用戶設(shè)定的上限,保證掉電時(shí)不丟失信息,這樣也不必每次接上電源時(shí)重新寫入數(shù)據(jù)。2.2.4報(bào)警電路本電路完成系統(tǒng)報(bào)警功能,即在溫、濕度超出報(bào)警值時(shí),對(duì)應(yīng)于溫、濕度傳感器的各個(gè)相應(yīng)發(fā)光二極管燈亮,同時(shí)蜂鳴器蜂鳴,顯示報(bào)警狀態(tài)。3硬件電路設(shè)計(jì)數(shù)據(jù)采集部分由單片機(jī)AT89C51、溫度傳感器DS18B20、和濕度傳感器HS1101等組成。具體的電路圖如下圖3-1所示。00>QS0口罔SMQGAA口{>I"s>一陰困創(chuàng)UUAEEH-ITH網(wǎng)〔口一〕〔匚色〔呂色QIMI1〕Qxaj一也cldd廚200>QS0口罔SMQGAA口{>I"s>一陰困創(chuàng)UUAEEH-ITH網(wǎng)〔口一〕〔匚色〔呂色QIMI1〕Qxaj一也cldd廚2寸訂由圖可見(jiàn),DS18B20的數(shù)據(jù)線直接與89C51的P1.0連接;S1101和TLC555等構(gòu)成振蕩電路,輸出的是頻率信號(hào),接入T1口計(jì)數(shù);而X25045的八個(gè)管腳分別與89C51的P1.4?P1.7口連接。整個(gè)數(shù)據(jù)采集電路簡(jiǎn)單可靠。3.1單片機(jī)AT89C51AT89C51是由ATMEL公司在MCS-51單片機(jī)的基礎(chǔ)上設(shè)計(jì)生產(chǎn)的高性能八位單片機(jī)。1.特點(diǎn)?AT89C51與MCS-51系列的單片機(jī)在指令系統(tǒng)和引腳上完全兼容?片內(nèi)有4K字節(jié)在線可重復(fù)編程快擦寫程序存儲(chǔ)器?全靜態(tài)工作,工作范圍:OHz?24MHz?三級(jí)程序存儲(chǔ)器加密?128X8位內(nèi)部RAM?32位雙向輸入輸出線?兩個(gè)十六位定時(shí)器/計(jì)數(shù)器?五個(gè)中斷源,兩級(jí)中斷優(yōu)先級(jí)?一個(gè)全雙工的異步串行口?間歇和掉電工作方式2.功能描述AT89C51是一種低損耗、高性能、CMOS八位微處理器,片內(nèi)有4K字節(jié)的在線可重復(fù)編程快擦快寫程度存儲(chǔ)器,能重復(fù)寫入/擦除解1000次,數(shù)據(jù)保存時(shí)間為十年。它與MCA-51系列單片機(jī)在指令系統(tǒng)和引腳上完全兼容,不僅可完全代替MCS-51系列單片機(jī),而且能使系統(tǒng)具有許多MCS-51系列產(chǎn)品沒(méi)有的功能。AT89C51可構(gòu)成真正的單片機(jī)最小應(yīng)用系統(tǒng),縮小系統(tǒng)體積,增加系統(tǒng)的可靠性,降低了系統(tǒng)成本。只要程序長(zhǎng)度小于4K,四個(gè)I/O口全部提供給用戶??捎?V電壓編程,而且擦寫時(shí)間僅需10毫秒,僅為8751/87C51的擦除時(shí)間的百分之一,與8751/87C51的12V電壓擦寫相比,不易損壞器件,沒(méi)有兩種電源的要求,改寫時(shí)不拔下芯片,適合許多嵌入式控制領(lǐng)域。工作電壓范圍寬

2.7V?6V,全靜態(tài)工作,工作頻率寬,在0Hz?24MHz內(nèi),比8751/87C51等51系列的6MHz?12MHz更具有靈活性,系統(tǒng)能快能慢。AT89C5l芯片提供三級(jí)程序存儲(chǔ)器加密,提供了方便靈活而可靠的硬加密手段,能完全保證程序或系統(tǒng)不被仿制。另外,AT89C51還具有MCS-51系列單片機(jī)的所有優(yōu)點(diǎn)。128X8位內(nèi)部RAM,32位雙向輸入輸出線,兩個(gè)十六位定時(shí)/計(jì)時(shí)器,5個(gè)中斷源,兩級(jí)中斷優(yōu)先級(jí),一個(gè)全雙工異步串行口及時(shí)鐘發(fā)Z-PW.A^r生器等。3.管腳功能AT89C51單片機(jī)為40引腳芯片,如下圖3-2所示。r..匚jJ-.!匚匸宀3匚卩I、r卩門匚幾f匚■],.rLrstcRXDPi-.匚TXDPji匚凡:匚尺二巴』匸S&、c1I!—匸P4Bc■R[l】l:匚XTAL?CX:A1.:C八::匸麗37

:沁麗37

:沁J43:

:W

朗2?F4Jr^..j(Anc}i\.■;adj;凡i<AL12)平心臨口卩訂*arj4)口P?,:i'■AD5)□Po.?(AD6)二HA/Kpp^AI.E.-PRUG口Fsen口宀.-(A15;二I門』/<4;Pf■〔人⑶Pf<(AJ2)IVJCAII)Pi.jfAlO)P2o<AS)I/O口線:PO、Pl、P2、P3共四個(gè)八位口。P0口是三態(tài)雙向口,通稱數(shù)據(jù)總線口,因?yàn)橹挥性摽谀苤苯佑糜趯?duì)外部存儲(chǔ)器的讀/寫操作。PO口也用以輸出外部存儲(chǔ)器的低8位地址。由于是分時(shí)輸出,故應(yīng)在外部加鎖存器將此地址數(shù)據(jù)鎖存,地址鎖存信號(hào)用ALE。Pl口是專門供用戶使用的I/O口,是準(zhǔn)雙向口。P2口是從系統(tǒng)擴(kuò)展時(shí)作高8地址線用。不擴(kuò)展外部存儲(chǔ)器時(shí),P2口也可以作為用戶I/O口線使用,是準(zhǔn)雙向口。P3口是雙功能口,該口的每一位均可獨(dú)立地定義為第一I/O功能或第二I/O功能,作為第一功能使用時(shí)操作同P1口。P3口的第二功能見(jiàn)表3-1。(2)控制口線:PSE?。ㄆ馊】刂疲?、ALE(地址鎖存控制)、ET(片外儲(chǔ)器選擇)、RST(復(fù)位控制)。(3)電源及時(shí)鐘:VCC,GND;XTAL1,XTAL2。表3-1P3口的第二功能第一功能標(biāo)記第二功能P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2INTO外部中斷0輸入P3.3INT1外部中斷1輸入P3.4T0定時(shí)/計(jì)數(shù)器0外部輸入P3.5T1定時(shí)/計(jì)數(shù)器1外部輸入P3.6WD外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7RD外部數(shù)據(jù)存儲(chǔ)器讀選通3.2數(shù)字溫度傳感器DS18B20測(cè)溫器件常用的有電阻式、熱電偶式、PN結(jié)型、輻射型及石英諧振型,還有集成式等。它們都是基于溫度變化引起其物理參數(shù)(如電阻值,熱電勢(shì)等)的變化的原理。隨著測(cè)量技術(shù)的不斷發(fā)展,出現(xiàn)了適用于高溫、強(qiáng)磁場(chǎng)干擾等惡劣環(huán)境的光纖溫度傳感器。其中,我們常用的溫度傳感器有電阻式溫度傳感器,熱電偶溫度傳感器和集成式溫度傳感器等。其中,集成溫度傳感器利用PN結(jié)的溫度特性,與熱敏電阻、熱電偶等其它溫度傳感器相比,具有靈敏度高、線性度好、響應(yīng)速度快等特點(diǎn);另外,它將驅(qū)動(dòng)電路、信號(hào)處理電路以及必要的邏輯控制電路集成在單片機(jī)上,有尺寸小、使用方便等特點(diǎn)。現(xiàn)代的溫度傳感器都將恒流源、放大電路、補(bǔ)償電路集成在一起做成集成溫度傳感器,集成溫度傳感器的輸出形式有:模擬輸出、邏輯輸出和數(shù)字輸出。模擬輸出型溫度傳感器的輸出電壓或電流隨溫度的變化呈線性變化關(guān)系,可理想地取代熱電偶。這種溫度傳感器常用于溫度測(cè)量、溫度補(bǔ)償?shù)认到y(tǒng),例如:LCD的對(duì)比度通常隨溫度的變化而改變,為保持恒定的對(duì)比度,可采用溫度傳感器的測(cè)量值對(duì)LCD的偏置電壓加以調(diào)整;另外,在數(shù)字相機(jī)中,常用模擬輸出溫度傳感器補(bǔ)償“自動(dòng)聚焦”參數(shù)隨溫度的變化量。邏輯輸出型溫度傳感器結(jié)構(gòu)比較簡(jiǎn)單,且成本較低,主要用于溫度控制系統(tǒng)。數(shù)字輸出型溫度傳感器一般帶有串行接口,可以與微處理器或其它數(shù)字系統(tǒng)直接進(jìn)行數(shù)據(jù)交換,用于CPU、智能電池的監(jiān)測(cè)和其它溫度測(cè)量系統(tǒng)。目前常用的集成式溫度傳感器有電流型輸出的AD590和數(shù)字式輸出的DS18B20溫度傳感器。為便于單片機(jī)操作,本設(shè)計(jì)采用了數(shù)字輸出的DS18B20溫度傳感器。3.2.1DS18B201.概述由單片機(jī)集成電路構(gòu)成的單線數(shù)字溫度傳感器由于其外圍電路結(jié)構(gòu)簡(jiǎn)單,使用方便,開發(fā)成本底,開發(fā)周期短而得到很廣泛的應(yīng)用。以前的溫度傳感器大都輸出的是模擬信號(hào),不能直接送入單片機(jī)等微處理器進(jìn)行測(cè)量,而且要做多點(diǎn)測(cè)量十分麻煩,所以在多點(diǎn)溫度測(cè)量中得不到廣泛的應(yīng)用。美國(guó)Dallas公司開發(fā)出的DS18B20單線數(shù)字溫度傳感器具有與一般模擬溫度傳感器相當(dāng)?shù)臏y(cè)量范圍和精度,輸出直接表示溫度值的12位(二進(jìn)制)數(shù)字。由于DS18B20具有全球唯一的序列號(hào),故一根總線可以掛接任意多個(gè)DS18B20。DS18B20有數(shù)據(jù)總線供電和外部電源供電兩種供電方式,可以非常方便地構(gòu)成單線多點(diǎn)溫度測(cè)量系統(tǒng)。DS18B20為一單總線的數(shù)字溫度傳感器,可提供9?12位(二進(jìn)制)的數(shù)據(jù)來(lái)指示傳感器的溫度。數(shù)據(jù)信息從DS18B20之間只需一根數(shù)據(jù)線(和地線)連接即可。若采用外部電源供電方式只需三條線即可。因?yàn)槊恳黄珼S18B20具有全球唯一的序列號(hào),所以任意多個(gè)DS18B20可共享同一數(shù)據(jù)線。DS18B20的測(cè)溫范圍從一55°C?+125°C,在一10?85°C之間的精度達(dá)土1/2°C,在整個(gè)測(cè)量范圍內(nèi)具有±2°C的測(cè)量精度。2.主要特性

?單線接口,只需一根口線與CPU連接?不需要外部元件,不需要備份電源,可用數(shù)據(jù)供電?支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的單總線上?溫度測(cè)量范圍從一50°C?125°C?通過(guò)編程可實(shí)現(xiàn)1/2?1/16的四級(jí)精度轉(zhuǎn)換?在93.75ms和750ms內(nèi)將溫度值轉(zhuǎn)化9位和12位的數(shù)字量?用戶可自設(shè)定非易失的報(bào)警上下限值?報(bào)警搜索命令可以識(shí)別哪片DS18B20超限?芯片本身帶有命令集和存儲(chǔ)器3.引腳及說(shuō)明DS18B20的引腳和說(shuō)明見(jiàn)圖3—3DS18B20的引腳和說(shuō)明見(jiàn)圖3—3。GND地DQ數(shù)據(jù)輸入輸出VDD電源電壓NC不連接圖3—3圖形及引腳說(shuō)明3.2.2內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)如圖3—4所示。DS18B20有三個(gè)主要的數(shù)據(jù)部件:(1)64位激光ROM;(2)溫度敏感元件;(3)非易失性溫度告警觸發(fā)器TH和TL。DS18B20的電源可以由數(shù)據(jù)線本身提供,但是在有些特定的應(yīng)用環(huán)境中,要求溫度的測(cè)量盡量快些,因此一般都采用外部電源供電方式。

圖3-4DS18B20內(nèi)部結(jié)構(gòu)框圖3.2.3測(cè)溫原理DS18B20的測(cè)溫原理如圖3-5所示。低溫系數(shù)振蕩器輸出的時(shí)鐘脈沖信號(hào)通過(guò)由高溫系數(shù)振蕩器產(chǎn)生的門開通周期而被計(jì)數(shù),通過(guò)該計(jì)數(shù)值來(lái)測(cè)量溫度。計(jì)數(shù)器被預(yù)置為與一55°C對(duì)應(yīng)的一個(gè)基數(shù)值,如果計(jì)數(shù)器在高溫系數(shù)振蕩器輸出的門周期結(jié)束前計(jì)數(shù)到零,表示測(cè)量的溫度高于一55C,被預(yù)置在一55C的溫度寄存器的值就增加一個(gè)增量,同時(shí)為了補(bǔ)償溫度振蕩器的拋物線特性,計(jì)數(shù)器被斜率累加器所決定的值進(jìn)行預(yù)置,時(shí)鐘再次使計(jì)數(shù)器計(jì)數(shù)直至零,如果開門通時(shí)間仍未結(jié)束,那么重復(fù)此過(guò)程,直到高溫度系數(shù)振蕩器的門周期結(jié)束為止。這時(shí)溫度寄存器中的值就是被測(cè)的溫度值。圖3-5DS18B20的測(cè)溫原理圖3?2.464位激光ROM每一個(gè)DS18B20包括一個(gè)唯一的64位ROM編碼。開始8位是單線產(chǎn)品系列編碼,接著的48位是每個(gè)器件唯一的序列號(hào),最后8位是前56位的CRC校驗(yàn)碼。64位ROM和ROM操作控制部分允許DS18B20作為一個(gè)單線器件工作并遵循單線協(xié)議。直到ROM操作協(xié)議被滿足,DS18B20控制部分的功能是不可訪問(wèn)的。64位ROM結(jié)構(gòu)如下所示:

8位校CRC編號(hào)48位序列號(hào)8位產(chǎn)品系列編號(hào)MSBLSBMSBLSBMSBLSB3.2.5存貯器DS18B20的存貯器如下圖所示。存貯器由一個(gè)高速暫存(便簽式)RAM和一個(gè)非易失性,電可擦除E2RAM組成,后者存貯高溫度和低溫度觸發(fā)器TH和TL。暫存存貯器有助于在單線通信時(shí)確保數(shù)據(jù)的完整性。數(shù)據(jù)首先寫入暫存存貯器,在那里它可以被讀回。當(dāng)數(shù)據(jù)被校驗(yàn)之后,復(fù)制暫存存貯器的命令把數(shù)據(jù)傳送到非易失性E2RAM,這一過(guò)程確保了更改存貯器時(shí)數(shù)據(jù)的完整性。明BYTE0123456明E2明E2RAM包括溫度信息(1、2字節(jié))、TH和TL值(3、4字節(jié))、計(jì)數(shù)寄存器(7、8字節(jié))、CRC(9字節(jié)),第5、6字節(jié)不用。設(shè)置寄存器的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,該字節(jié)每位的意義如下:TMR1R011111其中R1和R2用來(lái)設(shè)置分辨率,DS18B20在出廠時(shí)被設(shè)置為12位。3.2.6溫度表示此處DS18B20用12位存貯溫度值,最高位為符號(hào)位。下圖為18B20的溫度存儲(chǔ)方式,負(fù)溫度S=1,正溫度S=0。溫度轉(zhuǎn)換命令使溫度轉(zhuǎn)換發(fā)生,數(shù)值存儲(chǔ)在暫存存儲(chǔ)器中,溫度讀數(shù)以16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供。

MSBDS18B20輸出數(shù)據(jù)與溫度的對(duì)應(yīng)關(guān)系見(jiàn)表3-2。表3-2輸出數(shù)據(jù)與溫度的對(duì)應(yīng)關(guān)系溫度溫度數(shù)據(jù)輸出(2進(jìn)制)溫度數(shù)據(jù)輸出(16進(jìn)制)125°C000001111101000007D0H85°C00000101010100000550H25.0625C00000001100100010191H10.125C000000001010001000A2H0.5C00000000000010000008H0C00000000000000000000H—0.5C1111111111111000FFF8H—10.125C1111111101011110FF5EH—25.062C1111111001101111FF6FH—55C1111110010010000FC90H3.2.7ROM操作命令一旦總線主機(jī)檢測(cè)到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長(zhǎng),如表3—3所示。3.2.8存儲(chǔ)器操作命令對(duì)DS18B20內(nèi)部的可擦寫數(shù)據(jù)存儲(chǔ)器的操作也有自己的命令,具體功能如表3—4所示。3.2.9工作原理及時(shí)序由于DS18B20是單總線的數(shù)字溫度傳感器,所有的數(shù)據(jù)讀出與寫入都經(jīng)過(guò)DQ這根總線,要求操作嚴(yán)格按時(shí)序進(jìn)行才不會(huì)導(dǎo)致出錯(cuò)。DS18B20主要有以下三個(gè)操作:初始化,序列號(hào)訪問(wèn)命令和內(nèi)存訪問(wèn)命令

表3-3ROM操作命令指令說(shuō)明讀ROM(33H)在總線上僅有一個(gè)DS18B20時(shí),允許總線主機(jī)讀出其序列號(hào)匹配ROM(55H)后繼以64位的ROM數(shù)據(jù)序列,允許總線主機(jī)對(duì)單點(diǎn)及多點(diǎn)總線上特定的DS18B20尋址,只有與64位ROM序列嚴(yán)格相符的DS18B20才能對(duì)后繼的存儲(chǔ)器操作命令做出響應(yīng)。所有與64位ROM序列號(hào)不符的從片將等待復(fù)位脈沖。跳過(guò)ROM(CCH)在單點(diǎn)總線系統(tǒng)中,允許主機(jī)不提供64位ROM編碼而訪問(wèn)寄存器搜索ROM(F0H)允許總線主機(jī)使用一種“消去”處理來(lái)識(shí)別總線上所有從片的64位ROM編碼報(bào)警搜索(ECH)僅溫度越限的器件對(duì)此命令做出響應(yīng)表3-4存儲(chǔ)器操作命令指令說(shuō)明約定代碼發(fā)出約定代碼后單總線的操作溫度變換啟動(dòng)溫度變換44h等待750ms讀暫存存儲(chǔ)器從暫存存儲(chǔ)器讀子節(jié)BEh讀9字節(jié)數(shù)據(jù)寫暫存存儲(chǔ)器寫字節(jié)至?xí)捍娲鎯?chǔ)器地址2到4處(TH和TL溫度觸發(fā)器和配置)4Eh寫數(shù)據(jù)至地址2至4二個(gè)字節(jié)復(fù)制暫存存儲(chǔ)器把暫存存儲(chǔ)器復(fù)制入非易失性存儲(chǔ)器(僅地址2—4)43h讀復(fù)制狀態(tài)重新調(diào)出E2把儲(chǔ)存在非易失性存儲(chǔ)器內(nèi)的數(shù)值重新調(diào)入暫存存儲(chǔ)器E3h讀溫度忙狀態(tài)讀電源發(fā)DS18B20電源方式的信號(hào)至主機(jī)B4h讀電源狀態(tài)

(1)初始化:主機(jī)通過(guò)信號(hào)線,向DS18B20發(fā)送480?960》S的負(fù)脈沖,在15?60》S后,DS18B20發(fā)出60?240》S的應(yīng)答脈沖,就準(zhǔn)備接受主機(jī)傳送的訪問(wèn)ROM的命令。(2)序列號(hào)訪問(wèn)命令:接下來(lái),用戶通過(guò)信號(hào)線,發(fā)送一個(gè)特定的64位序列號(hào)編碼,信號(hào)線上的DS18B20都進(jìn)行編碼匹配,只有編碼一致的DS18B20才被激活,可以接受下面的內(nèi)存訪問(wèn)命令;(3)內(nèi)存訪問(wèn)命令:在DS18B20被復(fù)位后,主機(jī)就對(duì)其進(jìn)行內(nèi)存訪問(wèn),讀取溫度數(shù)據(jù),設(shè)定溫度報(bào)警限等。DS18B20工作過(guò)程中的協(xié)議為:初始化(發(fā)復(fù)位脈沖)一發(fā)ROM功能命令一發(fā)存儲(chǔ)器操作命令一處理數(shù)據(jù)。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行,協(xié)議由幾種單線上信號(hào)類別型組成:復(fù)位脈沖、存在脈沖、寫0、寫1、讀0和讀1。所有這些信號(hào),除了存脈沖外,均由總線主機(jī)產(chǎn)生。MASTERTaRESETPULSEDS1SB2Owaits1呂寫葉^一^MASTERR.;miinimum—minimumDS1SB20T,LIMEMASTERTaRESETPULSEDS1SB2Owaits1呂寫葉^一^MASTERR.;miinimum—minimumDS1SB20T,LIMETYPELEGENDBuemaEterpullinglawDS18B2OpullinglowResistorpullupVPU1-WIREBUSGND圖3-6初始化過(guò)程“復(fù)位和存在脈沖”主機(jī)總線向DS18B20發(fā)送一個(gè)復(fù)位脈沖(480》S?960》S的低電平信號(hào)),然后釋放總線并進(jìn)入接受狀態(tài),DS18B20在檢測(cè)到總線的上升沿之后,等待15?60》S,接著發(fā)送存在脈沖(低電平,持續(xù)60?240》S)。2.讀/寫時(shí)間片

通過(guò)使用時(shí)間片來(lái)讀出和寫入DS18B20的數(shù)據(jù),時(shí)間片用于處理數(shù)據(jù)位和指定進(jìn)行何種操作的命令字。讀/寫時(shí)序圖見(jiàn)圖3-7。START

£>FSLOTVPU1-WHREBUSGND——S~AR~OFSLOTDG1SB20SamplesMINSTART

£>FSLOTVPU1-WHREBUSGND——S~AR~OFSLOTDG1SB20SamplesMINTVPMAXDS1SB20SamplesMINTYP+1SipsLINETYPELEGENDSus鳥11噸嚴(yán)讀/寫時(shí)寸^序恪申”呃1Riesis-torpullup?寫時(shí)間片當(dāng)主機(jī)將數(shù)據(jù)線從高拉到低時(shí),產(chǎn)生寫時(shí)間片,有寫0和寫1兩種。寫時(shí)間片開始時(shí),DS18B20在15?60pS期間進(jìn)行采樣,如果I/O線為高電平,寫1就發(fā)生;如果線為低電平,便發(fā)生寫0。在各寫周期之間必須有最短為1mS的恢復(fù)時(shí)間。對(duì)于主機(jī)產(chǎn)生寫1時(shí)間片的情況,數(shù)據(jù)線必須先被拉至邏輯低電平,然后就被釋放,使數(shù)據(jù)線在寫時(shí)間片開始之后的15mS之內(nèi)被拉至高電平。對(duì)于主機(jī)產(chǎn)生寫0時(shí)間片的情況,;數(shù)據(jù)線必須被拉至邏輯低電平且至少保持60pS。?讀時(shí)間片當(dāng)從DS18B20讀數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。當(dāng)主機(jī)將數(shù)據(jù)線從邏輯高電平拉至低電平時(shí),產(chǎn)生讀時(shí)間片。數(shù)據(jù)線必須保持在低邏輯電平至少1ps.

來(lái)自DS18B20的輸出數(shù)據(jù)在讀時(shí)間片下降沿之后15微秒有效。因此,為了讀出從讀時(shí)間片開始算起15微秒的狀態(tài)主機(jī)必須停止把I/O引腳驅(qū)動(dòng)至低電平。在讀時(shí)間片結(jié)束時(shí),I/O引腳經(jīng)過(guò)外部的上拉電阻回至高電平。每個(gè)讀周期最短的持續(xù)期為60ps,各個(gè)讀周期之間也必須有1ps以上的高電平恢復(fù)期。3.3濕度傳感器測(cè)量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周圍的空氣中吸收水分后引起的物理或化學(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周圍空氣的濕度。氣體物質(zhì)的濕度有幾種表示方法:絕對(duì)濕度、相對(duì)濕度和露點(diǎn)溫度。其中與生產(chǎn)生活直接有關(guān)的是相對(duì)濕度。常用的檢測(cè)方法有:毛發(fā)濕度計(jì)、干濕球濕度計(jì)、露點(diǎn)法、氯化鋰濕敏元件、碳粒樹脂濕敏元件、氧化鐵濕敏膜元件、多孔陶瓷濕敏元件和高分子膜濕敏電容。電容式、電阻式和濕漲式濕敏元件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測(cè)量的。本設(shè)計(jì)選用HS1101濕敏電容與TLC555等構(gòu)成濕度傳感器。3.3.1HS1101特點(diǎn)圖3-8HS1101圖3-8HS1101外形圖?高可靠性與長(zhǎng)時(shí)間穩(wěn)定性?適合線性電壓與輸出回路?不需校準(zhǔn)的完全互換性,快速響應(yīng)時(shí)間HS1101為側(cè)面接觸封裝產(chǎn)品,適用于線性電壓輸出和頻率輸出兩種電路,可應(yīng)用于濕度變送器、濕度儀表、濕度控制器及其它需要濕度,適宜于制造流水線上的自動(dòng)插件和自動(dòng)裝配過(guò)程等。右圖3-8為HS1101的外形圖,HS1101的特性參數(shù)見(jiàn)表3-5。

表3-5HS1101的特性參數(shù)特性參數(shù)典型值單位濕度測(cè)量范圍1?99%RH供電電壓5V標(biāo)稱電容@55%RH180Pf溫度系數(shù)0.04Pf/°C33-75%的平均靈敏度0.34Pf/%RH漏電流1Na150小時(shí)結(jié)露后恢復(fù)時(shí)間10S濕度遲滯±1.5%長(zhǎng)時(shí)間穩(wěn)定性0.5%RH/yr響應(yīng)時(shí)間5S偏離曲線±2%RH工作溫度-40?100C儲(chǔ)存溫度一40?125C圖3-9為濕敏電容工作的溫、濕度范圍,圖3-10為濕度-電容響應(yīng)曲線。-40-20-40-20020406060100<囪蕃霍圖3-9濕敏電容工作的溫、濕度范圍圖3-10濕度—電容響應(yīng)曲線相對(duì)濕度在0%?100%RH范圍內(nèi);電容量由162PF變到200PF,其誤差不大于±2%RH;響應(yīng)時(shí)間小于5S;溫度系數(shù)為0.04PF/°C,可見(jiàn)精度是較高的。3.3.2濕度測(cè)量電路HS1100/HS1101電容傳感器,在電路構(gòu)成中等效于一個(gè)電容器件,其電容量隨著所測(cè)空氣濕度的增大而增大。如何將電容的變化量準(zhǔn)確地轉(zhuǎn)變?yōu)橛?jì)算機(jī)易于接受的信號(hào),常用兩種方法:一是將該濕敏電容置于運(yùn)放與阻容組成的橋式振蕩電路中,所產(chǎn)生的正弦波電壓信號(hào)經(jīng)整流、直流放大、再A/D轉(zhuǎn)換為數(shù)字信號(hào);另一種是將該濕敏電容置于555振蕩電路中,將電容值的變化轉(zhuǎn)為與之呈反比的電壓頻率信號(hào),可直接被計(jì)算機(jī)所采集。我采用第二種方法。頻率輸出的555測(cè)量振蕩電路如圖3-11所示。集成定時(shí)器555芯片外接電阻R4、R2與濕敏電容C(這里的HS11XX指HS1101),構(gòu)成了對(duì)C的充電回路。7端通過(guò)芯片內(nèi)部的晶體管對(duì)地短路又構(gòu)成了對(duì)C的放電回路,并將引腳2、6端相連引入到片內(nèi)比較器,便成為一個(gè)典型的多諧振蕩器,即方波發(fā)生器。另外,R3是防止輸出短路的保護(hù)電阻,R1用于平衡溫度系數(shù)。由于Fout端的電壓在0?5V之間,因此可以直接將與89C51的T1口連接。T1口作為計(jì)數(shù)器,它計(jì)得的數(shù)值是與環(huán)境相對(duì)濕度成反比的16進(jìn)制的頻率(相對(duì)濕度與頻率的對(duì)應(yīng)關(guān)系見(jiàn)表3-6)。

Sg如2HSllxxTLCS554S.9kQ7Sg如2HSllxxTLCS554S.9kQ7¥T岳[]科T局——隘y576kR圖3-11555測(cè)量振蕩電路該振蕩電路兩個(gè)暫穩(wěn)態(tài)的交替過(guò)程如下:首先電源Vs通過(guò)R4、R2向HS1101充電,經(jīng)充電時(shí)間后,Uc達(dá)到芯片內(nèi)比較器的高觸發(fā)電平,約0.67VS,此時(shí)輸出引腳3端由高電平突降為低電平,然后通過(guò)R2放電,經(jīng)t放電時(shí)間后,Uc下降到比較器的低觸發(fā)電平,約0.33VS,此時(shí)輸出引腳3端又由低電平躍升為高電平。如此翻來(lái)覆去,形成方波輸出。其中,充放電時(shí)間為:t充電=C(R4+R2)ln2t放電=CR2ln2因而,輸出的方波頻率為:f=1/(t充電+t放電)二1/[C(R4+2R2)ln2]]可見(jiàn),空氣濕度通過(guò)555測(cè)量振蕩電路就轉(zhuǎn)變?yōu)榕c之呈反比的頻率信號(hào)表3-6給出了其中的一組典型測(cè)試值。表3-6輸出頻率與相對(duì)濕度的對(duì)應(yīng)關(guān)系濕度頻率濕度頻率(%RH)(HZ)(%RH)(HZ)0735160660010722470642820710080633030697690618640685310060335067283.3.3濕度傳感器的標(biāo)定濕度傳感器的感濕特征量與環(huán)境氣相濕度之間并不存在固有的定量關(guān)系,感濕特征量的測(cè)量值也不可能直接表征環(huán)境氣相濕度的確切數(shù)值。因此,濕度傳感器必須經(jīng)過(guò)定量標(biāo)定,方可使用。目前,相對(duì)濕度的標(biāo)定有干濕球法、飽和鹽溶液法、雙壓法、雙溫法等,我采用靜態(tài)標(biāo)定的飽和鹽溶液法。此方法可提供工作標(biāo)準(zhǔn)濕度,在o°c以上對(duì)濕度傳感器進(jìn)行定量標(biāo)定。為此,可把封閉容器中飽和鹽溶液的平衡蒸汽壓作為標(biāo)準(zhǔn)濕度,該濕度的高低,是由飽和鹽溶液的種類和平衡溫度所決定的,見(jiàn)表3-7。這種方法在量程為100%RH時(shí),空氣濕度傳感器的示值誤差小于±5%,分辯率為0.1%。但有幾點(diǎn)需要注意:(1)水和鹽的純度要在分析純以上,水必須用去離子水或蒸餾水。(2)盛飽和溶液的容器必須透明而且不漏氣,使飽和蒸汽不與外部交換。(3)容器能加熱和攪拌,有利于很快制成飽和溶液的蒸汽環(huán)境。表3-7通常使用的5種飽和鹽溶液平衡相對(duì)濕度溫度HFP/%cLiCLMgCL2Mg(N03)NaCLK2S04151233.3±0.355.6±0.375.6±0.297.9±0.7201233.1±0.254.4±0.375.5±0.297.6±0.62511.3±0.332.8±0.252.9±0.375.3±0.297.3±0.53011.3±0.332.4±0.251.4±0.375.1±0.297.0±0.43511.3±0.332.1±0.249.9±0.374.9±0.296.7±0.44軟件設(shè)計(jì)及編程主程序由溫度采集子程序、濕度采集子程序、鍵盤輸入和顯示子程序和報(bào)警子程序組成。本章將列出主程序清單,并詳細(xì)說(shuō)明溫度、濕度采集子程序。1子程序設(shè)計(jì)在主程序之前,先要編寫程序?qū)S18B20的序列號(hào)讀出來(lái)并保存到X25045中去。這樣可以避免每次系統(tǒng)接上電源都得重新讀一次DS18B20的序列號(hào),需要時(shí)只要將存在于X25045中的序列號(hào)調(diào)出就可以了。下面將簡(jiǎn)要說(shuō)明各子程序:讀DS18B20序列號(hào)并保存子程序此子程序?qū)⑾到y(tǒng)使用的唯一一個(gè)DS18B20的序列號(hào)讀出,先存入89C51的內(nèi)部?jī)?chǔ)器30H~38H中,然后再將其保存到X25045的1FFH~207H,避免掉電丟失。以后對(duì)此DS18B20操作,再把它的序列號(hào)從X25045的E^ROM中讀出。溫度采集子程序此子程序完成對(duì)外界溫度的數(shù)據(jù)采集,并把采集到的16進(jìn)制數(shù)轉(zhuǎn)化成10進(jìn)制,保存在89C51的67H里,等待報(bào)警子程序?qū)⑺M(jìn)行處理。89C51先發(fā)出復(fù)位脈沖,在接收到DS18B20的存在脈沖之后,再發(fā)出跳過(guò)命令,溫度轉(zhuǎn)換命令。等待1m后發(fā)序列號(hào)匹配指令、溫度傳感器序列號(hào),然后接收16進(jìn)制的溫度值存放在。濕度采集子程序此子程序完成對(duì)外界相對(duì)濕度對(duì)應(yīng)頻率的數(shù)據(jù)采集,并把采集到的16進(jìn)制數(shù)轉(zhuǎn)化成10進(jìn)制,保存在89C51的5CH和5DH里(4位10進(jìn)制數(shù)),等待報(bào)警子程序?qū)⑺M(jìn)行處理。1212這里用到了89C51的TO和T1,TO作定時(shí)器,T1作計(jì)數(shù)器計(jì)頻率。這里TO用方式1工作,由于采用11.0592MHZ的晶振,定時(shí)時(shí)間t=50ms,定時(shí)常數(shù)TC=2L-foscxt=65536-11059.250=194561212TC轉(zhuǎn)換成16進(jìn)制TCB=4C00H,即TCH=4CH,TCL=OOH。在定時(shí)器TO經(jīng)過(guò)20次中斷后(共定時(shí)IS),T1停止計(jì)數(shù),此時(shí)計(jì)數(shù)器T1計(jì)的數(shù)就是外界相對(duì)濕度對(duì)應(yīng)的頻率(16進(jìn)制數(shù))。4.相對(duì)濕度轉(zhuǎn)化為對(duì)應(yīng)頻率的子程序由于報(bào)警子程序要將用戶設(shè)定的上限與傳感器采集到的數(shù)據(jù)進(jìn)行比較,而濕度傳感器采集到的不是直接的相對(duì)濕度,而是與之成反比的頻率數(shù)據(jù),就有必要把相對(duì)濕度轉(zhuǎn)化成頻率,或是把頻率轉(zhuǎn)化成相對(duì)濕度。從表3-6中可以得出,相對(duì)濕度與頻率是成分段線性反比,設(shè)相對(duì)濕度數(shù)據(jù)為X,頻率為YHz,K是系數(shù),則它們的代數(shù)關(guān)系式是:Y=7351—kX根據(jù)表,可算出相對(duì)濕度在以下范圍時(shí),k值約為:0%?10%:12.710%?50%:12.450%?60%:12.860%?70%:13.270%?80%:13.880%?90%:14.490%?100%:15.3此程序先判斷用戶設(shè)定的相對(duì)濕度是在哪一個(gè)線性范圍,然后再根據(jù)上面給出的代數(shù)式進(jìn)行計(jì)算,得出頻率值。4.2程序流程圖主程序流程圖主程序流程圖如圖4—1所示。中國(guó)礦業(yè)大學(xué)(北京校區(qū))畢業(yè)論文中國(guó)礦業(yè)大學(xué)(北京校區(qū))畢業(yè)論文圖4圖4-1主程序流程圖2I開始丿初始化調(diào)用溫度采集子程序調(diào)用濕度采集子程序顯示采集的溫濕度數(shù)據(jù)調(diào)用報(bào)警子程序YES其它五個(gè)鍵的處理子程序保存報(bào)警值到E2ROM中國(guó)礦業(yè)大學(xué)(北京校區(qū))畢業(yè)論文中國(guó)礦業(yè)大學(xué)(北京校區(qū))畢業(yè)論文222.溫度采集子程序溫度采集子程序如圖4-2所示。3.濕度采集子程序濕度采集子程序如圖4-3所示。開始NO返回在62.5ms內(nèi)TO產(chǎn)生中斷嗎?共產(chǎn)生了20次中斷嗎?YESNOYES將其轉(zhuǎn)化成10進(jìn)制放入5CH和5DH關(guān)中斷將T1計(jì)的數(shù)放入50H和51H重設(shè)定時(shí)時(shí)間常數(shù)初始化設(shè)置定時(shí)常數(shù)圖4-3濕度采集子程序4.讀、存DS18B20序列號(hào)子程序讀、存DS18B20序列號(hào)子程序如圖4-4所示。圖4-4讀、存DS18B20序列號(hào)子程序相對(duì)濕度轉(zhuǎn)化為對(duì)應(yīng)頻率的子程序相對(duì)濕度轉(zhuǎn)化為對(duì)應(yīng)頻率的子程序如圖4-5所示。

圖4-5相對(duì)濕度轉(zhuǎn)化為對(duì)應(yīng)頻率的子程序

4.3程序清單主程序;******************************************************************;端口設(shè)置和參數(shù)設(shè)置;******************************************************************ORGAJMPORGAJMP0000HMAINCSBITP0.4;HD7279初始化DATBITP0.6CLKBITP0.5KEYBITP0.7DQBITP1.0;DS18B20初始化CS25BITP1.4;X25045初始化SO25BITP1.7SI25BITP1.5SCK25BITP1.6DSFBITF0TEMLEQU65HTEMHEQU66HROMIDEQU35H;35H里存放DS的ID地址SKIPDSEQU0CCHSTARTDSEQU44HREADDSEQU0BEHBIT_COUNTEQU70HS_CREQU73H;S-CR存儲(chǔ)閃爍位KEY_NUMBEREQU74H;KEY_NUMBER存儲(chǔ)輸入的數(shù)字DATA_OUTEQU20HDATA_INEQU21HRUNEQU22H;RUN=1指按下運(yùn)行鍵WRENEQU00000110B;設(shè)置X25045寫使能鎖存器WRDIEQU00000100B;復(fù)位X25045寫使能鎖存器RDSREQU00000101B;讀X25045狀態(tài)寄存器WRSREQU00000001B;寫X25045狀態(tài)寄存器READEQU00000011B;讀X250450的000H~0FFHWRITEEQU00000010B;寫到X25045的000H~0FFH

ORG000BHLJMPTT0ORG0010H;******************************************************************;主程序;******************************************************************MAIN:MOVSP,#30HCLRRUN.0MOV60H,#00HMOV61H,#00HMOV62H,#00HMOV63H,#00HMOVP0,#10011111BMOVS_CR,#00HMOVR1,#50MAIN_DELAY:MOVR2,#200MAIN_DELAY1:DJNZR2,MAIN_DELAY1DJNZR1,MAIN_DELAYMOVKEY_NUMBER,#00HMOVDATA_OUT,#10100100BLCALLSENDSETBCSCOLLECT:LCALLID_READ;從X25045取DS的ROM碼到80H?87HLCALLTEMPERLCALLHUMIDITYJBKEY,COLLECTMOVDATA_OUT,#00010101BLCALLSENDLCALLRECEIVESETBCSMOVA,DATA_INCJNEA,#0,COLLECT;不是設(shè)定鍵9就繼續(xù)采集溫度和濕度LCALLKEY_ON0;調(diào)設(shè)定鍵子程序SETBCSLCALLKEY_ON5;調(diào)其它五個(gè)鍵的處理程序

LCALLREMOVE;將62H,63H里設(shè)置的相對(duì)濕度放入58H,;將60H,61H里設(shè)置的溫度放入59HLCALLX25045;將溫濕度上限存入X25045LCALLHUMTOFRELCALLWARNING;調(diào)用報(bào)警子程序LJMPCOLLECT;******************************************************************;溫度采集子程序;******************************************************************TEMPER:SETBLCALLJBAJMPDQINITDSDSF,TSS1TEMPERTSS1:LCALLDELAY64MOVA,#SKIPDSLCALLWRITEDSMOVA,#STARTDS;發(fā)送溫度轉(zhuǎn)換命令LCALLWRITEDSLCALLDELAY1LCALLINITDSJBDSF,TSS2JNBDSF,TSS1TSS2:LCALLDELAY64MOVA,#55H;發(fā)送匹配命令LCALLWRITEDSMOVROMID,#80H;發(fā)送DS18B20的ROM碼地址LCALLT_ID;調(diào)用傳送ROM碼子程序MOVA,#READDS;接受DS采集的溫度LCALLWRITEDSLCALLREADBYTEMOVTEML,ALCALLREADBYTEMOVTEMH,ALCALLDIVE16;采集的溫度的16進(jìn)制放在65H里MOVR0,#65HMOVR1,#67HMOVR7,#01HLCALLT16TO10;把65H里的16進(jìn)制轉(zhuǎn)化為10進(jìn)制

RET;放在67H;******************************************************************;溫度采集初始化子程序;******************************************************************INITDS:CLRDQMOVR0,#0FFHL1:DJNZR0,L1;延時(shí)512》SSETBDQMOVR0,#19H;延時(shí)50》SL2:DJNZR0,L2;其間DS1820發(fā)出存在脈沖MOVR0,#02HINIT0:JNBDQ,INIT1;DQ=0則DS1820存在,轉(zhuǎn)到INTIE1DJNZR0,INIT0;再等待8》SCLRDSF;DQH0則DS1820不存在,清標(biāo)志位JMPINIT2INIT1:SETBDSF;置標(biāo)志位MOVR0,#0D1HDJNZR0,$;延時(shí)420》SINIT2:SETBDQRET;******************************************************************;寫DS1820子程序:各寫0或1周期之間必須有最短為1pS的恢復(fù)時(shí)間;******************************************************************WRITEDS:SETBMOVCLRDQR2,#08HCWR1:CLRDQMOVR3,#06H;延時(shí)16》S,L3:DJNZR3,L3;若寫1,則DQ會(huì)在15》S內(nèi)RRCA;被拉為高電平MOVDQ,CMOVR0,#23H;延時(shí)70》S(60?120》S)L4:DJNZR0,L4;若寫0,則DQ=0至少要60》SSETBDQNOPDJNZR2,WR1SETBDQRET

;*****************************************************************;讀DS1820子程序;******************************************************************READBYTE:MOVR0,#8READ1:LCALLREADBITRRCASETBDQDJNZR0,READ1RET;******************************************************************;讀DS18B20位子程序;******************************************************************READBIT:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR1,#8RD5:DJNZR1,RD5;延時(shí)16》SMOVC,DQ;讀一位MOVR1,#20RD6:DJNZR1,RD6;延時(shí)40》SRET;******************************************************************;發(fā)送DS18B20的ROM碼子程序;******************************************************************T-ID:PUSHA;保護(hù)A的內(nèi)容MOVDPTR,ROMID;把ROM碼的首地址給DPTRMOVR1,#8;循環(huán)8次,8個(gè)字節(jié)ID0:MOVA,@DPTR;把ROM碼的一個(gè)字節(jié)給ACLRCMOVR2,#8;循環(huán)8次,8位ID1:MOVR7,#8CLRDQ;將數(shù)據(jù)線拉低

ID2:DJNZR7,ID2;延時(shí)16》SRRCAMOVDQ,C;傳送一位給數(shù)據(jù)線SETBDQ;將數(shù)據(jù)線拉高M(jìn)OVR7,#8ID3:DJNZR7,ID3;延時(shí)16》SDJNZR2,ID1;8位移完沒(méi)?沒(méi)移完就返回INCDPTR;移完,將下一個(gè)ROM碼的地址給DPTRDJNZR1,ID0;8個(gè)字節(jié)移完沒(méi)?沒(méi)移完就返回POPA;移完,將A的內(nèi)容彈回RET;******************************************************************;延時(shí)1S子程序;******************************************************************DELAY1:MOVR0,#10DL1:MOVR1,#200DL2:MOVR2,#250DL3:DJNZR2,DL3DJNZR1,DL2DJNZR0,DL1RET;******************************************************************;延時(shí)64卩S子程序;******************************************************************DELAY64:MOVR0,#1EHDL64:DJNZR0,DL64RET;******************************************************************;將得到的16進(jìn)制數(shù)除以16,得到溫度的16進(jìn)制,還是放在65H里;******************************************************************DIVE16:MOVR4,#10HMOVR5,#08HDIV1:CLRCMOVA,65HRLCAMOV65H,AMOVA,66HRLCA

MOV66H,AMOVPSW.5,CCLRCSUBBA,R4JBPSW.5,DIV2JCDIV3DIV2:MOV66H,AINC65HDIV3:DJNZR5,DIV1MOVA,#5CLRCSUBBA,66HJNCDIV4INC66HDIV4:CLRPSW.5RET;******************************************************************;采集與相對(duì)濕度對(duì)應(yīng)的頻率數(shù)據(jù):轉(zhuǎn)化成16進(jìn)制存入5CH,5DH;******************************************************************HUMIDITY:;米集16進(jìn)制頻率數(shù)據(jù),先存放到50H和51H里__?___?111r___.//t.\MOVTMOD,#51H;定時(shí)器T0工作在方式1,MOVTH0,#4CH;計(jì)數(shù)器T1也工作在方式1MOVTL0,#00H;定時(shí)時(shí)間為50msMOVTH1,#00HMOVTL1,#00HMOVIP,#08HMOVR3,#14HSETBP3.5SETBET0SETBET1SETBTR0SETBTR1SETBEAMOVR0,#250;延時(shí)62.5msLL0:MOVR1,#250LL1:DJNZR1,LL1DJNZR0,LL0RET

;******************************************************************;定時(shí)器TO中斷子程序:50ms中斷一次,中斷20次后T1停止計(jì)數(shù);******************************************************************TT0:CLREACLRTR0DJNZR3,LOOPCLRTRMOV50H,TL1MOV51H,TH1LJMPEXIT1LOOP:MOVA,#0B7HADDA,TL0MOVTL0,AMOVA,#3CHADDA,TH0MOVTH0,ASETBTR0SETBRETIEAEXIT1:;將采集的16進(jìn)制頻率轉(zhuǎn)化成10進(jìn)制,放入5CH,5DHMOVR0,#50HMOVR1,#5CHMOVR7,#02HLCALLT16TO10;******************************************************************;16到10進(jìn)制數(shù)的轉(zhuǎn)化子程序;******************************************************************T16TO10:PUSHPSW;保存設(shè)置PUSHACCPUSHBMOVA,R0MOVR5,AMOVA,R1MOVR6,AMOVA,R7INCAMOVR3,ACLRA

TT1:MOV@R1,AINCR1DJNZR3,TT1MOVA,R7MOVB,#08HMULABMOVR3,ATT2:MOVA,R5MOVR0,AMOVA,R7MOVR2,ATT3:MOVA,@R0RLCAMOV@R0,AINCR0DJNZR2,TT3MOVA,R6MOVR1,AMOVA,R7MOVR2,AINCR2TT4:MOVA,@R1ADDCA,@R1DAAMOV@R1,AINCR1DJNZR2,TT4DJNZR3,TT2POPBPOPACCPOPPSWRET;******************************************************************;將62H,63H里設(shè)置的相對(duì)濕度放到58H里,將60H,61H里設(shè)置的溫度放到;59H里;******************************************************************REMOVE:MOVA,63HMOVB,#10

MULABADDA,62HMOV58H,AMOVA,61HMOVB,#10MULABADDA,60HMOV59H,ARET;******************************************************************;此子程序以表3-6為參照,將設(shè)定的相對(duì)濕度轉(zhuǎn)化成對(duì)應(yīng)的頻率;將58H中設(shè)置的相對(duì)濕度轉(zhuǎn)化為對(duì)應(yīng)的頻率,放入56H,57H里;******************************************************************HUMTOFRE:MOVR0,58HMOVA,R0CLRCSUBBA,#10;若設(shè)置的數(shù)在0?10之間則轉(zhuǎn)到TEM10JCTEM10MOVA,R0CLRCSUBBA,#50;若設(shè)置的數(shù)在10?50之間則轉(zhuǎn)到TEM50JCTEM50MOVA,R0CLRCSUBBA,#60;若設(shè)置的數(shù)在50-60之間則轉(zhuǎn)到TEM60JCTEM60MOVA,R0CLRCSUBBA,#70;若設(shè)置的數(shù)在60-70之間則轉(zhuǎn)到TEM70JCTEM70MOVA,R0CLRCSUBBA,#80;若設(shè)置的數(shù)在70-80之間則轉(zhuǎn)到TEM80JCTEM80MOVA,R0CLRCSUBBA,#90;若設(shè)置的數(shù)在80?90之間則轉(zhuǎn)到TEM90JCTEM90

MOVCLRSUBBJCA,R0CA,#10TEM100;右設(shè)直的數(shù)在90?100之間;則轉(zhuǎn)到TEM100TEM10:MOVA,R0;設(shè)置的相對(duì)濕度在0%?10%時(shí),MOVB,#12;乘以系數(shù)12.7ACALLMUL0MOVB,#7MULABMOVR3,AMOVR2,BLJMPDIV10TEM50:MOVA,R0;設(shè)置的相對(duì)濕度在10%?50%時(shí)MOVB,#12;乘以系數(shù)12.4ACALLMUL0MOVB,#4MULABMOVR3,AMOVR2,BLJMPDIV10TEM60:MOVA,R0;設(shè)置的相對(duì)濕度在10%?50%時(shí)MOVB,#12;乘以系數(shù)12.8ACALLMUL0MOVB,#8MULABMOVR3,AMOVR2,BLJMPDIV10TEM70:MOVA,R0;設(shè)置的相對(duì)濕度在10%?50%時(shí)MOVB,#13;乘以系數(shù)13.2ACALLMUL0MOVB,#2MULABMOVR3,A

MOVLJMPR2,BDIV10TEM80:MOVA,R0;設(shè)置的相對(duì)濕度在10%?50%時(shí),MOVB,#13;乘以系數(shù)13.8ACALLMUL0MOVB,#8MULABMOVR3,AMOVR2,BLJMPDIV10TEM90:MOVA,R0;設(shè)置的相對(duì)濕度在10%?50%時(shí),MOVB,#14;乘以系數(shù)12.4ACALLMUL0MOVB,#4MULABMOVR3,AMOVR2,BLJMPDIV10TEM100:MOVA,R0;設(shè)置的相對(duì)濕度在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論