版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機設(shè)計的溫度報警器摘要21、引言32 設(shè)計內(nèi)容及性能指標(biāo)43 系統(tǒng)方案比較、設(shè)計與論證43.1 主控制器模塊53.2 溫度測量53.3 設(shè)置溫度63.3 顯示模塊63.4 電源選取74 系統(tǒng)器件選擇75 硬件實現(xiàn)及單元電路設(shè)計85.1 主控制模塊85.2 顯示模塊電路95.3 數(shù)碼管顯示驅(qū)動電路10圖6 驅(qū)動電路105.4 溫度傳感器(DS18B20)電路105.4.1 DS18B20基本介紹105.4.2 DS18B20控制方法115.4.3 DS18B20供電方式115.6 蜂鳴器、發(fā)光二極管報警電路126 系統(tǒng)軟件設(shè)計136.1 程序結(jié)構(gòu)分析136.2 系統(tǒng)程序流圖136.2.1 D
2、S18B20初始化程序流程圖146.2.2 讀溫度子程序流程圖157 系統(tǒng)的安裝與調(diào)試157.1 安裝步驟157.2 電路的調(diào)試167.3 本章小結(jié)16結(jié) 論16參考文獻16附錄1 整體電路原理圖17附錄2 部分源程序18摘要 隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個基于單片機的溫度報警系統(tǒng),詳細(xì)描述了利用溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分析,對各部分的電路也一一進行了介紹,該系統(tǒng)可以方便的實現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定報
3、警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度控制,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20與STC89C52結(jié)合實現(xiàn)最簡溫度控制系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度的控制,有廣泛的應(yīng)用前景。關(guān)鍵詞:單片機;溫度控制;STC89C52;DS18B20;1、引言 隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級的增長,而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(
4、通信技術(shù))和信息處理(計算機技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會的每一個領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和溫度報警裝置具有重要的意義。測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀(jì)90年代中期問世的,它是微電子技術(shù)、計算機技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶,特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制
5、量,適配各種微控制器(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對以此傳感器,STC89C52單片機為控制器構(gòu)成的數(shù)字溫度控制裝置的工作原理及程序設(shè)計作了詳細(xì)的介紹。其具有讀數(shù)方便,方便控制,輸出溫度采用數(shù)字顯示,主要用于對溫度控制要求比較準(zhǔn)確的場所,或科研實驗室使用。該設(shè)計控制器使用STC89C52單片機
6、,測溫傳感器使用DALLAS公司DS18B20,用數(shù)碼管來實現(xiàn)溫度顯示。2 設(shè)計內(nèi)容及性能指標(biāo) 本設(shè)計主要是介紹了單片機控制下的溫度報警系統(tǒng),詳細(xì)介紹了其硬件和軟件設(shè)計,并對其各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下:單片機實時檢測溫度傳感器DS18B20的狀態(tài),并將DS18820得到的數(shù)據(jù)進行處理。上電后數(shù)碼管顯示當(dāng)前的環(huán)境溫度,通過按鍵可設(shè)置高低溫報警值,當(dāng)檢測到的溫度高于設(shè)置的報警值的時候,蜂鳴器報警同時報警燈閃爍,溫度檢測精確到0.1度。并具有掉電保存功能,數(shù)據(jù)保存在單片機內(nèi)部EEPOM中,進入設(shè)置界面后如果沒有鍵按下系統(tǒng)會在15秒后自動退出設(shè)置界面。3 系統(tǒng)方案比較、設(shè)計與論證
7、該系統(tǒng)主要由溫度測量和溫度設(shè)置及系統(tǒng)狀態(tài)顯示三部分電路組成,下面介紹實現(xiàn)此系統(tǒng)功能的方案。3.1 主控制器模塊方案1: 采用可編程邏輯器件CPLD作為控制器。CPLD可以實現(xiàn)各種復(fù)雜的邏輯功能、規(guī)模大、密度高、體積小、穩(wěn)定性高、IO資源豐富、易于進行功能擴展。采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)??刂葡到y(tǒng)的控制核心。但本系統(tǒng)不需要復(fù)雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是非常高。且從使用及經(jīng)濟的角度考慮我們放棄了此方案。方案2: 采用STC89C52單片機作為整個系統(tǒng)的核心,用其控制溫度報警功能,以實現(xiàn)其既定的性能指標(biāo)。充分分析我們的系統(tǒng),其關(guān)鍵在于實現(xiàn)溫度的自動顯示并
8、報警功能,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)勢控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資源豐富、有較為強大的控制功能及可位尋址操作功能、價格低廉等優(yōu)點。STC89C52單片機具有功能強大的位操作指令,I/O口均可按位尋址,程序空間多達(dá)8K,對于本設(shè)計也綽綽有余,更可貴的是STC89C52單片機價格非常低廉。3.2 溫度測量方案1: 采用數(shù)字溫度芯片DS18B20 測量實際溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20
9、 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器STC89C52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51 單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機通信上傳數(shù)據(jù),另外STC89C52在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。方案2: 采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫?zé)崤?,熱電偶由兩個焊接在一起的異金屬導(dǎo)線所組成(如下圖),
10、熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成。通過將參考結(jié)點保持在已知溫度并測量該電壓,便可推斷出檢測結(jié)點的溫度。數(shù)據(jù)采集部分則使用帶有A/D 通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D 轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優(yōu)點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點,并且這種設(shè)計需要用到A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。圖1 熱電偶電路圖從以上兩種方案,容易看出方案二的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案一的測溫裝置
11、電路簡單、精確度較高、實現(xiàn)方便、軟件設(shè)計也比較簡單,故本次設(shè)計采用了方案一。3.3 設(shè)置溫度方案1: 采用鍵盤輸入設(shè)置溫度,鍵盤則可以用4個按鍵,一個復(fù)位鍵,一個功能設(shè)定鍵,一個加減一個減鍵。四個鍵比較常用,而且用到的接口得到了極好的利用,僅需要4個接口。方案2: 可采用4*4矩陣鍵盤,該鍵盤需要8個接口,而我們不需這么多鍵。綜上所述,我們選擇第一種方案。3.3 顯示模塊方案1: 用數(shù)碼管進行顯示。數(shù)碼管由于顯示速度快,使用簡單,顯示效果簡潔明了而得到了廣泛應(yīng)用。方案 2:用LCD液晶進行顯示。LCD由于其顯示清晰,顯示內(nèi)容豐富、清晰,顯示信息量大,使用方便,顯示快速而得到了廣泛的應(yīng)用。單對于
12、此系統(tǒng)我們不需要顯示豐富的內(nèi)容,而且LCD液晶價格貴,因此我們選擇了此方案。 綜上所述我們選擇方案13.4 電源選取 由于本系統(tǒng)采用電池供電,我們考慮了如下幾種方案為系統(tǒng)供電。方案1:采用5V蓄電池為系統(tǒng)供電。蓄電池具有較強的電流驅(qū)動能力以及穩(wěn)定的電壓輸出性能。但是蓄電池的體積過于龐大,在小型電動車上使用極為不方便。因此我們放棄了此方案。方案2:采用3節(jié)1.5 V干電池共4.5V做電源,經(jīng)過實驗驗證系統(tǒng)工作時,單片機、傳感器的工作電壓穩(wěn)定能夠滿足系統(tǒng)的要求,而且電池更換方便。綜上所述采用方案24 系統(tǒng)器件選擇1.溫度傳感器的選擇 由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫
13、度,需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測溫元件。 圖2 外部封裝形式 圖3 傳感器電路圖5 硬件實現(xiàn)及單元電路設(shè)計5.1 主控制模塊主控制最系統(tǒng)電路如圖4所示。 圖4 單片主控電路5.2 顯示模塊電路 顯示采用四位數(shù)碼管顯示,當(dāng)位選打開時,送入相應(yīng)的段碼,則相應(yīng)的數(shù)碼管打開,關(guān)掉位選,打開另一個位選,送入相應(yīng)的段碼,則數(shù)碼管打開,而每次打開關(guān)掉相應(yīng)的位選時,時間間隔低于20ms,從人類視覺的角度上看,就仿佛是全部數(shù)碼管同時顯示的一樣。顯示電路如圖5圖5 數(shù)碼管顯示5.3 數(shù)碼管顯示驅(qū)動電路三極管8550來驅(qū)動4
14、位數(shù)碼管,不僅簡單,而且價格便宜。圖6 驅(qū)動電路5.4 溫度傳感器(DS18B20)電路5.4.1 DS18B20基本介紹DS18B20是美國DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字信號處理器處理。DS18B20進行精確的溫度轉(zhuǎn)換,I/O線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個DS18B20在溫度轉(zhuǎn)換期間工作電流達(dá)到1mA,當(dāng)幾個溫度傳感器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉(zhuǎn)換溫度或溫度誤差極大。因此,下圖電路只適應(yīng)
15、于單一溫度傳感器測溫情況下使用,不適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當(dāng)電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。圖7 溫度傳感器電路引腳圖5.4.2 DS18B20控制方法DS18B20有六條控制命令:溫度轉(zhuǎn)換 44H 啟動DS18B20進行溫度轉(zhuǎn)換 讀暫存器 BEH 讀暫存器9個字節(jié)內(nèi)容 寫暫存器 4EH 將數(shù)據(jù)寫入暫存器的TH、TL字節(jié) 復(fù)制暫存器 48H 把暫存器的TH、TL字節(jié)寫到E2RAM中 重新調(diào)E2RAM B8H 把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié) 讀電源供電方式 B4H 啟動DS18B20發(fā)送電源供電方式的信號給
16、主CPU 5.4.3 DS18B20供電方式DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖3.1所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個三極管來完成對總線的上拉。本設(shè)計采用電源供電方式, P2.2口接單線總線為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個上拉電阻和STC89C52的P2.2來完成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10 s。采用寄生電源供電方
17、式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三狀態(tài)的。主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:l 初始化。l ROM操作指令。l 存儲器操作指令。5.6 蜂鳴器、發(fā)光二極管報警電路 電路如圖8主要是用來設(shè)定溫度報警溫度的、有高溫和低溫報警。圖8蜂鳴器、發(fā)光二極管驅(qū)動引腳圖6 系統(tǒng)軟件設(shè)計6.1 程序結(jié)構(gòu)分析主程序調(diào)用了3個子程序,分別是數(shù)碼管顯示程序、溫度信號處理程序、按鍵設(shè)定報警溫度程序。溫度信號處理程序:對溫度芯片送過來的數(shù)據(jù)進行處理,進行判斷和顯示。數(shù)碼管顯示程序:向數(shù)碼管的顯示送數(shù),控制系統(tǒng)的顯示部分。按鍵設(shè)定程序:可以設(shè)定低溫和高溫報警可精確到0
18、.1度。6.2 系統(tǒng)程序流圖主程序的主要功能是負(fù)責(zé)溫度的實時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,主程序的主要功能是負(fù)責(zé)溫度的實時顯示,讀出并處理DS18B20的當(dāng)前溫度值,與設(shè)定的報警溫度比較,其程序流程見圖9所示。通過調(diào)用讀溫度子程序把存入內(nèi)存儲中的整數(shù)部分與小數(shù)部分開分存放在不的的兩個單元中,然后通過調(diào)用顯示子程序顯示出來。調(diào)用顯示子程序初始化1s到?初次上電發(fā)溫度轉(zhuǎn)換開始命令讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新圖9 DS18B20溫度流程圖6.2.1 DS18B20初始化程序流程圖在DS18B20工作之前需要進行初始
19、化,流程圖如下:發(fā)復(fù)位命令發(fā)跳過ROM命令 初始化成功 結(jié)束 圖10 初始化程序流程圖6.2.2 讀溫度子程序流程圖 讀溫度子程序的主要功能是從DS18B20中讀出溫度數(shù)據(jù),移入溫度暫存器保存。其程序流程圖如下:發(fā)復(fù)位命令發(fā)跳過ROM命令 發(fā)讀取溫度命令 移入溫度暫存器 結(jié)束 圖11 溫度子程序流程圖 7 系統(tǒng)的安裝與調(diào)試7.1 安裝步驟1.檢查元件的好壞按電路圖買好元件后首先檢查買回元件的好壞,按各元件的檢測方法分別進行檢測,一定要仔細(xì)認(rèn)真。而且要認(rèn)真核對原理圖是否一致,在檢查好后才可上件、焊件,防止出現(xiàn)錯誤焊件后不便改正。2.放置、焊接各元件按原理圖的位置放置各元件,在放置過程中要先放置、
20、焊接較低的元件,后焊較高的和要求較高的元件。特別是容易損壞的元件要后焊,在焊集成芯片時連續(xù)焊接時間不要超過10s,注意芯片的安裝方向。7.2 電路的調(diào)試首先燒入顯示程序,看顯示正不正常。在調(diào)試程序時,發(fā)現(xiàn)有的指令用的不正確,導(dǎo)致電路功能不能完全實現(xiàn),另外軟件程序中的延時有的過長、有的過短。類似的現(xiàn)象還有很多就不一一列舉了。7.3 本章小結(jié)本章的主要內(nèi)容是電路的測試和調(diào)試注意事項結(jié) 論本溫度報警器,通過單片機實時檢測溫度傳感器DS18B20的狀態(tài),并將DS18820得到的數(shù)據(jù)進行處理。上電后數(shù)碼管顯示當(dāng)前的環(huán)境溫度,通過按鍵可設(shè)置高低溫報警值,當(dāng)檢測到的溫度高于設(shè)置的報警值的時候,蜂鳴器報警同時
21、報警燈閃爍,溫度檢測精確到0.1度。并具有掉電保存功能,數(shù)據(jù)保存在單片機內(nèi)部EEPOM中,進入設(shè)置界面后如果沒有鍵按下系統(tǒng)會在15秒后自動退出設(shè)置界面。由于采用了4節(jié)干電池供電使系統(tǒng)的抗干擾性得到加強。在軟件上,充分利用了STC89C52的系統(tǒng)資源,系統(tǒng)運行流暢。本設(shè)計結(jié)構(gòu)簡單,調(diào)試方便,系統(tǒng)反映快速靈活,經(jīng)實驗測試,該溫度報警系統(tǒng)設(shè)計方案正確、可行,各項指標(biāo)穩(wěn)定、可靠。參考文獻1曹巧媛主編. 單片機原理及應(yīng)用(第二版). 北京:電子工業(yè)出版社,20022全國大學(xué)生電子設(shè)計競賽組委會編.第五屆全國大學(xué)生電子設(shè)計競賽獲獎作品選編(2001), 北京:北京理工大學(xué)出版社,20033何力民編. 單片
22、機高級教程. 北京:北京航空大學(xué)出版社,20004金發(fā)慶等編. 傳感器技術(shù)與應(yīng)用.北京機械工業(yè)出版社,20025劉坤、宋戈、趙洪波、張憲棟編51單片機C語言應(yīng)用開發(fā)技術(shù)大全,北京:人民郵電出版社,20086譚浩強著C程序設(shè)計北京:清華大學(xué)出版社,2007;7王忠飛,胥芳MCS-51 單片機原理及嵌入式系統(tǒng)應(yīng)用M西安:西安電子科技大學(xué)出版社,2007P268-2738 Peter Van Der Linden著,徐波譯.C專家編程,人民郵電出版社,2003附錄1 整體電路原理圖附錄2 部分源程序#include #include eepom52.h#define uchar unsigned c
23、har #define uint unsigned int/數(shù)碼管段選定義 0 1 2 3 4 56 7 8 9uchar code smg_du=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff; /斷碼/數(shù)碼管位選定義uchar code smg_we=0xef,0xdf,0xbf,0x7f;uchar dis_smg8 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;uchar smg_i = 3; /顯示數(shù)碼管的個位數(shù)sbit d
24、q = P24;/18b20 IO口的定義sbit beep = P25; /蜂鳴器IO口定義uchar a_a;uint temperature ; /bit flag_300ms ;uchar key_can; /按鍵值的變量uchar menu_1; /菜單設(shè)計的變量uint t_high = 300,t_low = 100;bit flag_lj_en; /按鍵連加使能bit flag_lj_3_en; /按鍵連3次連加后使能 加的數(shù)就越大了 uchar key_time,flag_value; /用做連加的中間變量bit key_500ms ;uchar flag_clock;uch
25、ar zd_break_en,zd_break_value; /自動退出設(shè)置界面/*1ms延時函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);/*小延時函數(shù)*/void delay_uint(uint q)while(q-);/*數(shù)碼顯示函數(shù)*/void display()uchar i;for(i=0;ismg_i;i+) P3 = smg_wei; /位選P1 = dis_smgi; /段選 delay_1ms(1); P3 = 0xff; /位選P1 = 0xff; /消隱 /*把數(shù)據(jù)保存到單片機內(nèi)部ee
26、pom中*/void write_eepom()SectorErase(0x2000);byte_write(0x2000, t_high % 256);byte_write(0x2001, t_high / 256);byte_write(0x2002, t_low % 256);byte_write(0x2003, t_low / 256);byte_write(0x2055, a_a);/*把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*/void read_eepom()t_high = byte_read(0x2001);t_high = 8;t_high |= byte_read(0x200
27、0);t_low = byte_read(0x2003);t_low = 8;t_low |= byte_read(0x2002);a_a = byte_read(0x2055);/*18b20初始化函數(shù)*/void init_18b20()bit q;dq = 1;/把總線拿高delay_uint(1); /15usdq = 0;/給復(fù)位脈沖delay_uint(80);/750usdq = 1;/把總線拿高 等待delay_uint(10);/110usq = dq;/讀取18b20初始化信號delay_uint(20);/200usdq = 1;/把總線拿高 釋放總線/*寫18b20內(nèi)的
28、數(shù)據(jù)*/void write_18b20(uchar dat)uchar i;for(i=0;i= 1;/*讀取18b20內(nèi)的數(shù)據(jù)*/uchar read_18b20()uchar i,value;for(i=0;i= 1; /讀數(shù)據(jù)是低位開始dq = 1; /釋放總線if(dq = 1) /開始讀寫數(shù)據(jù) value |= 0x80;delay_uint(5); /60us讀一個時間隙最少要保持60us的時間return value; /返回數(shù)據(jù)/*讀取溫度的值 讀出來的是小數(shù)*/uint read_temp()uint value;uchar low; /在讀取溫度的時候如果中斷的太頻繁了,
29、就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序init_18b20(); /初始化18b20write_18b20(0xcc); /跳過64位ROMwrite_18b20(0x44); /啟動一次溫度轉(zhuǎn)換命令delay_uint(50); /500usinit_18b20(); /初始化18b20write_18b20(0xcc); /跳過64位ROMwrite_18b20(0xbe); /發(fā)出讀取暫存器命令EA = 0;low = read_18b20(); /讀溫度低字節(jié)value = read_18b20(); /讀溫度高字節(jié)EA = 1;value = 10)write_eepom(
30、);key_value = 0;key_new = 1;flag_lj_en = 0;/關(guān)閉連加使能flag_lj_3_en = 0;/關(guān)閉3秒后使能flag_value = 0;/清零else if(P2 & 0x0f) != 0x0f)key_value +; /按鍵按下的時候else key_value = 0;if(key_value = 7)key_value = 0;key_new = 0;flag_lj_en = 1; /連加使能zd_break_en = 1; /自動退出設(shè)置界使能zd_break_value = 0; /自動退出設(shè)置界變量清零key_can = 20;if(k
31、ey_500ms = 1)key_500ms = 0;zd_break_en = 1; /自動退出設(shè)置界使能zd_break_value = 0; /自動退出設(shè)置界變量清零key_new = 0;key_old = 1;if(key_new = 0) & (key_old = 1)switch(P2 & 0x0f)case 0x0e: key_can = 4; break; /得到k1鍵值case 0x0d: key_can = 3; break; /得到k2鍵值case 0x0b: key_can = 2; break; /得到k3鍵值case 0x07: key_can = 1; brea
32、k; /得到k4鍵值 key_old = key_new; /*按鍵處理數(shù)碼管顯示函數(shù)*/void key_with()if(key_can = 4)menu_1 +;if(menu_1 = 3)menu_1 = 0;if(menu_1 = 0)dis_smg0 = smg_dutemperature % 10; /取溫度的小數(shù)顯示dis_smg1 = smg_dutemperature / 10 % 10 & 0x7f; /取溫度的個位顯示dis_smg2 = smg_dutemperature / 100 % 10 ; /取溫度的十位顯示smg_i = 3;if(menu_1 = 1)di
33、s_smg0 = smg_dut_high % 10; /取小數(shù)顯示dis_smg1 = smg_dut_high / 10 % 10 & 0x7f; /取個位顯示dis_smg2 = smg_dut_high / 100 % 10 ; /取low十位顯示dis_smg3 = 0x89;smg_i = 4;if(menu_1 = 2)dis_smg0 = smg_dut_low % 10; /取low小數(shù)顯示dis_smg1 = smg_dut_low / 10 % 10 & 0x7f; /取個位顯示dis_smg2 = smg_dut_low / 100 % 10 ; /取十位顯示dis_s
34、mg3 = 0xc7;smg_i = 4;if(menu_1 = 1)/設(shè)置高溫報警if(key_can = 3)if(flag_lj_3_en = 0)t_high + ;/按鍵按下未松開自動加三次else t_high += 10;/按鍵按下未松開自動加三次之后每次自動加10if(t_high 990)t_high = 990;dis_smg0 = smg_dut_high % 10; /取小數(shù)顯示dis_smg1 = smg_dut_high / 10 % 10 & 0x7f; /取個位顯示dis_smg2 = smg_dut_high / 100 % 10 ; /取十位顯示dis_smg3 = 0x89; /Hif(key_can = 1)if(flag_lj_3_en = 0)t_high - ;/按鍵按下未松開自動加三次else t_high -= 10;/按鍵按下未松開自動減三次之后每次自動減10if(t_high = t_high)t_low = t_high - 1;dis_smg0 = smg_dut_low % 10; /取小數(shù)顯示dis_smg1 = smg_dut_low / 10 % 10 & 0x7f; /取個位顯示dis_smg2 = smg_dut_low /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)自動化生產(chǎn)線廠房租賃合同4篇
- 2024離婚合同書:不含財產(chǎn)分割案例版B版
- 個人房產(chǎn)抵押合同
- 2024年04月交通銀行股份有限公司畢節(jié)分行(貴州)招考1名勞務(wù)人員筆試歷年參考題庫附帶答案詳解
- 2024物業(yè)公司收費標(biāo)準(zhǔn)合同
- 2025年度不銹鋼復(fù)合材料應(yīng)用研發(fā)與推廣協(xié)議3篇
- 2024年03月貴州中國農(nóng)業(yè)銀行貴州省分行春季招考筆試歷年參考題庫附帶答案詳解
- 2025年度農(nóng)產(chǎn)品溯源體系建設(shè)合作協(xié)議范本3篇
- 二零二五年度草牧場資源綜合利用與承包合同3篇
- 專職護林員2024年度服務(wù)協(xié)議版B版
- 骨科手術(shù)后患者營養(yǎng)情況及營養(yǎng)不良的原因分析,骨傷科論文
- GB/T 24474.1-2020乘運質(zhì)量測量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實施方案(一)
- 高血壓患者用藥的注意事項講義課件
- 特種作業(yè)安全監(jiān)護人員培訓(xùn)課件
- (完整)第15章-合成生物學(xué)ppt
- 太平洋戰(zhàn)爭課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
評論
0/150
提交評論