2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程論文(設計)</b></p><p>  基于51單片機的溫度報警器的設計</p><p>  51Mcu-basde design of a temperature alarm</p><p>  提交日期:2014年6月</p><p><b>  目 錄</b&g

2、t;</p><p><b>  摘要4</b></p><p><b>  1 引言4</b></p><p><b>  1.1課題背景4</b></p><p>  1.2研究內容和意義6</p><p><b>  2 芯片介紹

3、6</b></p><p>  2.1 DS18B20概述6</p><p>  2.1.1 DS18B20封裝形式及引腳功能7</p><p>  2.1.2 DS18B20內部結構7</p><p>  2.1.3 DS18B20供電方式9</p><p>  2.1.4 DS18B20的測溫

4、原理10</p><p>  2.1.5 DS18B20的ROM命令12</p><p>  2.2 AT89C52概述13</p><p>  2.2.1單片機AT89C52介紹13</p><p>  2.2.2功能特性概述13</p><p>  3 系統硬件設計14</p><p

5、>  3.1 單片機最小系統的設計14</p><p>  3.2 溫度采集電路的設計15</p><p>  3.3 LED顯示報警電路的設計16</p><p><b>  4 總結16</b></p><p><b>  致謝17</b></p><p>

6、;<b>  參考文獻18</b></p><p>  附錄A 總電路圖19</p><p>  附錄B 原器件清單19</p><p>  附錄C 溫度報警器部分程序20</p><p><b>  摘 要</b></p><p>  隨著時代的進步和發展,

7、溫度的測試已經影響到我們的生活、工作、科研、各個領域,已經成為了一種非常重要的事情,因此設計一個溫度測試的系統勢在必行。</p><p>  本文主要介紹了一個基于AT89C52單片機的數字溫度報警器系統。詳細描述了利用數字溫度傳感器DS18B20開發測溫系統的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統流程進行了詳盡分析,對各部分的電路也一一進行了介紹,該系統可以方便的實現溫度的采集和報警,并

8、可以根據需要任意上下限報警溫度,它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優點,適合于我們日常生活和工、農業生產中的溫度測量,也可以當做溫度處理模塊潛入其他系統中,作為其他主系統的輔助擴展。DS18B20與AT89C52結合實現最簡溫度報警系統,該系統結構簡單,抗干擾能力強,適合于惡劣環境下進行現場溫度測量,有廣泛的應用前景。</p><p>  關鍵詞:單片機;溫度檢測;AT89C52;

9、DS18B20;</p><p><b>  1 引言</b></p><p><b>  1.1課題背景</b></p><p>  溫度是工業對象中主要的被控參數之一,如冶金、機械、食品、化工各類工業生產中,廣泛使用的各種加熱爐、熱處理爐、反應爐等,對工件的溫度處理要求嚴格控制。隨著科學技術的發展,要求溫度測量的范圍向

10、深度和廣度發展,以滿足工業生產和科學技術的要求。</p><p>  基于AT89C51單片機提高了系統的可移植性、擴展性,利于現代測控、自動化、電氣技術等專業實訓要求。以單片機為核心設計的溫度報警器,具有安全可靠、操作簡單方便、智能控制等優點。</p><p>  溫度對于工業生產如此重要,由此推進了溫度傳感器的發展。溫度傳感器主要經過了三個發展階段[1]:</p><

11、;p> ?。?)模擬集成溫度傳感器。該傳感器是采用硅半導體集成工藝制成,因此亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一(僅測量溫度)、</p><p>  測溫誤差小、價格低、響應速度快、傳輸距離遠、體積小、微功耗等特點,適合遠距離測溫、控溫,不需要進行非線性校準,外圍電路簡單。它是目前在國內外應用最為普遍的一種集成傳感器,典型產品有AD590、AD592、TMP17、LM135等;</

12、p><p> ?。?)模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關、可編程溫度控制器,典型產品有LM56、AD22105和MAX6509。某些增強型集成溫度控制器(例如TC652/653)中還包含了A/D轉換器以及固化好的程序,這與智能溫度傳感器有某些相似之處。但它自成系統,工作時并不受微處理器的控制,這是二者的主要區別;</p><p> ?。?)智能溫度傳感器 (亦稱數字溫度傳感

13、器)。智能溫度傳感器是在20世紀90年代中期問世的,其內部都包含溫度傳感器、A/D轉換器、信號處理器、存儲器(或寄存器)和接口電路。有的產品還帶多路選擇器、中央控制器(CPU)、隨機存取存儲器(RAM)和只讀存儲器(ROM)。智能溫度傳感器的特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎上通過軟件來實現測試功能的,其智能化程度也取決于軟件的開發水平。</p><p>  

14、現代信息技術的三大基礎是信息采集[2](即傳感器技術)、信息傳輸(通信技術)和信息處理(計算機技術)。傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器被廣泛用于工農業生產、科學研究和生活等領域,數量高居各種傳感器之首。數字溫度傳感器可以直接將被檢測的溫度信息以數字化形式輸出,與傳統的模擬式溫度傳感器相比,具有測量精度高、功耗低、穩定性好、外圍接口電路簡單特點。而單片機微處理器越來越豐富的外圍功能模塊,更加方便了數字式溫度傳感器輸出信號

15、的處理。</p><p>  智能溫度傳感器內部都包含溫度傳感器、A/D轉化器、信號處理器、存儲器(或寄存器)和接口電路。有的產品還帶多路選擇器、中央處理器(CPU)、隨機存取存儲器(RAM)和只讀存儲器(ROM)。并且它是在硬件的基礎上通過軟件來實現測試功能的,其智能化程度也取決于軟件的開發水平。進入21世紀后,智能溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性及安全性、開發虛擬傳感器和網絡傳感器、研制單

16、片機測溫系統等的方向發展。數字化溫度傳感器可以直接將溫度量以數字脈沖信號形式輸出,具有測量精度高、抗干擾能力強、傳輸距離遠、外圍接口電路簡單等諸多優點。同時數字溫度傳感器還可直接與微處理器進行接口,大大方便了傳感器輸出信號的處理.數字單總線溫度傳感器是目前最新的測溫器件,它集溫度測量,A/D轉換于一體,具有單總線結構,數字量輸出,直接與微機接口等優點。</p><p>  1.2研究內容和意義</p>

17、<p>  本溫度報警器以AT89C51單片機為控制核心,由一數字溫度傳感器DS18B20測量被控溫度,結合7段LED以及驅動LED的74LS245組合而成。當被測量值超出預設范圍則發出警報,且精度高,適用于大多數工業生產以及教育教學領域。</p><p>  溫度是一種最基本的環境參數,它是與人類的生活、工作關系最密切的物理量,也是各門學科與工程研究設計中經常遇到和必須精確測量的物理量。從工業爐溫

18、、環境氣溫到人體溫度;從空間、海洋到家用電器,各個技術領域都離不開測溫和控溫。因此,研究溫度的測量和控制方法具有重要的意義。</p><p><b>  設計原理</b></p><p><b>  2 芯片介紹</b></p><p>  2.1 DS18B20概述</p><p>  DS18B

19、20是Dallas公司繼DS1820后推出的一種改進型智能數字溫度傳感器,與傳統的熱敏電阻相比,只需一根線就能直接讀出被測溫度值,并可根據實際需求來編程實現9~12位數字值的讀數方式[3]。</p><p>  2.1.1 DS18B20封裝形式及引腳功能</p><p>  圖2.1 DS18B20封裝形式和引腳功能</p><p>  如圖2.1所示,DS18B

20、20的外形如一只三極管,引腳名稱及作用如下:</p><p><b>  GND:接地端。</b></p><p>  DQ:數據輸入/輸出腳,與TTL電平兼容。</p><p>  VDD:可接電源,也可接地。因為每只DS18B20都可以設置成兩種供電方式,即數據總線供電方式和外部供電方式。采用數據總線供電方式時VDD接地,可以節省一根傳輸線

21、,但完成數據測量的時間較長;采用外部供電方式則VDD接+5V,多用一根導線,但測量速度較快。</p><p>  2.1.2 DS18B20內部結構</p><p>  圖2.2中出示了DS18B20 的主要內部部件,下面對DS18B20內部部分進行簡單的描述[4]:</p><p>  (1)64位ROM。64位ROM是由廠家使用激光刻錄的一個64位二進制ROM代

22、碼,是該芯片的標識號,如表2.1所示:</p><p>  表2.1 64位ROM標識</p><p>  第1個8位表示產品分類編號,DS18B20的分類號為10H;接著為48位序列號。它是一個大于281*1012的十進制編碼,作為該芯片的唯一標示代碼;最后8位為前56位的CRC循環冗余校驗碼,由于每個芯片的64位ROM代碼不同,因此在單總線上能夠并接多個DS18B20進行多點溫度實習檢

23、驗。</p><p> ?。?)溫度傳感器。溫度傳感器是DS18B20的核心部分,該功能部件可完成對溫度的測量通過軟件編程可將-55~125℃范圍內的溫度值按9位、10位、11位、12位的分辨率進行量化,以上的分辨率都包括一個符號位,因此對應的溫度量化值分別為0.5℃、0.25℃、0.125℃、0.0625℃,即最高分辨率為0.0625℃。芯片出廠時默認為12位的轉換精度。當接收到溫度轉換命令(44H)后,開始轉

24、換,轉換完成后的溫度以16位帶符號擴展的的二進制補碼形式表示,存儲在高速緩存器RAM的第0,1字節中,二進制數的前5位是符號位。如果測得的溫度大于0,這5位為0,只要將測得的數值乘上0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測得的數值需要取反加1再乘上0.0625即可得到實際溫度。</p><p> ?。?)高速緩存器。DS18B20內部的高速緩存器包括一個高速暫存器RAM和一個非易失性可電擦除的

25、EEPROM。非易失性可點擦除EEPROM用來存放高溫觸發器TH、低溫觸發器TL和配置寄存器中的信息。</p><p> ?。?)配置寄存器。配置寄存器的內容用于確定溫度值的數字轉換率。DS18B20工作是按此寄存器的分辨率將溫度轉換為相應精度的數值,它是高速緩存器的第5個字節,該字節定義如表2.2所示:</p><p>  表2.2 匹配寄存器</p><p>

26、  TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式,在DS18B20出廠時該位被設置為0,用戶不要去改動;R1和R0用來設置分辨率;其余5位均固定為1。DS18B20分辨率的設置如表2.3所示:</p><p>  表2.3 DS18B20分辨率的設置</p><p>  DS18B20依靠一個單線端口通訊。在單線端口條件下,必須先建立ROM 操作協議,才能進行存儲器和

27、控制操作。因此,控制器必須首先提供下面5個ROM 操作命令之一:</p><p><b>  1)讀ROM;</b></p><p><b>  2)匹配ROM;</b></p><p><b>  3)搜索ROM;</b></p><p><b>  4)跳過ROM

28、;</b></p><p><b>  5)報警搜索。</b></p><p>  這些命令對每個器件的激光ROM 部分進行操作,在單線總線上掛有多個器件時,可以區分出單個器件,同時可以向總線控制器指明有多少器件或是什么型號的器件。成功執行完一條ROM 操作序列后,即可進行存儲器和控制操作,控制器可以提供6 條存儲器和控制操作指令中的任一條。一條控制操作命

29、令指示DS18B20完成一次溫度測量。測量結果放在DS18B20的暫存器里,用一條讀暫存器內容的存儲器操作命令可以把暫存器中數據讀出。溫度報警觸發器TH 和TL 各由一個EEPROM字節構成。如果沒有對DS18B20使用報警搜索命令,這些寄存器可以做為一般用途的用戶存儲器使用??梢杂靡粭l存儲器操作命令對TH 和TL 進行寫入,對這些寄存器的讀出需要通過暫存器。所有數據都是以最低有效位在前的方式進行讀寫。</p><p

30、>  2.1.3 DS18B20供電方式</p><p>  DS18B20可以采用外部電源供電和寄生電源供電兩種模式。外部電源供電模式是將DS18B20的GND直接接地,DQ與但單總線相連作為信號線,VDD與外部電源正極相連。如圖2.3所示:</p><p>  圖中DS18B20的DQ端口通過接入一個4.7K的上拉電阻到VCC,從而實現外部電源供電方式。</p>&

31、lt;p>  寄生電源供電模式如圖2.4所示:從圖中可知,DS18B20的GND和VDD均直接接地,DQ與單總線相連,單片機其中一個I/O口與DS18B20的DQ端相連。</p><p>  2.1.4 DS18B20的測溫原理</p><p>  DS18B20的測溫原理如圖2.5所示, 其主要由斜率累加器、溫度系數振蕩器、減法計數器、溫度存儲器等功能部件組成。</p>

32、<p>  圖2.5 DS18B20的測溫原理</p><p>  DS1820 是這樣測溫[5]的:用一個高溫度系數的振蕩器確定一個門周期,內部計數器在這個門周期內對一個低溫度系數的振蕩器的脈沖進行計數來得到溫度值。計數器被預置到對應于-55℃的一個值。如果計數器在門周期結束前到達0,則溫度寄存器(同樣被預置到-55℃)的值增加,表明所測溫度大于-55℃。同時,計數器被復位到一個值,這個值由斜坡式

33、累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性。然后計數器又開始計數直到0,如果門周期仍未結束,將重復這一過程。</p><p>  斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨率。這是通過改變計數器對溫度每增加一度所需計數的的值來實現的。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數器的值和每一度的計數值。</p><p>  DS18B

34、20內部對此計算的結果可提供0.5℃的分辨率。溫度以16bit帶符號位擴展的二進制補碼形式讀出,表2.4 給出了溫度值和輸出數據的關系。數據通過單線接口以串行方式傳輸。DS18B20測溫范圍-55℃~+125℃,以0.5℃遞增。</p><p>  表2.4 溫度數據關系</p><p>  S18B20遵循單總線協議,每次測溫時都必須有4個過程[6]:</p><p&

35、gt;<b>  ? 初始化;</b></p><p>  ? 傳送ROM 操作命令;</p><p>  ? 傳送ROM操作命令;</p><p><b>  ? 數據交換;</b></p><p>  2.1.5 DS18B20的ROM命令</p><p>  read

36、ROM(讀ROM).命令代碼為33H,允許主設備讀出DS18B20的64位二進制ROM代碼。該命令只適用于總線上存在單個DS18B20.</p><p>  Match ROM(匹配ROM)。命令代碼為55H,若總線上有多個從設備時,適用該命令可選中某一指定的DS18B20,即只有和64位二進制ROM代碼完全匹配的DS18B20才能響應其操作。</p><p>  Skip ROM(跳過R

37、OM)。命令代碼為CCH,在啟動所有DS18B20轉換之前或系統只有一個DS18B20時,該命令將允許主設備不提供64位二進制ROM代碼就適用存儲器操作命令。</p><p>  Search ROM(搜索ROM)。命令代碼為F0H,當系統初次啟動時,主設備可能不知縱向上有多少個從設備或者它們的ROM代碼,適用該命令可確定系統中的從設備個數及其RON代碼。</p><p>  Alarm

38、ROM(報警搜索ROM)。命令代碼為ECH,該命令用于鑒別和定位系統中超出程序設定的報警溫度值。</p><p>  Write scratchpad(寫暫存器)。命令代碼為4EH,允許主設備向DS18B20的暫存器寫入兩個字節的數據,其中第一個字節寫入TH中,第二個字節寫入TL中??梢栽谌魏螘r刻發出復位命令終止數據的寫入。</p><p>  Read scratchpad(讀暫存器)。

39、命令代碼為BEH,允許主設備讀取暫存器中的內容。從第一個字節開始直到讀完第九個字節CRC讀完。也可以在任何時刻發出復位命令中止數據的讀取操作。</p><p>  Copy scratchpad(復制暫存器)。命令代碼為48H,將溫度報警觸發器TH和TL中的字節復制到非易失性EEPROM。若主機在該命令之后又發出讀操作,而DS18B20又忙于將暫存器中的內容復制到EEPROM時,DS18B20就會輸出一個“0”,

40、若復制結束,則DS18B20輸出一個“1”。</p><p>  Convert T(溫度轉換)。命令代碼為44H,啟動一次溫度轉換,若主機在該命令之后又發出其它操作,而DS18B20又忙于溫度轉換,DS18B20就會輸出一個“0”,若轉換結束,則DS18B20輸出一個“1”。</p><p>  Recall E2(拷回暫存器)。命令代碼為B8H。將溫度報警觸發器TH和TL中的字節從EE

41、PROM中拷回到暫存器中。該操作是在DS18B20上電時自動執行,若執行該命令后又發出讀操作,DS18B20會輸出溫度轉換忙標識:0為忙,1完成。</p><p>  Read power supply(讀電源使用模式)。命令代碼為B4H。主設備將該命令發給DS18B20后發出讀操作,DS18B20會返回它的電源使用模式:0為寄生電源,1為外部電源。</p><p>  2.2 AT89C

42、52概述</p><p>  2.2.1單片機AT89C52介紹</p><p>  AT89C52是一個低電壓,高性能CMOS8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,AT89C

43、52單片機在電子行業中有著廣泛的應用。</p><p>  2.2.2 主要功能特性</p><p>  1、兼容MCS51指令系統   2、8k可反復擦寫(大于1000次)Flash ROM;   3、32個雙向I/O口;   4、256x8bit內部RAM;   5、3個16位可編程定時/計數器中斷;   6、時鐘頻率0-24MHz;   7、2個串行中斷,可編程UART串行通道;  

44、 8、2個外部中斷源,共8個中斷源;   9、2個讀寫中斷口線,3級加密位;   10、低功耗空閑和掉電模式,軟件設置睡眠和喚醒功能;   11、有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應不同產品的需求。</p><p><b>  3 系統硬件設計</b></p><p>  3.1 單片機最小系統的設計</p><p>

45、  單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能集成到一塊硅片上構成的一個小而完善的計算機系統。本次課程設計中選用AT89C52式單片機,其最小系統主要由電復位、振蕩電路組成。單片機的最小系統如圖3所示。</p><p>  單片機的復位電路原理是在單片機的復位引腳RST上電阻和電容,實現上

46、電復位。當復位電平持續兩個時鐘周期以上時復位有效。復位電路由按鍵復位和上電復位兩部分組成,上電復位是在復位引腳上連接一個電容到VCC,再連接一個電阻到GND;按鍵復位是在復位電容上并聯一個開關,當開關按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持一段時間的高電平來使單片機復位。</p><p>  AT89C51單片機使用12MHZ的晶振最為振蕩源,由于單片機內部有振蕩電路,所以外部只要連接一

47、個晶振和兩個電容即可,電容一般在15pF至50pF之間。外部晶振結合單片機內部電路產生單片機所需的時鐘頻率。</p><p>  圖3 單片機最小系統</p><p>  3.2 溫度采集電路的設計</p><p>  溫度采集電路部分,采用數字溫度傳感器DS18B20進行溫度采集。DS18B20是DALLAS公司生產的一線式數字溫度傳感器,具有3個引腳;溫度側量范

48、圍為-55℃—+125℃,測量精度為0.5℃;被測溫度用符號擴展的16位數字量方式串行輸出;CPU只需用一個端口線就可以與DS18B20通信。溫度采集電路如圖4所示。</p><p><b>  圖4 溫度采集電路</b></p><p>  3.3 LED顯示報警電路的設計</p><p>  LED數碼管與單片機的P0口相連,單片機將采集到

49、的溫度值轉化為與數碼管對應的數據,通過P0口輸出顯示。即信號通過譯碼管的端口a、b、c、d、e、f、g 、dp 端來控制每段譯碼管的亮滅與否,同時通過端口1、2、3、4 四個端口來控制四個譯碼管。在本次設計中,用集成芯片74HC245驅動數碼管。同時當采集到的溫度值超過所設置的范圍時,單片機會輸出一信號,通過三極管放大后驅動蜂鳴器發出報警信號。LED數碼管報警電路</p><p><b>  4 總結&

50、lt;/b></p><p>  本設計是以溫度采集及控制過程設計為總目標,以89C52單片機最小應用系統為總控制中心,輔助設計有溫度采樣電路、A/D轉換接口、加熱電路、LED數碼管動態串行顯示器等。</p><p>  本設計的重點、難點是:</p><p> ?。?) 要掌握溫度傳感器的原理、結構、應用等;</p><p> ?。?

51、) 考慮從非電量信號到電量信號的電路實現原理以及與單片機的接口;</p><p> ?。?) 熟悉MCS-51編程的技術,實現單片機對溫度的調節控制;</p><p> ?。?) 整體電路的仿真調試。</p><p>  本次設計優點:采用的單片機AT89C51 性價比高;熱敏電阻溫度傳感器轉化溫度的方法非常簡潔且精度高、測試范圍較廣。</p><

52、;p>  由于時間及精力所限,對溫度控制系統做了整體設計,具體實現了其中的溫度報警部分設計,即溫度控制系統的采集、顯示及報警模塊。</p><p><b>  實物圖如下:</b></p><p><b>  致謝</b></p><p>  在論文完成之際,我要對任課老師**老師表示衷心的感謝。*老師在課堂上的教學

53、生動形象,語言幽默睿智,我們都很喜歡。</p><p>  由于本人學識有限,加之時間倉促,文中不免有錯誤和待改進之處,真誠歡迎各位老師提出寶貴意見。</p><p><b>  參考文獻:</b></p><p>  [1]鐘曉偉,宋哲存,基于單片機的實驗是溫濕度控制系統設計 [A] 林業機械與木工設備</p><p>

54、;  [2]葉景,基于單片機的溫度控制系統的設計 經驗與交流,2008</p><p>  [3]楊光友.單片機微型計算機原理及接口技術[M].北京:中國水利水電出版社,2002</p><p>  [4]李丹妮,單片機溫度控制系統設計[J]九江學院報2005</p><p>  [5]ATMLE Corporation,8-Bit Microcontroller

55、AT89C51 DATE SHEET.0265F-A-12/97</p><p>  [6]胡壽松,自動控制原理[M]北京:科學出版社,2007</p><p>  [7]劉篤仁,韓保君,傳感器原理及應用技術 西安電子科技大學出版社,2008</p><p>  [8]梅麗鳳,王艷秋,汪毓鐸,張軍,單片機原理及接口技術 清華大學出版社2006</p>

56、<p>  [9]深圳市計算機行業協會,2005年全國單片機與嵌入式系統學術交流會,北京航空航天大學出版社,2005</p><p>  [10]張義和,陳敵北,例說8051[M]北京:人民郵電出版社,2006</p><p>  [11] 張開生,郭國法,MCS-51單片機溫度控制系統的設計[J]微型計算機信息,2005</p><p>  [12]Da

57、llas Semiconductor,Programmable Resolution 1-WIRE Digital Thermometer DS18B20 DATE SHEET.</p><p><b>  附錄A:總電路圖</b></p><p><b>  附錄B:原器件清單</b></p><p>  附錄C:溫度報

58、警器部分程序</p><p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p> 

59、 sbit DQ=P3^7; </p><p>  sbit beep=P3^0; </p><p>  void reset(); //DS18B20復位函數 </p><p>  void write_byte(uchar val); //DS18B20寫命令函數

60、</p><p>  uchar read_byte(void); //DS18B20讀1字節函數 </p><p>  void read_temp(); //溫度讀取函數 </p><p>  void LED_display();</p><p>  void alarm();&

61、lt;/p><p>  uchar tempH,tempL,num;</p><p>  uchar table[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的LED字符編碼 </p><p>  uchar setValue_low=15;</p><p>  

62、uchar setValue_high=30;</p><p><b>  main()</b></p><p><b>  { </b></p><p><b>  while(1)</b></p><p><b>  { </b></p>

63、<p>  read_temp();</p><p>  LED_display();</p><p><b>  alarm();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  

64、void delay(uint t)</p><p><b>  {</b></p><p>  for(;t>0;t--);</p><p><b>  }</b></p><p>  void reset() //DS18B20的復位</p><p><b

65、>  {</b></p><p>  uchar presence=1;</p><p>  while(presence)</p><p><b>  {</b></p><p>  while(presence)</p><p><b>  {</b>&

66、lt;/p><p>  DQ=1;_nop_();_nop_();</p><p><b>  DQ=0;</b></p><p>  delay(50);</p><p><b>  DQ=1;</b></p><p><b>  delay(6);</b>

67、;</p><p>  presence=DQ;</p><p><b>  }</b></p><p>  delay(45);</p><p>  presence=~DQ;</p><p><b>  }</b></p><p><b>

68、;  DQ=1;</b></p><p><b>  }</b></p><p>  void write_byte(uchar val)//DS18B20寫一個字節 </p><p><b>  {</b></p><p><b>  uchar i;</b>

69、;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p>  DQ=1;_nop_();_nop_();</p><p>  DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();</p><p> 

70、 DQ=val&0x01;</p><p><b>  delay(6);</b></p><p>  val=val>>1;</p><p><b>  }</b></p><p><b>  DQ=1;</b></p><p>&

71、lt;b>  _nop_();</b></p><p><b>  }</b></p><p>  uchar read_byte(void)//DS18B20讀一個字節 </p><p><b>  {</b></p><p><b>  uchar i;&l

72、t;/b></p><p>  uchar value=0;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p>  DQ=1;_nop_();_nop_();</p><p>  value>>=1;</p&

73、gt;<p><b>  DQ=0;</b></p><p>  _nop_();_nop_();_nop_();_nop_();</p><p>  DQ=1;_nop_();_nop_();_nop_();_nop_();</p><p><b>  if(DQ)</b></p><p

74、>  value|=0x80;</p><p><b>  delay(6);</b></p><p><b>  }</b></p><p><b>  DQ=1;</b></p><p>  return(value);</p><p><

75、;b>  }</b></p><p>  void read_temp() //從DS18B20讀取溫度值 </p><p><b>  { </b></p><p>  uchar ch1,ch2;</p><p><b>  reset();</b></p&

76、gt;<p>  write_byte(0xcc);</p><p>  write_byte(0x44);</p><p><b>  reset();</b></p><p>  write_byte(0xcc);</p><p>  write_byte(0xbe);</p><p

77、>  ch1=read_byte(); //DS18B20的溫度數值是16位的二進制,精度高,最后四位是溫度的小數部分,最高五位為符號位(即正負溫度) </p><p>  ch2=read_byte();</p><p>  num=(ch2<<4)|(ch1>>4); //只取溫度值的中間八位,小數部分舍去,符號位舍去四位。</p>

78、<p>  tempH=num/10;//溫度的十位</p><p>  tempL=num-tempH*10;//溫度的個位</p><p><b>  }</b></p><p>  void LED_display() //顯示檢測的溫度 </p><p><b>  

79、{</b></p><p><b>  P2=0x0;</b></p><p><b>  P2=2;</b></p><p>  P0=table[tempL];</p><p>  delay(50);</p><p><b>  P2=0x0;&l

80、t;/b></p><p><b>  P2=1;</b></p><p>  P0=table[tempH];</p><p>  delay(50);</p><p><b>  P2=0x0;</b></p><p><b>  }</b>&

81、lt;/p><p>  void alarm() //報警 </p><p><b>  {</b></p><p>  if(setValue_low<=num && setValue_high>=num) </p><p>  beep=1; //在溫度允許范圍,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論