單片機課程設計---單片機控制的溫度測試儀的設計_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計</b></p><p>  題 目 : 單片機控制的溫度測試儀的設計</p><p>  學院名稱 : 電氣工程學院</p><p>  班 級 : 本09通信工程02班</p><p>  學 號 : </p&g

2、t;<p>  學生姓名 :   </p><p>  指導老師 : </p><p>  教研室主任 : </p><p><b>  二零一二年六月</b></p><p>  單片機控制的溫度測量儀設計</p>

3、<p><b>  摘要</b></p><p>  由于單片機技術領域正得到越來越廣泛你的應用,世界上許多集成電路生產廠家相繼 </p><p>  推出了各種類型的單片機,其中,STC89C52單片機以優(yōu)越的性能,成熟的技術,迅速占領了相關市場。STC89C52

4、單片機最小系統(tǒng)主要由STC89C52,RS232串口電路,晶振電路,復位電路等組成,其優(yōu)點是功能強,體積小,可靠性高,造價低和開發(fā)周期短,在日常中也發(fā)揮了很大的作用。本系統(tǒng)是利用STC89C52單片機,溫度傳感器DS18B20,蜂鳴器等元器件,構成一個溫度檢測的單片機小系統(tǒng)。</p><p>  關鍵字:STC89C52單片機 DS18B20 最小系統(tǒng) 溫度檢測 報警</p><

5、;p><b>  Abstract</b></p><p>  Because single chip technology is getting more and more extensive application of you, many of the world's integrated circuit manufacturers successively Rolled

6、 out of the various types of single chip microcomputer, among them, STC89C52 single-chip microcomputer with superior performance, mature technology, quickly occupied the relevant market. STC89C52 single chip minimize sys

7、tem mainly by the STC89C52, RS232 serial interface circuit, crystals circuit, reset circuit and other components, its adva</p><p>  Keyword: STC89C52 single chip DS18B20 Minimum system Temperature det

8、ection Alarm</p><p><b>  目 錄</b></p><p>  1 系統(tǒng)方案設計及論證4</p><p>  1.1 設計任務與要求4</p><p><b>  1.2設計分析4</b></p><p>  1.3 各模塊方案論證

9、5</p><p>  1.3.1 控制器模塊5</p><p>  1.3.2 顯示模塊5</p><p>  1.3.3 溫度檢測模塊5</p><p>  2 單元電路介紹6</p><p>  2.1 STC89C52單片機介紹6</p><p>  2.2 溫度傳

10、感器DS18B20介紹10</p><p>  2.2.1 DS18B20測溫原理11</p><p>  2.2.2 DS18B20 的管腳排列及封裝11</p><p>  2.2.3 DS18B20內部構成12</p><p>  2.3 四位共陽數(shù)碼管介紹13</p><p>  2.4 報

11、警電路14</p><p>  3 系統(tǒng)整體電路圖15</p><p>  3.1 系統(tǒng)原理圖15</p><p>  4 軟件設計16</p><p>  6 心得體會18</p><p><b>  參考文獻:19</b></p><p><b&

12、gt;  附錄20</b></p><p>  附錄1:元器件清單20</p><p>  附錄2:程序清單21</p><p>  附錄3 任務書26</p><p>  1 系統(tǒng)方案設計及論證</p><p>  1.1 設計任務與要求</p><p>  題目:一個典

13、型單片機應用系統(tǒng)設計</p><p>  要求:輸入信號為傳感器、電壓、電流、開關等形式,單片機型號可以自己選擇(51,128,430等),輸出控制信號為模擬電壓或者數(shù)字信號,控制對象可以是電機(直流電機,步進電機)、開關、顯示器等。</p><p><b>  1.2設計分析</b></p><p>  要成功實現(xiàn)設計任務與要求,系統(tǒng)必須具備

14、以下功能模塊:單片機最小系統(tǒng)、溫度檢測模塊、顯示模塊。本系統(tǒng)由溫度傳感器DS18B20檢測溫度,通過單片機采集分析數(shù)據(jù),然后送到數(shù)碼管上顯示。</p><p><b>  整體系統(tǒng)框圖如下:</b></p><p>  圖1.1 整體系統(tǒng)框圖</p><p>  1.3 各模塊方案論證

15、 </p><p>  1.3.1 控制器模塊</p><p>  方案一:采用FPGA作為主控制器。FPGA內部具有獨立的I/O 接口和邏輯單元,使用靈活,適用性強,且相對單片機來說,還有速度快,外圍電路較少,集成度高的特點,因此特別適用于復雜邏輯電路設計。但是FPGA的成本偏高,算術運算能力不強,而且由于本設計對輸出處理的速度要求不高,所以FPGA高速處理的優(yōu)勢得不到充分體現(xiàn)。&l

16、t;/p><p>  方案二:采用ARM7TDMI-S微控制器LPC2148。32位的LPC2148工作電壓為3.3V,典型工作電流為53mA,工作頻率可高達60MHz,具有45個可承受5V電壓的I/O口,內置寬范圍的串行通信接口,采用3級流水線工作模式,具有掉電和空閑兩種低功耗工作模式。</p><p>  方案三:采用STC89C52RC單片機作為主控制器,其有40個引腳,32個獨立的I/

17、O 口,二個外部中斷,三個定時/計數(shù)器,雖然相對FPGA來說在功能和速度上有點差異, 但單片機算術運算功能強,軟件編程靈活、可用軟件較簡單的實現(xiàn)各種算法和邏輯控制,并且由于其成本低、體積小、技術成熟和功耗小等優(yōu)點,開發(fā)過程中可以利用的資源和工具豐富。</p><p>  由于是單片機課程設計,系統(tǒng)擬采用方案三,使用STC89C52RC單片機作為本系統(tǒng)的主控制器。</p><p>  1.3

18、.2 顯示模塊</p><p>  方案一:使用數(shù)碼管進行顯示,按鍵用于切換顯示。可采用周立功公司生產的ZLG7290芯片來配合控制器對數(shù)碼管和按鍵進行控制,該芯片具有I2C 串行接口,只需占用控制器3個管腳,便可方便地控制數(shù)碼管顯示和檢測按鍵。 </p><p>  方案二:用12864液晶,12864液晶能同時顯示64個字符或32個漢字,工作電壓為5V,顯示內容多,操作方便,顯示清晰

19、,不需額外電路。</p><p>  方案選擇:由于不需要顯示漢字,只需要顯示溫度數(shù)字,綜合考慮選擇方案一 </p><p>  1.3.3 溫度檢測模塊</p><p>  方案一:采用熱敏電阻,利用溫度不同其電阻值不同的特性,用A/D轉換器測量其兩端的電壓便能知道溫度的高低。這種設計簡單,但是測量復雜,不夠精確。</p><p>  方

20、案二:采用溫度和濕度轉換器DHT11同時測量溫度和濕度,該芯片的溫度誤差為正負2度,誤差過大。</p><p>  方案三:采用數(shù)字溫度傳感器DS18B20,耐磨耐碰,體積小,接口電路簡單,測量精度高。通過編程便能完成溫度數(shù)據(jù)的處理</p><p>  綜合分析,本系統(tǒng)擬采用方案三,采用DS18B20完成測溫部分。</p><p><b>  2 單元電

21、路介紹</b></p><p>  2.1 STC89C52單片機介紹</p><p>  STC89C52是一種帶8K字節(jié)閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機。該器件采用ATMEL搞密度非易失存儲器制造技術制造,與工業(yè)標準的

22、MCS-51指令集和輸出管腳相兼容。單片機總控制電路如下圖1—1:</p><p>  圖1—1單片機總控制電路</p><p><b>  1.時鐘電路</b></p><p>  STC89C52內部有一個用于構成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產生或外部方式產生。內部方式的時鐘

23、電路,在RXD和TXD引腳上外接定時元件,內部振蕩器就產生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調的作用。</p><p>  外部方式的時鐘電路RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內時鐘發(fā)生器把振蕩頻率兩分頻,

24、產生一個兩相時鐘P1和P2,供單片機使用。</p><p> ?。╝)內部方式時鐘電路 (b)外部方式時鐘電路</p><p><b>  圖1—2時鐘電路</b></p><p><b>  2.復位及復位電路</b></p><p><b>  (1)復位操作</b

25、></p><p>  復位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵重新啟動。</p><p>  除PC之外,復位操作還對其他一些寄存器有影響,它們的復位狀態(tài)如表1-1所示。</p><p>  表

26、1-1 一些寄存器的復位狀態(tài)</p><p> ?。?)復位信號及其產生</p><p>  RST引腳是復位信號的輸入端。復位信號是高電平有效,其有效時間應持續(xù)24個振蕩周期(即二個機器周期)以上。若使用頗率為6MHz的晶振,則復位信號持續(xù)時間應超過4us才能完成復位操作。產生復位信號的電路邏輯如圖1—3所示:</p><p>  圖1—3復位信號的電路邏輯圖&

27、lt;/p><p>  整個復位電路包括芯片內、外兩部分。外部電路產生的復位信號(RST)送至施密特觸發(fā)器,再由片內復位電路在每個機器周期的S5P2時刻對施密特觸發(fā)器的輸出進行采樣,然后才得到內部復位操作所需要的信號。</p><p>  復位操作有上電自動復位相按鍵手動復位兩種方式。</p><p>  上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的,其電路如圖1—

28、4(a)所示。這佯,只要電源Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位,即接通電源就成了系統(tǒng)的復位初始化。</p><p>  按鍵手動復位有電平方式和脈沖方式兩種。其中,按鍵電平復位是通過使復位端經電阻與Vcc電源接通而實現(xiàn)的,其電路如圖1—4(b)所示;而按鍵脈沖復位則是利用RC微分電路產生的正脈沖來實現(xiàn)的,其電路如圖1—4(c)所示:</p><p> ?。╝)上電復位

29、 (b)按鍵電平復位 (c)按鍵脈沖復位</p><p><b>  圖1—4復位電路</b></p><p>  STC89C52具體介紹如下:</p><p> ?、?主電源引腳(2根)</p><p>  VCC(Pin40):電源輸入,接+5V電源</p><p>  G

30、ND(Pin20):接地線</p><p> ?、谕饨泳д褚_(2根)</p><p>  XTAL1(Pin19):片內振蕩電路的輸入端</p><p>  XTAL2(Pin20):片內振蕩電路的輸出端</p><p><b> ?、劭刂埔_(4根)</b></p><p>  RST/VPP

31、(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。</p><p>  ALE/PROG(Pin30):地址鎖存允許信號</p><p>  PSEN(Pin29):外部存儲器讀選通信號</p><p>  EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存儲器讀指令。</p>

32、;<p> ?、芸删幊梯斎?輸出引腳(32根)</p><p>  STC89C52單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。</p><p>  PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><p>  P1口(Pin1~Pin8):8位準雙向I/O

33、口線,名稱為P1.0~P1.7 </p><p>  P2口(Pin21~Pin28):8位準雙向I/O口線,名稱為P2.0~P2.7 </p><p>  P3口(Pin10~Pin17):8位準雙向I/O口線,名稱為P3.0~P3.7</p><p>  STC89C52主要功能如表1-2所示:</p><p>  表1-2 STC89C

34、52主要功能</p><p>  2.2 溫度傳感器DS18B20介紹</p><p>  該芯片采用美國DALLAS公司生產的 DS18B20可組網數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數(shù)字測溫和控制領域。</p><p>  其主要有以下應用特點:</p><p> ?、侏毺氐膯?/p>

35、線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。   </p><p> ?、跍y溫范圍 -55℃~+125℃,固有測溫分辨率0.5℃。   </p><p> ?、壑С侄帱c組網功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。   </p&

36、gt;<p>  ④工作電源: 3~5V/DC   </p><p> ?、菰谑褂弥胁恍枰魏瓮鈬?  </p><p>  ⑥測量結果以9~12位數(shù)字量方式串行傳送   </p><p> ?、卟讳P鋼保護管直徑Φ6   </p><p>  ⑧適用于DN15~25, DN40~DN250各種介質工業(yè)管道和狹小空間設備測溫

37、 ?、針藴拾惭b螺紋 M10X1, M12X1.5, G1/2”任選  </p><p> ?、釶VC電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。</p><p>  DS18B20采用獨特的一線接口,只需要一條口線通信。多點能力,簡化了分布式溫度傳感應用,無需外部元件,可用數(shù)據(jù)總線供電,電壓范圍為3.0 V至5.5 V 無需備用電源 測量溫度范圍為-55 ° C至+

38、125 ℃ 。華氏相當于是-67 ° F到257華氏度 -10 ° C至+85 ° C范圍內精度為±0.5 ° C</p><p>  圖2.2(a) DS18B20溫度格式表</p><p>  圖2.2(b) DS18B20與單片機接口圖</p><p>  2.2.1 DS18B20測溫原理</p&

39、gt;<p>  圖1.2.1 DS18B20 的內部測溫電路框圖</p><p>  低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數(shù)器1,為計數(shù)器提供一頻率穩(wěn)定的計數(shù)脈沖。高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,很敏感的振蕩器,所產生的信號作為減法計數(shù)器2的脈沖輸入,為計數(shù)器2提供一個頻率隨溫度變化的計數(shù)脈沖。圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B2

40、0就對低溫度系數(shù)振蕩器產生的時鐘脈沖進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃ 所對應的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器 1 和溫度寄存器被預置在-55℃ 所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產生的脈沖信號進

41、行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值。</p><p>  2.2.2 DS18B20 的管腳排列及封裝</p><p>  圖2.2. 2 DS18B20 實物管腳分布圖<

42、/p><p>  DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端,電源</p><p>  電 3.0~5.5V (在寄生電源接線方式時接地)。</p><p>  2.2.3 DS18B20內部構成</p><p>  DS18B20 內部結構主要由四部分組成:64 位光刻 ROM 、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器

43、 TH 和 TL 、配置寄存器。</p><p>  光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開始 8 位(地址: 28H )是產品類型標號,接著的 48 位是該 DS18B20 自身的序列號,并且每個 DS18B20 的序列號都不相同,因此它可以看作是該 DS18B20 的地址序列碼;最后 8 位則是前面 56 位的循

44、環(huán)冗余校驗碼( CRC=X8+X5+X4+1 )。由于每一個 DS18B20 的 ROM 數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對多個 DS18B20 進行尋址,從而實現(xiàn)一根總線上掛接多個 DS18B20的目的</p><p>  圖2.2.3DS18B20內部結構圖</p><p>  2.3 四位共陽數(shù)碼管介紹 </p><p>  數(shù)

45、碼管按連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應用時應將公共極COM接到+5V,當某一字段發(fā)光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。本系統(tǒng)采用的是共陽數(shù)碼管。下面是其原理圖。 </p><p>  圖3(a)共陽數(shù)管原理圖</p><p>  如圖是一個四

46、位一體共陽數(shù)碼管,BIT1-BIT4是四位數(shù)碼管的正極。A-G分別對應個段的負極。其內部框圖如下:</p><p>  圖3(b) 共陽數(shù)碼管內部框圖</p><p><b>  2.4 報警電路</b></p><p>  當溫度超過程序設定的最大溫度時,蜂鳴器會發(fā)出報警聲</p><p>  圖4(a)蜂鳴器連接電

47、路 </p><p>  圖4中蜂鳴器使用的是PNP三極管進行驅動控制的,此蜂鳴器為電磁式有源蜂鳴器。三極管的集電極通過蜂鳴器接5V電源,基極是控制端,發(fā)射極接地,當單片機的P2.3輸出低電平時,三極管導通,蜂鳴器發(fā)聲。蜂鳴器為感性原件,也可以在兩端并接一個二極管來起到泄放作用。</p><p>  3 系統(tǒng)整體電路圖</p><p><b>  3.1

48、 系統(tǒng)原理圖</b></p><p><b>  圖3.1系統(tǒng)原理圖</b></p><p>  3.2 系統(tǒng)PCB圖</p><p>  圖3.2系統(tǒng)PCB圖</p><p><b>  4 軟件設計</b></p><p>  發(fā)送端軟件設計流程圖如下圖所

49、示。</p><p><b>  5 調試 </b></p><p>  完成程序下載后進行調試時,四位數(shù)碼管只有中間兩位顯示,經過排查,發(fā)現(xiàn)是由于虛焊導致,重新焊接后,數(shù)碼管能正確顯示溫度,將打火機靠近溫度傳感器DS18B20時,明顯看到數(shù)碼管上溫度數(shù)字不斷升高,當超過程序中設定的35°時發(fā)生報警。</p><p><b&g

50、t;  6 心得體會</b></p><p>  通過兩周的單片機課程設計我學到了很多在課本上學不到的東西,要完成一個設計,不僅需要豐富的知識,還要有嚴謹?shù)膽B(tài)度。制作實物毫無疑問增強了自己的動手能力,制作PCB板得整個流程我都完整的經歷了一遍,其中的一些細節(jié)問題還真是不能忽視,比如不小心虛焊了就不能實現(xiàn)功能,還要花很多時間來排查問題??傊ㄟ^這次設計,我懂得了理論與實踐的相結合的重要意義,學會了堅持

51、,耐心和努力,我想這為自己今后的學習和工作做出了最好的榜樣。</p><p>  我想單片機這門課程的重要性對于我們專業(yè)來說是不言而喻的。所以通過這樣一次課程設計我體會到了自己這方面知識還不是很扎實,特別是對于編寫程序方面,我還有很多問題,我還要加強平常的練習和學習 ,進一步提高自己。</p><p><b>  參考文獻: </b></p><p

52、>  黃智偉.凌陽單片機課程設計[M]. 北京:北京航空航天大學出版社,2007.6</p><p>  胡漢才,單片機原理及其接口技術,清華大學出版社</p><p>  黃智偉.無線數(shù)字收發(fā)電路設計[M].北京:電子工業(yè)出版社.2004年</p><p>  黃智偉.全國大學生電子設計競賽制作實訓[M].北京:北京航空航天大學出版社,2006.</p

53、><p>  黃智偉.全國大學生電子設計競賽 技能訓練(第2版)[M].北京:北京航空航天大學出版社,2011.1,全國大學生電子設計競賽“十二五”規(guī)劃教材</p><p>  黃智偉.全國大學生電子設計競賽 電路設計(第2版)[M].北京:北京航空航天大學出版社,2011.1,全國大學生電子設計競賽“十二五”規(guī)劃教材</p><p><b>  附錄<

54、/b></p><p><b>  附錄1:元器件清單</b></p><p><b>  表附-1元器件清單</b></p><p><b>  附錄2:程序清單</b></p><p>  #include < reg51.h ></p>&

55、lt;p>  #include < intrins.h ></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit DQ = P3^7 ; //定義DS18B20端口DQ</p><p>  sbit

56、 BEEP=P3^6 ; //蜂鳴器驅動線</p><p>  sbit wei1 =P2^4;</p><p>  sbit wei2 =P2^5;</p><p>  sbit wei3 =P2^6;</p><p>  sbit wei4 =P2^7;</p><p>  bit presence ;<

57、/p><p>  unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,</p><p>  0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;///*小數(shù)位表,四舍五入*/</p><p>  unsigned char data temp_

58、data[2] = {0x00,0x00} ;</p><p>  unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;</p><p>  uchar code table[]={0xc0,0xf9,0xa4,0xb0,</p><p>  0x99,0x92,0x82,0xf8,</

59、p><p>  0x80,0x90,0x88,0x83,</p><p>  0xc6,0xa1,0x86,0x8e};</p><p>  uchar code table1[]={0x40,0x79,0x24,0x30,</p><p>  0x19,0x12,0x02,0x78,</p><p>  0x00,0x1

60、0,0x08,0x03,</p><p>  0x46,0x21,0x06,0x0e,0x3f/*(橫杠和小數(shù)點*/,0x7f/*(只顯示小數(shù)點*/};</p><p>  void beep() ;</p><p>  unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}

61、;</p><p>  #define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;</p><p>  /**************延時1MS*******************************/</p><p>  void delay_ms(int ms)</p><

62、p><b>  {</b></p><p>  unsigned char y ;</p><p>  while(ms--)</p><p><b>  {</b></p><p>  for(y = 0 ; y<250 ; y++)</p><p><b

63、>  {</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b>

64、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*us級延時函數(shù) */</p><

65、p>  /*******************************************************************/</p><p>  void delay_us(unsigned int num)</p><p><b>  {</b></p><p>  while( --num ) ;</p&g

66、t;<p><b>  }</b></p><p>  /*初始化ds1820 */</p><p>  /*******************************************************************/</p><p&g

67、t;  Init_DS18B20(void)</p><p><b>  {</b></p><p>  //DQ = 1 ; //DQ復位</p><p>  //Delay(8) ; //稍做延時</p><p>  DQ = 0 ; //單片機將DQ拉低</p><p&

68、gt;  delay_us(600) ; //精確延時 大于 480us</p><p>  DQ = 1 ; //拉高總線</p><p>  delay_us(8) ;</p><p>  presence = DQ ; //如果=0則初始化成功 =1則初始化失敗</p><p>  delay_us(100) ;&

69、lt;/p><p><b>  DQ = 1 ;</b></p><p>  return(presence) ; //返回信號,0=presence,1= no presence</p><p><b>  }</b></p><p>  /* 讀一個字節(jié) */

70、</p><p>  /*******************************************************************/</p><p>  ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i = 0 ;&

71、lt;/p><p>  unsigned char dat = 0 ;</p><p>  for (i = 8 ; i > 0 ; i--)</p><p><b>  {</b></p><p>  DQ = 0 ; // 給脈沖信號</p><p>  dat >>= 1 ;&

72、lt;/p><p>  DQ = 1 ; // 給脈沖信號</p><p><b>  if(DQ)</b></p><p>  dat |= 0x80 ;</p><p>  delay_us(4) ;</p><p><b>  }</b></p><p&

73、gt;  return (dat) ;</p><p><b>  }</b></p><p>  /* 寫一個字節(jié) */</p><p>  /************************************************************

74、*******/</p><p>  void WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i = 0 ;</p><p>  for (i = 8 ; i > 0 ; i--)</p><

75、;p><b>  {</b></p><p><b>  DQ = 0 ;</b></p><p>  DQ = dat&0x01 ;</p><p>  delay_us(5) ;</p><p><b>  DQ = 1 ;</b></p>&l

76、t;p><b>  dat>>=1 ;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /* 讀取溫度 */</p><p>  /*******

77、************************************************************/</p><p>  void Read_Temperature(void)</p><p><b>  {</b></p><p>  Init_DS18B20() ;</p><p>  Writ

78、eOneChar(0xCC) ; // 跳過讀序號列號的操作</p><p>  WriteOneChar(0x44) ; // 啟動溫度轉換</p><p>  Init_DS18B20() ;</p><p>  WriteOneChar(0xCC) ; //跳過讀序號列號的操作</p><p>  WriteOneChar(0xB

79、E) ; //讀取溫度寄存器</p><p>  temp_data[0] = ReadOneChar() ; //溫度低8位</p><p>  temp_data[1] = ReadOneChar() ; //溫度高8位</p><p><b>  }</b></p><p>  /* 數(shù)據(jù)轉換與溫度顯示

80、 */</p><p>  /*******************************************************************/</p><p>  void Disp_Temperature()</p><p><b>  {&

81、lt;/b></p><p>  display[4]=temp_data[0]&0x0f ;</p><p>  display[0]=ditab[display[4]] ; //查表得小數(shù)位的值</p><p>  display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&am

82、p;0x0f)<<4) ;</p><p>  display[3]=display[4]/100 ;</p><p>  display[1]=display[4]%100 ;</p><p>  display[2]=display[1]/10 ;</p><p>  display[1]=display[1]%10 ;<

83、;/p><p>  P0 = table[display[3]];</p><p><b>  wei1=0;</b></p><p><b>  wei2=1;</b></p><p><b>  wei3=1;</b></p><p><b>

84、  wei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei1=1;</b></p><p>  P0 = table[display[2]];</p><p><b>  wei1=1;</b></p><p>

85、;<b>  wei2=0;</b></p><p><b>  wei3=1;</b></p><p><b>  wei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei2=1;</b></p&

86、gt;<p>  P0 = table1[display[1]];</p><p><b>  wei1=1;</b></p><p><b>  wei2=1;</b></p><p><b>  wei3=0;</b></p><p><b>  w

87、ei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei3=1;</b></p><p>  P0 = table[display[0]];</p><p><b>  wei1=1;</b></p><p>&l

88、t;b>  wei2=1;</b></p><p><b>  wei3=1;</b></p><p><b>  wei4=0;</b></p><p>  delay_us(100);</p><p><b>  wei4=1;</b></p>

89、<p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /* 蜂鳴器響一聲 */</p><p>  /********************

90、***********************************************/</p><p>  void beep()</p><p><b>  {</b></p><p>  unsigned char y ;</p><p>  for (y=0 ;y<100 ;y++)</p&g

91、t;<p><b>  {</b></p><p>  delay_us(30) ;</p><p>  BEEP=!BEEP ; //BEEP取反</p><p><b>  }</b></p><p>  BEEP=1 ;

92、 //關閉蜂鳴器</p><p>  //delay_us(40000) ;</p><p><b>  }</b></p><p>  /* 主函數(shù) */</p><p>  /************************************/</p><p>  v

93、oid main()</p><p><b>  {</b></p><p>  uchar warn_temp;</p><p>  Read_Temperature() ;</p><p>  delay_ms(200); //延時200ms,跳過傳感器初始化時的溫度</p><p>

94、<b>  do</b></p><p><b>  {</b></p><p>  Read_Temperature() ;</p><p>  warn_temp=display[2]*10+display[1];</p><p>  if(warn_temp>34) //35度時報

95、警</p><p><b>  {</b></p><p>  Disp_Temperature() ;</p><p><b>  beep() ;</b></p><p><b>  }</b></p><p>  Disp_Temperature(

96、) ; </p><p><b>  }</b></p><p>  while(!presence) ;</p><p><b>  do</b></p><p><b>  {</b></p><p>  Init_DS18B20() ;<

97、/p><p><b>  beep() ;</b></p><p><b>  }</b></p><p>  while(presence) ;</p><p><b>  }</b></p><p><b>  附錄3 任務書</b&g

98、t;</p><p>  南華大學電氣工程學院 </p><p>  《單片機課程設計》任務書</p><p>  設計題目: 一個典型的單片機應用系統(tǒng)設計 </p><p>  專 業(yè): 本09通信01/02班 </p><p>  學生姓名: 學

99、 號: </p><p>  起迄日期: 2012年5月27日 ~2012年6月9日 </p><p>  指導教師: </p><p>  教研室主任: </p><p>  《單片機課程設計》任務書</p>

溫馨提示

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

評論

0/150

提交評論