基于C51單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計(附程序)_第1頁
基于C51單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計(附程序)_第2頁
基于C51單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計(附程序)_第3頁
基于C51單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計(附程序)_第4頁
基于C51單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計(附程序)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于 C51 單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計( 附程序)基于C51 單片機的溫度控制系統(tǒng)應(yīng)用系統(tǒng)設(shè)計 單片機原理及應(yīng)用實踐周設(shè)計報告姓名:班級:學(xué)號:同組成員:指導(dǎo)老師:成績:時間:2011 年 7 月 3 日單片機溫度控制系統(tǒng)摘要溫度是日常生活中無時不在的物理量,溫度的控制在各個領(lǐng)域都有積極的意義。 很多行業(yè)中都有大量的用電加熱設(shè)備,如用于熱處理的加熱爐,用于融化金屬的坩鍋電阻爐及各種不同用途的溫度箱等,采用單片機對它們進行控制不僅具有控制方便、簡單、 靈活性大等特點,而且還可以大幅度提高被控溫度的技術(shù)指標(biāo), 從而能夠大大提高產(chǎn)品的質(zhì)量。因此, 智能化溫度控制技術(shù)正被廣泛地采用。本溫度設(shè)計

2、采用現(xiàn)在流行的AT89S51I片機,配以DS18B2散字溫度傳感器,該溫度傳感器可自行設(shè)置溫度上下限。單片機將檢測到的溫度信號與輸入的溫度 上、下限進行比較,由此作出判斷是否觸發(fā)相應(yīng)設(shè)備。使得整個設(shè)計更本設(shè)計還加入了常用的液晶顯示及狀態(tài)燈顯示燈常用電路,加完整,更加靈活。關(guān)鍵詞: 溫度箱;AT89C52 LCD1602單片機;控制目錄1 引言 11.1 溫度控制系統(tǒng)設(shè)計的背景、發(fā)展歷史及意義11.2 溫度控制系統(tǒng)的目的11.3 溫度控制系統(tǒng)完成的功能12 總體設(shè)計方案22.1 方案一22.2 方案二23 DS18B20溫度傳感器簡介73.1 溫度傳感器的歷史及簡介73.2 DS18B20的工作

3、原理7DS18B20工作時序7ROMS作命令93.3 DS18B20的測溫原理 98B20的測溫原理:9DS18B20的測溫流程 104 單片機接口設(shè)計124.1 設(shè)計原則124.2 引腳連接12晶振電路12串口引腳12其它引腳135 系統(tǒng)整體設(shè)計145.1 系統(tǒng)硬件電路設(shè)計14主板電路設(shè)計14各部分電路145.2 系統(tǒng)軟件設(shè)計16系統(tǒng)軟件設(shè)計整體思路16系統(tǒng)程序流圖176 結(jié)束語21附錄 22參考文獻391 引言1.1 溫度控制系統(tǒng)設(shè)計的背景、發(fā)展歷史及意義隨著社會的發(fā)展,科技的進步,以及測溫儀器在各個領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控制系統(tǒng)發(fā)展的主流方向。特別是近年來,溫度控制系統(tǒng)已應(yīng)用到人

4、們生活的各個方面,但溫度控制一直是一個未開發(fā)的領(lǐng)域,卻又是與人們息息相關(guān)的一個實際問題。針對這種實際情況,設(shè)計一個溫度控制系統(tǒng),具有廣泛的應(yīng)用前景與實際意義。溫度是科學(xué)技術(shù)中最基本的物理量之一,物理、 化學(xué)、 生物等學(xué)科都離不開溫度。在工業(yè)生產(chǎn)和實驗研究中,像電力、化工、石油、冶金、航空航天、機械制造、 糧食存儲、酒類生產(chǎn)等領(lǐng)域內(nèi),溫度常常是表征對象和過程狀態(tài)的最重要的參數(shù)之一。比如, 發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過程必須在適當(dāng)?shù)臏囟认虏拍苷_M行;煉油過程中,原油必須在不同的溫度和壓力條件下進行分餾才能得到汽油、柴油、 煤油等產(chǎn)品。沒有合適的溫度環(huán)境, 許多電

5、子設(shè)備就不能正常工作,糧倉的儲糧就會變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障。因此,各行各業(yè)對溫度控制的要求都越來越高。可見,溫度的測量和控制是非常重要的。單片機在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛,在很多的電子產(chǎn)品中也用到了溫度檢測和溫度控制。隨著溫度控制器應(yīng)用范圍的日益廣泛和多樣,各種適用于不同場合的智能溫度控制器應(yīng)運而生。1.2 溫度控制系統(tǒng)的目的本設(shè)計的內(nèi)容是溫度測試控制系統(tǒng),控制對象是溫度。溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫室、水池、發(fā)酵缸、電源等場所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實在很多場所溫度都需要監(jiān)控以防止發(fā)生意外。針對此問題,本系統(tǒng)設(shè)計的目的是實現(xiàn)一

6、種可連續(xù)高精度調(diào)溫的溫度控制系統(tǒng),它應(yīng)用廣泛,功能強大,小巧美觀,便于攜帶,是一款既實用又廉價的控制系統(tǒng)。1.3 溫度控制系統(tǒng)完成的功能本設(shè)計是對溫度進行實時監(jiān)測與控制,設(shè)計的溫度控制系統(tǒng)實現(xiàn)了基本的溫度控制功能:當(dāng)溫度低于設(shè)定下限溫度時,系統(tǒng)自動啟動加熱繼電器加溫,使溫度上升。當(dāng)溫度高于設(shè)定上限溫度時,系統(tǒng)自動啟動風(fēng)扇降溫,使溫度下降。當(dāng)溫度下降到上限溫度以下時,停止降溫。溫度在上下限溫度之間時,執(zhí)行機構(gòu)不執(zhí)行。LCD1602夜晶顯示即時溫度,精度為正負 0.5攝氏度。2 總體設(shè)計方案2.1 方案一測溫電路的設(shè)計,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過

7、來,進行 A/D 轉(zhuǎn)換后, 就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。2.2 方案二考慮使用溫度傳感器,結(jié)合單片機電路設(shè)計,采用一只DS18B2恥度傳感器,直接讀取被測溫度值,之后進行轉(zhuǎn)換,依次完成設(shè)計要求。圖 2 1 溫度計電路總體設(shè)計方控制部分單片機AT89C52具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用,系統(tǒng)應(yīng)用三節(jié)電池供電。2. 顯示部分顯示電路采用LCD1602夜晶顯示器,從P0 口送數(shù),P2 口掃描。3. 溫度采集部分DS18B2CW度傳感

8、器是美國 DALLAS導(dǎo)體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫。這一部分主要完成對溫度信號的采集和轉(zhuǎn)換工作,由DS18B2O字溫度傳感器及其與單 片機的接口部分組成。數(shù)字溫度傳感器DS18B2CT巴采集到的溫度通過數(shù)據(jù)引腳傳 到單片機的P1.0 口,單片機接受溫度并存儲。此部分只用到DS18B20f口單片機, 硬件很簡單1 DS18B20 的性能特點如下9 :1 獨特的單線接口僅需要一個端口引腳進行通信;2多個DS18B2M以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;3 無須外部器件;4 可通過數(shù)據(jù)線供電,電壓范圍為 3.05.5V;5 零待機

9、功耗;6 溫度以 3 位數(shù)字顯示;7 用戶可定義報警設(shè)置;8 報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;9 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。2 DS18B20 的內(nèi)部結(jié)構(gòu)DS18B2原用3腳PR 35封裝,如圖1.2所示;DS18B20勺內(nèi)部結(jié)構(gòu),如圖 3 所示。圖 2-2 DS18B20封裝3 DS18B20 內(nèi)部結(jié)構(gòu)主要由四部分組成5 :1 64位光刻ROM開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的 序號,共有48位,最后8位是前56位的CRCK驗碼,這也是多個DS18B2CMW 采用一線進行通信的原因。64閃速ROM勺結(jié)構(gòu)如下

10、圖23 DS18B20內(nèi)部結(jié)構(gòu)2非揮發(fā)的溫度報警觸發(fā)器TH和TL,可通過軟件寫入用戶報警上下限值。3 高速暫存存儲Byte0 溫度測量值LSB( 50H)Byte1 溫度測量值 MSB(50H)E2PROM Byte2 TH高溫寄存器 - TH 高溫寄存器Byte3 TL低溫寄存器 -TL 低溫寄存器Byte4 配位寄存器 配位寄存器Byte5 預(yù)留( FFH)Byte6預(yù)留(0CH)Byte7 預(yù)留(IOH)Byte8 循環(huán)冗余碼校驗(CRC)2非揮發(fā)的溫度報警觸發(fā)器TH和TL,可通過軟件寫入用戶報警上下限值3高速暫存存儲CRC勺產(chǎn)生64 b ROM 的最高有效字節(jié)中存儲有循環(huán)冗余校驗碼(C

11、RC) 。主機根據(jù)ROM的前56位來計CRCfi,并和存入DS18B20的CRCS做比較,以判斷主機收到的RO峨據(jù)是否正確。3 DS18B20溫度傳感器簡介3.1 溫度傳感器的歷史及簡介溫度的測量是從金屬物質(zhì) 的熱脹冷縮開始。水銀溫度計至今仍是各種溫度測量的計量標(biāo)準??墒撬娜秉c是只能近距離觀測,而且水銀有毒,玻璃管易碎。代替水銀的有酒精溫度計和金屬簧片溫度計,它們雖然沒有毒性,但測量精度很低, 只能作為一個概略指示。不過在居民住宅中使用已可滿足要求。在工業(yè)生產(chǎn)和實驗研究中為了配合遠傳儀表指示,出現(xiàn)了許多不同的溫度檢測方法,常用的有電阻式、熱電偶式、PN 結(jié)型、輻射型、光纖式及石英諧振型等。它

12、們都是基于溫度變化引起其物理參數(shù)如電阻值,熱電勢等的變化的原理。隨著大規(guī)模集成電路工藝的提高,出現(xiàn)了多種集成的數(shù)字化溫度傳感器。3.2 DS18B20的工作原理DS18B20工作時序根據(jù)DS18B20勺通訊協(xié)議,主機控制DS18B2沈成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對 DS18B20tt行復(fù)位復(fù)位成功后發(fā)送一條 ROM旨令最后 發(fā)送RAM旨令,這樣才能對DS18B20tt行預(yù)定的操作。復(fù)位要求主CPU等數(shù)據(jù)線 下拉500微秒,然后釋放,DS18B20攵到信號后等待1560微秒左右后發(fā)出60 240微秒的存在低脈沖,主CPU攵到此信號表示復(fù)位成功。3 1 初始化時序總線上的所有傳輸

13、過程都是以初始化開始的,主機響應(yīng)應(yīng)答脈沖。應(yīng)答脈沖 使主機知道,總線上有從機設(shè)備,且準備就緒。主機輸出低電平,保持低電平時間至少480us,以產(chǎn)生復(fù)位脈沖。接著主機釋放總線,4.7KQ上拉電阻將總線拉高,延時1560us,并進入接受模式,以產(chǎn)生低電平應(yīng)答脈沖,若為低電平,再延時 480us12 。2 寫時序圖 3 2 寫時序?qū)憰r序包括寫0時序和寫1時序。所有寫時序至少需要 60us,且在2次獨立的寫時序之間至少需要1us 的恢復(fù)時間,都是以總線拉低開始。寫 1 時序,主機輸出低電平,延時2us,然后釋放總線,延時60uso寫0時序,主機輸出低電平,延時60us,然后釋放總線,延時2us8。3

14、讀時序圖 3 3 讀時序總線器件僅在主機發(fā)出讀時序是,才向主機傳輸數(shù)據(jù),所以, 在主機發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時序,以便從機能夠傳輸數(shù)據(jù)。所有讀時序至少需要60us,且在2次獨立的讀時序之間至少需要 1us的恢復(fù)時間。每個讀時序都由主機發(fā)起,至少拉低總線1uso主機在讀時序期間必須釋放總線,并且在時序起始后的15us之內(nèi)采樣總線狀態(tài)。主機輸出低電平延時2us,然后主機轉(zhuǎn)入輸入模式延時12us,然后讀取總線當(dāng)前電平,然后延時 50us4ROMS作命令當(dāng)主機收到DS18B20的響應(yīng)信號后,便可以發(fā)出 ROM臊作命令之一,這些 命令如表2.2 : ROM作命令。3.3 DS18B20的測溫原

15、理DS18B20的測溫原理:每一片DS18B20在其ROW都存有其唯一的48位序列號,在出廠前已寫入 片內(nèi)ROM中。主機在進入操作程序前必須用讀 ROM 33HT令將該DS18B20的序 列號讀出。程序可以先跳過ROM啟動所有DS18B20進行溫度變換,之后通過匹配ROM 再逐一地讀回每個DS18B20的溫度數(shù)據(jù)。DS18B20勺測溫原理如圖所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小1,高溫度系數(shù)晶振隨溫度變化其震蕩2 的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)DS18B2CM對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量-55 所對應(yīng)的基數(shù)1 和溫度寄存器中,減法計數(shù)器1

16、和溫度寄存器被預(yù)置在 -55 所對 1 對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器 10 時溫度寄存器的值將加1,減法計數(shù)器1 的預(yù)置將重新被裝入,減法計數(shù)器1重2計數(shù)到0時,中的斜率累加器用讀ROM 33H讀DS18B20 ROW的編碼符合 ROM55H發(fā)出此命令之后,接著發(fā)出64位ROM碼,訪問單線總線上與該編碼相對應(yīng)的DS18B20使之作出響應(yīng),為下一步對該 DS18B20勺讀寫作準備搜索ROM 0F0H 用于確定掛接在同一總線上 DS18B20的個數(shù)和識別64位ROM6址,為操作各器件作好準備跳過ROM 0CCH 忽略64位ROM 地址,直接向DS18B20g溫度變換命令

17、,適用于單片工作續(xù)表3 1告警搜索命 令 0ECH 執(zhí)行后,只有溫度超過設(shè)定值上限或者下限的片子才做出響應(yīng) 溫度變換 44H啟動DS18B20進行溫度轉(zhuǎn)換,轉(zhuǎn)換時間最長為500Ms結(jié)果存入內(nèi)部9字節(jié)RAMfr讀暫存器 0BEH 讀內(nèi)部RAMfr 9字節(jié)的內(nèi)容寫暫存器 4EH發(fā)出向內(nèi)部RAM勺第3, 4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟讀命令之后,是傳送兩字節(jié)的數(shù)據(jù)復(fù)制暫存器48H 將E2PRAW第3, 4字節(jié)內(nèi)容復(fù)制至U E2PRAMb重調(diào)E2PRAM 0BBH 將E2PRAW內(nèi)容恢復(fù)至ij RAW的第3, 4字節(jié) 讀供電方 式0B4H 讀DS18B20勺供電模式,寄生供電時 DS18B2C送“

18、0”,外 接電源供電DS18B20g送“1”另外,由于DS18B20I線通信功能是分時完成的,他有嚴格的時隙概念,因 此讀寫時序很重 DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化 DS18B20(發(fā)復(fù)位脈沖ROMft能命令-發(fā)存儲器操作命令-處理數(shù)據(jù)。圖 3 4 測溫原理內(nèi)部裝置DS18B20的測溫流程圖3-5 DS18B20測溫流程4 單片機接口設(shè)計4.1 設(shè)計原則口$18820以采用兩種方式供電,一種是采用電源供電方式,此時 DS18B20的 1 腳接地, 2 腳作為信號線,3 腳接電源。另一種是寄生電源供電方式,如圖3.1所示單片機端口接單線總線,為保證在有效的DS18B2

19、0寸鐘周期內(nèi)提供足夠的電流,可用一個MOSFET來完成對總線的上拉。本設(shè)計采用電源供電方式,P 口接單線總線當(dāng)DS18B2昵于寫存儲器操作和溫度 A/D變換操作時,總線上必須 有強的上拉,上拉開啟時間最大為10 ns。采用寄生電源供電方式是 VDDffi GND 端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三的。主機控制DS18B20g成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:初始化ROMM乍指令存儲器操作指令。5 系統(tǒng)整體設(shè)計5.1 系統(tǒng)硬件電路設(shè)計主板電路設(shè)計單片機的P1.0接DS18B20勺2號引腳,P0 口送數(shù)P2 口掃描,P1.1、P1.2控制加熱器和電風(fēng)扇的繼電器。如附錄2。各部分電路1

20、 顯示電路顯示電路采用了 LCD1602夜晶顯示器,節(jié)約了單片機的輸出端口 ,便于程序的編寫。圖 5 1 顯示電路圖2 單片機電路圖 5 2 單片機電路引腳圖3 DS18B20 溫度傳感器電路圖 5-3 溫度傳感器電路引腳圖4 晶振控制電路圖 5-5 晶振控制電路圖5 復(fù)位電路圖 5-6 復(fù)位電路圖5.2 系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計整體思路同時還必一個應(yīng)用系統(tǒng)要完成各項功能,首先必須有較完善的硬件作保證。須得到相應(yīng)設(shè)計合理的軟件的支持,尤其是微機應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編程有時會變得很簡單,如數(shù)字濾波

21、,信號處理等。因此充分利用其內(nèi)部豐富的硬件資源和軟件資源,采用與 S51 系列單片機相對應(yīng)的51 匯編語言和結(jié)構(gòu)化程序設(shè)計方法進行軟件編程。程序設(shè)計語言有三種:機器語言、匯編語言和高級語言。機器語言是機器唯一能“懂”的語言,用匯編語言或高級語言編寫的程序(稱為源程序)最終都必須翻譯成機器語言的程序(成為目標(biāo)程序), 計算機才能 “看懂” , 然后逐一執(zhí)行。高級語言是面向問題和計算過程的語言,它可通過于各種不同的計算機,用戶編程時不必仔細了解所用的計算機的具體性能與指令系統(tǒng),而且語句的功能強, 常常一個語句已相當(dāng)于很多條計算機指令,于是用高級語言編制程序的速度比較快,也便于學(xué)習(xí)和交流,但是本系統(tǒng)

22、卻選用了匯編語言。原因在于,本系統(tǒng)是編制程序工作量不大、規(guī)模較小的單片機微控制系統(tǒng),使用匯編語言可以不用像高級語言那樣占用較多的存儲空間,適合于存儲容量較小的系統(tǒng)。同時, 本系統(tǒng)對位處理要求很高,需要解決大量的邏輯控制問題。MCS- 51指令系統(tǒng)的指令長度較短,它在存儲空間和執(zhí)行時間方面具有較高的效率, 編成的程序占用內(nèi)存單元少,執(zhí)行也非常的快捷,與本系統(tǒng)的應(yīng)用要求很適合。而且MCS-51指令系統(tǒng)有豐富的位操作(或稱位處理)指令,可以形成一個相當(dāng)完整的位操作指令子集, 這是MCS-51指令系統(tǒng)主要的優(yōu)點之一。對于要求反應(yīng)靈敏與控制及時的工控、檢測等實時控制系統(tǒng)以及要求體積小、系統(tǒng)小的許多“電腦

23、化”產(chǎn)品,可以充分體現(xiàn)出匯編語言簡明、整齊、執(zhí)行時間短和易 于使用的特點。本裝置的軟件包括主程序、讀出溫度子程序、復(fù)位應(yīng)答子程序、寫入子程序、以及有關(guān)DS18B20勺程序(初始化子程序、寫程序和讀程序)系統(tǒng)程序流圖系統(tǒng)程序主要包括主程序,讀出溫度子程序,復(fù)位應(yīng)答子程序,寫入子程序等。1)主程序主程序的主要功能是負責(zé)溫度的實時顯示、 讀出并處理DS18B20勺測量的當(dāng)前溫度值,溫度測量每1s 進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖19 所示。通過調(diào)用讀溫度子程序把存入內(nèi)存儲中的整數(shù)部分與小數(shù)部分分開存放在不同的兩個單元中,然后通過調(diào)用顯示子程序顯示出來圖 5-7 主程序流程

24、圖圖 5-8 讀出溫度子程序2)讀出溫度子程序讀出溫度子程序的主要功能是讀出 RAMfr白9字節(jié),在讀出時需進行CRO驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。DS18B20的各個命令對時序的要求特別嚴格,所以必須按照所要求的時序才能達到預(yù)期的目的,同時,要注意讀進來的是高位在后低位在前,共有12 位數(shù),小數(shù)4 位,整數(shù)7 位,還有一位符號位。3)復(fù)位、應(yīng)答子程序圖 5-9 復(fù)位、應(yīng)答子程序4)寫入子程序5-10 寫入子程序5 系統(tǒng)總的流程圖圖 5-11 系統(tǒng)總的流程圖6 結(jié)束語通過短短周的課程設(shè)計,鍛煉了我們的實踐能力,也對我們以后的實際工作能力的具體訓(xùn)練?,F(xiàn)在是一個高科技的時代,單片機已經(jīng)成為當(dāng)

25、今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說是無處不在的。因此對于我們這一專業(yè)的同學(xué)來說,學(xué)好單片機,并正確應(yīng)用單片機是非常重要的。附錄 2主板電路圖附錄 3程序代碼:TEMP_ZH EQU 24H; 實測溫度值存放單元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H; 高溫報警值存放單元TEMP_TLEQU28H;低溫報警值存放單元TEMPHCEQU29H;正、負溫度值標(biāo)記TEMPLC EQU 2AHTEMPFC EQU 2BHK1EQUP1.0;查詢按鍵K2EQUP1.1;設(shè)置 /調(diào)整鍵K3EQUP1.2;調(diào)整鍵K4EQU P1.3 ; 確定鍵BEEPEQ

26、UP3.7;蜂鳴器RELAYEQU P3.6 ; 指示燈LCD_X EQU 2FH ;LCD 字符顯示位置LCD_RS EQU P2.0 ;LCD 寄存器選擇信號LCD_RW EQU P2.1 ;LCD讀寫信號LCD_EN EQU P2.2 ;LCD允許信號FLAG1 EQU 20H.0 ;DS18B20是否存在標(biāo)志KEY_UD EQU 20H.1設(shè)定按鍵的增、減標(biāo)志DQEQU P2.7ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20HMOV R1,#10HCLEAR: MOV R0,AINC R0DJNZ R1,

27、CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RSTJNB FLAG1,START1LCALL MENU_OK程序MOV TEMP_TH,#055HMOV TEMP_TL,#019HLCALL RE_18B20ALCALL WRITE_E2;DS18B20 數(shù)據(jù)信號;將20H2FH單元清零;調(diào)用18B20復(fù)位子程序;DS1820不存在;DS1820存在,調(diào)用顯示正確信息子;設(shè)置TH初值85度; 設(shè)置 TL 初值 25 度; 調(diào)用暫存器操作子程序; 寫入 DS18B20LCALL TEMP_BJ; 顯示溫度標(biāo)記JMP START2LCALL PROC_

28、KEY; 調(diào)用鍵掃描子程序START1: LCALL MENU_ERRORLCALL TEMP_BJSJMP $START2: LCALL RSTJNB FLAG1,START1MOV A,#0CCHLCALL WRITEMOV A,#44HLCALL WRITELCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#0BEHLCALL WRITELCALL READLCALL CONVTEMPLCALL DISPBCDLCALL CONVLCALL TEMP_COMP較子程序; 調(diào)用顯示出錯信息子程序; 顯示溫度標(biāo)記;調(diào)用DS18B20g位子程序;DS18B20不存在;跳

29、過ROME配命令; 溫度轉(zhuǎn)換命令;跳過ROME配; 讀溫度命令;調(diào)用DS18B2O據(jù)讀取操作子程序;調(diào)用溫度數(shù)據(jù)BCD碼處理子程序; 調(diào)用溫度數(shù)據(jù)顯示子程序;調(diào)用LCD顯示處理子程序; 調(diào)用實測溫度值與設(shè)定溫度值比SJMP START2; 循環(huán).*PROC_KEY:JB K1,PROC_K1LCALL BEEPBLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCDPRINTLCALL LOOKALARMJB K3,$LCALL BEEPBLJMP PROCK2PROC_K1: JB K2,PROC_ENDLCALL BEEPBLJNB K2,$MOV DPTR

30、,#RST_A1MOV A,#1LCALLLCDPRINTLCALLSETALARMLCALLRE18B20將設(shè)定的TH,TL值寫入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET設(shè) 定 溫 度 報 警 值 TH 、 TL;*SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN標(biāo)記AS00: JB 20H.1,ASZ01;20H.1 1 ,增加JMP ASJ01 ;20H.1 0,減小ASZ01: J

31、B K2,ASZ02 ;TH 值調(diào)整 增加LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03;TL 值調(diào)整 增加MOV R6,#10LCALL BEEPBLINC TEMPTLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOKALARMMOV R5,#10LCALL DELAYJMP AS

32、Z02ASZ03: JB K4,AS0; 確定調(diào)整LCALL BEEPBLJNB K4,$RETASJ01: JB K2,ASJ02;TH 值調(diào)整(減少)LCALL BEEPBLDEC TEMPTHMOV A,TEMP_THCJNE A,#0FFH,ASJ011JMP ASJ022ASJ011: LCALL LOOKALARMLCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL 值調(diào)整(減少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALA

33、RM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB SET ALERT TEMP: ,0.*實測溫度值與設(shè)定溫度值比較子程序*TEMP_COMP:MOV A,TEMP_THSUBBA,TEMP_ZH; 減數(shù) 被減數(shù),則JCCHULI1; 借位標(biāo)志位C 1 ,轉(zhuǎn)MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TLJC CHULI2MOV DPTR,#BJ5LCALL TEMP_BJ3

34、CLR RELAYRETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3CPL P2.3SETB RELAY;LCALL BEEP_BLRETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3CPL P2.4SETB RELAY;LCALL BEEP_BL; 減數(shù) 被減數(shù),則; 借位標(biāo)志位C 1 ,轉(zhuǎn); 點亮指示燈熄滅指示燈; 蜂鳴器響熄滅指示燈; 蜂鳴器響RETTEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJ

35、NZ R0,BBJJ3RETBJ3:DB HBJ4:DB LBJ5:DB !;顯示溫度標(biāo)記子程序;*TEMP_BJ: MOV A,#0CBHLCALL WCOM; 指針指到顯示消息MOV DPTR,#BJ1MOV R1,#0MOV R29,#2BBJJ1: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,C; ;*MENU_OK: MOV DPTR,#M_OK1MOV A,#1LCALL LCD_PRINTMOV DPTR,#M_OK2MOV A,#2LCALL LCD_PRINTRETM_OK1: DB Ma

36、de by GYYQM_OK2: DB Current temp is:; ;*顯示正確信息子程序; 指針指到顯示消息; 顯示在第一行; 指針指到顯示消息; 顯示在第一行,0,0顯示出錯信息子程序MOV A,#1; 顯示在第一行MENU_ERROR:MOV DPTR,#M_ERROR1 指至 U 顯示消息LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ; 指針指到顯示消息1MOV A,#2; 顯示在第一行LCALL LCD_PRINTRETM_ERROR1: DB DS18B20 ERROR ,0M_ERROR2: DB Current is temp:,0.*DS18B2

37、0復(fù)位子程序*RST: SETB DQNOPCLR DQ主機發(fā)出延時復(fù)位低脈沖MOV R0,#6BHMOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1; 拉高數(shù)據(jù)線SETB DQNOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3;等待DS18B2C0應(yīng)DJNZ R0,TSR2JMP TSR4 ;TSR3: SETB FLAG1JMP TSR5TSR4: CLR FLAG1JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$TSR7: SETB DQRET;*延時置1標(biāo)志位,表示DS1820存在

38、清0標(biāo)志位,表示DS1820不存在時序要求延時一段時間DS18B20 暫 存 器 操 作 子 程 序RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH;跳過 ROMS配LCALL WRITEWR_SCRAPD:MOV A,#4EH; 寫暫器LCALL WRITEMOV A,TEMP_THLCALL WRITEMOV A,TEMP_TLLCALL WRITEMOV A,#7FHLCALL WRITERET;*WRITE_E2:LCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#48HEEROMLCALL

39、 WRITERET;*READ_E2:LCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#0B8H;TH 報警上限);TL 報警下限);12 位精度復(fù)制暫存器子程序;跳過ROMS配;把 暫 存 器 里 的 溫 度 報 警 值 拷 貝 到重 讀 EEROM 子 程 序;跳過ROMS配;把EEROM!的溫度報警值拷貝回暫存LCALL WRITERET.*將自定義字符寫入LCD的CGRAMfr*STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,

40、A+DPTRLCALL WDATA; 寫入數(shù)據(jù)INC R3DJNZ R2,S_DATARET.*D_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00HDS18B20 數(shù) 據(jù) 寫 入 操 作 子 程 序*WRITE: MOV R2,#8; 一共 8 位數(shù)據(jù)CLR CWR1: CLR DQ(低)狀態(tài)MOV R3,#07DJNZ R3,$RRC ACMOV DQ,CMOV R3,#3CHDJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET;開始寫入 DS18B20總線要處于復(fù)位; 總線復(fù)位保持16 微妙以上;把一個字節(jié)DATA分成8個BIT環(huán)

41、移給; 寫入一位; 等待 100 微妙; 重新釋放總線; 寫入下一位.*DS18B20 數(shù) 據(jù) 讀 取 操 作 子 程 序*READ: MOV R4,#4;將溫度低位、高位、TH TL從 DS18B20中讀出MOV R1,#TEMPL ; 存入25H、 26H、 27H、 28H 單元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPANL A,#08HNOPCLR DQNOPNOPNOPSETB DQMOV R3,#09DJNZ R3,$MOV C,DQMOV R3,#3CHDJNZ R3,$RRC ADJNZ R2,RE01MOV R1,AINC R1; 讀前總線保

42、持為低; 開始讀總線釋放延時18 微妙;從DS18B2曲線讀得一位等待100 微妙把讀得的位值環(huán)移給A讀下一位DJNZ R4,RE00RET溫 度 值 BCD 碼 處 理 子 程 序; ;*CONVTEMP: MOV A,TEMPH ; 判溫度是否零下JZ TEMPC1溫度零上轉(zhuǎn)CLR CMOV A,TEMPL二進制數(shù)求補(雙字節(jié))CPL A取反加 1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH; 負溫度標(biāo)志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1:MOV TEMP

43、HC,#0AH; 正溫度標(biāo)志MOV TEMPFC,#0AHTEMPC11:MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘 0.0625MOV DPTR,#TEMPDOTTABMOVC A,A+DPTRMOV TEMPLC,A;TEMPLC LOW小數(shù)部分BCD整數(shù)部分 取出高四位取出低四位重新組合MOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLMOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A

44、,#0F0HSWAP A;TEMPHC LOWORL A,TEMPHCMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A;TEMPLC HIORL A,TEMPLCMOV TEMPLC,A十位數(shù) BCD個位數(shù) BCDMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,A百位數(shù) BCDMOV A,TEMPHC ;TEMPHC HIANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12:RET.*-十 進 制 轉(zhuǎn) 換 子 程 序*HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHX

45、CH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小數(shù)部分碼DB 05H,05H,06H,06H,07H,08H,08H,09H.*查詢溫度報警值子程序; 指針指到顯示信息區(qū); 顯示在第二行; 加載TH 數(shù)據(jù); 設(shè)置顯示位置; 顯示數(shù)據(jù); 加載 TL 數(shù)據(jù); 設(shè)置顯示位置; 顯示數(shù)據(jù)*LOOK_ALARM: MOV DPTR,#M_ALAX2MOV A,#2LCALL LCD_PRINTMOV A,#0C6HLCALL TEMPBJ1MOV A,TEMP_THMOV LCD_X,#3LCAL

46、L SHOW_DIG2HMOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TLMOV LCD_X,#12LCALL SHOW_DIG2LRETM_ALAX1: DB LOOK ALERT TEMP,0M_ALAX2: DB HIGH: LOW: ,0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2; 指針指到顯示信息區(qū)MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ2RETLCD 顯 示 子 程 序BJ2: DB 00H,C; ;*SHOW_DIG2H:

47、 MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L:MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCDXMOV A,BMOV B,LCD_XADD A,#30H LCALL LCDP2RET顯 示 區(qū) BCD 碼 溫 度 值 刷 新 子 程 序;*DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A;小數(shù)位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A;個位MOV A,TEMPH

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論