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

下載本文檔

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

文檔簡介

1、<p>  畢 業(yè) 設(shè) 計 (論 文)</p><p>  機械與電氣工程學院 系(院)電氣自動化技術(shù) 專業(yè)</p><p>  畢業(yè)設(shè)計(論文)題目 數(shù)字溫度計設(shè)計 </p><p>  學生姓名 </p><p>  班 級

2、 </p><p>  學 號 </p><p>  指導教師 </p><p>  完成日期 2011 年 6 月 12 日</p><p><b

3、>  摘要</b></p><p>  隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活,工作,科研,各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機控制的數(shù)字溫度計,本設(shè)計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設(shè)計控制器使用單片機AT89S51,測溫傳感器使用DS18B

4、20,本溫度計可調(diào)整顯示日期、時間,可設(shè)定最低、最高溫度報警值。測量溫度超過設(shè)定的溫度上、下限,啟動蜂鳴器和指示燈報警。溫度顯示穩(wěn)定。實現(xiàn)溫度顯示,能準確達到以上要求。</p><p>  關(guān)鍵詞: AT89S51 數(shù)字溫度計 DS18B20 </p><p><b>  ABSTRACT</b></p><p>  Along with

5、the time progress and the development, the monolithic integrated circuit technology already popularized to us lives, the work, the scientific research, each domain, will already become one kind of quite mature technology

6、, this article introduced one kind the digital thermometer which controlled based on the monolithic integrated circuit.This design introduced the digital thermometer and the traditional thermometer compares, has the read

7、ing to be convenient, measured the warm scope is </p><p>  KeyWord: AT98s51; thermometer; DS18B20</p><p><b>  目 錄</b></p><p><b>  摘要I</b></p><p&g

8、t;  ABSTRACTII</p><p><b>  第1章 緒論1</b></p><p><b>  1.1 引言1</b></p><p>  1.2數(shù)字溫度計設(shè)計方案論證1</p><p>  1.2.1方案一1</p><p>  1.2.2 方案二

9、1</p><p>  第2章 數(shù)字溫度計詳細設(shè)計3</p><p>  2.1 主控制器AT89S513</p><p>  2.1.1 AT89s51的特點及特性:3</p><p>  2.1.2管腳功能說明4</p><p>  2.1.3.振蕩器特性5</p><p>  2

10、.1.4.芯片擦除5</p><p>  2.2溫度采集部分的設(shè)計6</p><p>  2.2.1.溫度傳感器DS18B206</p><p>  2.2.2 DS18B20溫度傳感器與單片機的接口電路9</p><p>  2.3顯示部分電路設(shè)計11</p><p>  2.3.1 74LS164引腳功能

11、及特性11</p><p>  2.3.2 顯示電路13</p><p>  2.4 報警電路的實現(xiàn)14</p><p>  2.5報警上下限調(diào)整電路實現(xiàn)14</p><p>  2.6 復位電路的實現(xiàn)14</p><p>  第3章 系統(tǒng)軟件設(shè)計15</p><p><b&g

12、t;  3.1主程序15</b></p><p>  3.2讀出溫度子程序15</p><p>  3.3溫度轉(zhuǎn)換命令子程序16</p><p>  3.4 計算溫度子程序17</p><p>  3.5 顯示數(shù)據(jù)刷新子程序17</p><p><b>  結(jié)語18</b>

13、</p><p><b>  參考文獻19</b></p><p><b>  致謝20</b></p><p><b>  附錄21</b></p><p><b>  第1章 緒論 </b></p><p><b&g

14、t;  1.1 引言</b></p><p>  隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p>  本設(shè)計所介紹的數(shù)字溫度計與傳統(tǒng)的溫

15、度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,該設(shè)計控制器使用單片機AT89S51,測溫傳感器使用DS18B20,用3位共陽極LED數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求。</p><p>  隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活,工作,科研,各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機控制的數(shù)字溫度計,本溫度計屬于多功能溫度計,可以設(shè)置上下

16、報警溫度,當溫度不在設(shè)置范圍內(nèi)時,可以報警。</p><p>  1.2數(shù)字溫度計設(shè)計方案論證</p><p><b>  1.2.1方案一</b></p><p>  由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被

17、測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p>  1.2.2 方案二 </p><p>  (1)進而考慮到用溫度傳感器,在單片機電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,就可以滿足設(shè)計要求。</p><p>  從以上兩種

18、方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。</p><p>  (2)方案二的總體設(shè)計框圖</p><p>  溫度計電路設(shè)計總體設(shè)計方框圖如圖1-1所示,控制器采用單片機AT89S51,溫度傳感器采用DS18B20,用4位LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。</p><p>  圖1-1 總體設(shè)計方框圖</p>

19、<p>  第2章 數(shù)字溫度計詳細設(shè)計</p><p>  2.1 主控制器AT89S51</p><p>  2.1.1 AT89S51的特點及特性:</p><p>  AT89S51引腳圖如圖2-1所示,共有40個引腳,4k bytes flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)

20、口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(wd電路,片內(nèi)時鐘振蕩器。</p><p>  圖2-1 AT89S1引腳圖    此外,AT89S51設(shè)計和配置了振蕩頻率可為0hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功

21、能直至外中斷激活或硬件復位。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p><b>  主要功能特性:</b></p><p>  · 兼容mcs-51指令系統(tǒng) · 4k可反復擦寫(>1000次)isp flash rom  · 32個雙向i/o

22、口 · 4.5-5.5v工作電壓   · 2個16位可編程定時/計數(shù)器 · 時鐘頻率0-33mhz  · 全雙工uart串行中斷口線 · 128x8bit內(nèi)部ram  · 2個外部中斷源 · 低功耗空閑和省電模式  &

23、#183; 中斷喚醒省電模式 · 3級加密位 </p><p>  · 看門狗(wdt)電路 · 軟件設(shè)置空閑和省電功能  · 靈活的isp字節(jié)和分頁編程 · 雙數(shù)據(jù)寄存器指針</p><p>  2.1.2管腳功能說明</p>&l

24、t;p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸

25、入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P

26、2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。&

27、lt;/p><p>  P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為AT89C51的一些特殊功能口,如所述:</p><p>  P3口管腳 備選功能</p

28、><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)</p><p>  P3.2 /INT0(外部中斷0)</p><p>  P3.3 /INT1(外部中斷1)</p><p>  P3.4 T0(記時器0外部輸入) </p><p>  P3.5

29、T1(記時器1外部輸入) </p><p>  P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)</p><p>  P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p><p>  P3口同時為閃爍編程和編程校驗接收一些控制信號。 </p><p>  RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 A

30、LE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略

31、微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。   </p><p>  /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程

32、序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p>  XTAL2:來自反向振蕩器的輸出。</p><p>  2.1.3.振蕩器特性</p>

33、<p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。</p><p>  2.1.4.芯片擦除</p><p>  整個PEROM陣列和三個鎖定

34、位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。</p><p>  此外,AT89S51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁

35、止所用其他芯片功能,直到下一個硬件復位為止。單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。</p><p>  單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。</p><p>  2.

36、2溫度采集部分的設(shè)計</p><p>  2.2.1.溫度傳感器DS18B20</p><p>  DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。 </p><p>  TO-92封裝的DS18B20的引腳排

37、列見下圖(底視圖),其引腳功能描述見表2-1。</p><p>  圖2-2 DS18B20底視圖</p><p>  表2-1 DS18B20詳細引腳功能描述</p><p>  DS18B20的性能特點如下:</p><p>  ●獨特的單線接口僅需要一個端口引腳進行通信;</p><p>  ●多個DS18B20

38、可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;</p><p><b>  ●無須外部器件;</b></p><p>  ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p><b>  ●零待機功耗;</b></p><p>  ●溫度以9或12位數(shù)字;</p><p&

39、gt;  ●用戶可定義報警設(shè)置;</p><p>  ●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;</p><p>  ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; </p><p>  DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2-3所示。</p><p>  圖

40、2-3 DS18B20內(nèi)部結(jié)構(gòu)</p><p>  64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。</p><p>  DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EER

41、AM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動

42、,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p>  圖2-4  DS18B20字節(jié)定義</p><p>  由表2-2可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。</p><p>  高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前

43、面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p>  當DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><p>  當符號位S=0時,表示測得的溫度值為

44、正值,可以直接將二進制位轉(zhuǎn)換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表2-2是一部分溫度值對應(yīng)的二進制溫度數(shù)據(jù)。</p><p>  表2-2 DS18B20溫度轉(zhuǎn)換時間表</p><p>  DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報警標志位置位,并對主機發(fā)出

45、的報警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時測量溫度并進行報警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。</p><p>  DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固

46、定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1溫度寄存器被預(yù)置在 -55℃所對應(yīng)的一個基數(shù)值。</p>&l

47、t;p>  減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1預(yù)置值減到0,溫度寄存器的值將加1減法計數(shù)器1預(yù)置將重新被裝入,減法計數(shù)器1新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復上述過程,直到溫度寄存器值大致被測溫度值。</p><p&

48、gt;  表2-3 一部分溫度對應(yīng)值表</p><p>  另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p>  2.2.2 DS18B20溫度傳感器與單片機的接口電路</p><

49、;p>  DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖2-5 所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。</p><p>  圖2-5 DS18B20與單片機的接口電路</p><p>  當DS18

50、B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。

51、而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先,其復位時序如圖2-6所示。</p><p>  圖2-6 DS18B20的復位時序</p><p>  1. DS18B20的讀時序</p><p>  對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程

52、。</p><p>  對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。其時序圖如圖2-7所示。</p><p>  圖2-7 DS18B20的讀時序圖</p><p>  2. DS18B20的寫時序</p><

53、p>  對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。其時序圖如圖2-8所示。</p><p>  圖2-8 DS18B20的寫時序圖</p>

54、<p>  2.3顯示部分電路設(shè)計</p><p>  2.3.1 74LS164引腳功能及特性</p><p>  74LS164是一個串入并出的8位移位寄存器,其引腳圖如圖2-9所示。它常用于單片機系統(tǒng)中,下面總結(jié)一下這個元件的基本知識。</p><p>  圖2-9 74 LS164引腳圖</p><p>  圖2-10

55、74LS164功能圖</p><p>  表2-4 74LS164邏輯符合表</p><p><b>  ●串行輸入帶鎖存 </b></p><p>  ●時鐘輸入,串行輸入帶緩沖 </p><p><b>  ●異步清除 </b></p><p>  ●最高時鐘頻率可高達3

56、6Mhz </p><p>  ●功耗:10mW/bit </p><p>  ●74系列工作溫度: 0°C to 70°C </p><p>  ●Vcc最高電壓:7V </p><p>  ●輸入最高電壓:7V </p><p>  ●最大輸出驅(qū)動能力: </p><p>

57、;  ●高電平:-0.4mA</p><p><b>  ●低電平:8mA</b></p><p>  2.3.2 顯示電路</p><p>  顯示電路如圖2-11所示,采用4位共陽LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。 </p><p>  顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點就是使用口資源比較

58、少,該顯示電路只使用單片機的3個端口P1.7,P3.0,P3.1.并配以4片串入并出移位寄存器74LS164(LED驅(qū)動)四只數(shù)碼管采用74LS164右移寄存器驅(qū)動,顯示比較清晰。</p><p><b>  其工作過程如下:</b></p><p>  1.串行數(shù)據(jù)由P3.0發(fā)送,移位時鐘由P3.1送出。</p><p>  2.在移位時鐘的

59、作用下,串行口發(fā)送緩沖器的數(shù)據(jù)一位一位地移入74LS164中。</p><p>  3.四片74LS164串級擴展為4個8位并行輸出口,分別連接到4個LED顯示器的段選端作靜態(tài)顯示。</p><p>  圖2-11 溫度顯示電路</p><p>  2.4 報警電路的實現(xiàn)</p><p>  圖2-12中蜂鳴器可以在被測溫度不在上下限范圍內(nèi)時

60、,發(fā)出報警鳴叫聲音,同時LED數(shù)碼管將沒有被測溫度值顯示</p><p>  2.5報警上,下限調(diào)整電路實現(xiàn)</p><p>  圖2-12中有三個獨立式按鍵可以分別調(diào)整溫度計的上下限報警設(shè)置,圖中蜂鳴器可以在被測溫度不在上下限范圍內(nèi)時,發(fā)出報警鳴叫聲音,同時LED數(shù)碼管將沒有被測溫度值顯示,這時可以調(diào)整報警上下限,從而測出被測的溫度值。</p><p>  2.6

61、 復位電路的實現(xiàn)</p><p>  圖2-12 中的按健復位電路是上電復位加手動復位,使用比較方便,在程序跑飛時,可以手動復位,這樣就不用在重起單片機電源,就可以實現(xiàn)復位。</p><p>  圖2-12 單片機主板電路</p><p>  第3章 系統(tǒng)軟件設(shè)計</p><p>  系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序

62、,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。</p><p><b>  3.1主程序</b></p><p>  圖2-13 主程序流程圖</p><p>  3.2讀出溫度子程序</p><p>  讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖

63、2-14所示。</p><p>  圖2-14 讀溫度流程圖</p><p>  3.3溫度轉(zhuǎn)換命令子程序</p><p>  溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖2-15所示。</p><p>  圖2-15

64、溫度轉(zhuǎn)換流程圖</p><p>  3.4 計算溫度子程序</p><p>  計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖2-16所示。</p><p>  圖2-16 計算溫度流程圖</p><p>  3.5 顯示數(shù)據(jù)刷新子程序</p><p>  顯示數(shù)據(jù)刷新子

65、程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖2-17所示。</p><p>  圖2-17 顯示數(shù)據(jù)刷新流程圖</p><p><b>  結(jié)語</b></p><p>  在本次畢業(yè)設(shè)計的過程中,我發(fā)現(xiàn)很多問題,雖然以前還做過這樣的 ,但這次設(shè)計真的讓我長進了很多,單片機畢業(yè)設(shè)計重點

66、就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺得寫好一個程序并不都是一件簡單的事,有好多東西只有我們?nèi)ピ囍隽耍拍苷嬲恼莆眨粚W習理論有些東西是很難理解的,更談不上掌握。</p><p>  在真正遇到問題的時候每個人的能力是有限的,我們一般不能很輕松的去完成一項很重大的事情,這就需要我們有的時候要學會采納別人的建議,去接受別人。不懂的地方要像別人學習,不會就去問,這本身就是個學問

67、,不懂的不問,就做不好學問了。問別人的同時往往是對雙方知識的升華。問別人是解決自己不能解決的問題,同時要考慮為什么會這樣呢。</p><p>  通過這次畢業(yè)設(shè)計我懂得了什么叫做真正的做學問---難!但是還要去做,要有耐心。很多問題不能解決的時候,靜下心來仔細的想想,可能就會有答案了。有時候?qū)嵲谙氩煌ǖ脑捒梢該Q種思路,可能有的問題本身就是一個死角,不能走那條路的。有耐心但是不是單純的耐心。路要走對,錯誤的思維不能

68、堅持,雖然堅持很有道理。</p><p><b>  參考文獻</b></p><p>  [1] 李朝青.單片機原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學出版社,1998</p><p>  [2] 李廣弟.單片機基礎(chǔ)[M].北京:北京航空航天大學出版社,1994</p><p>  [3] 閻石.數(shù)字電子技

69、術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社,1989</p><p>  [4] 廖常初.現(xiàn)場總線概述[J].電工技術(shù),1999.</p><p>  [5] 新穎電子模塊應(yīng)用手冊. 北京:機械工業(yè)出版社,2005.</p><p><b>  致謝</b></p><p>  這次畢業(yè)設(shè)計得到了很多老師、同學的幫助,特

70、別是我的指導老師xx老師對我的關(guān)心和支持尤為重要。每次遇到不懂的問題,我最先做的就是向xx老師尋求幫助,而xx老師每次不管忙或閑,總會抽空來找我面談,然后一起商量解決的辦法。</p><p>  另外,感謝校方給予我這樣一次機會,能夠獨立完成一個課題,并在這個過程當中,給予我們各種方便,使我們在即將離校的最后一段時間里,能夠更多學習一些實踐應(yīng)用知識,增強了我們實踐操作和動手應(yīng)用能力。再一次對我的母校表示感謝。&l

71、t;/p><p>  感謝在整個畢業(yè)設(shè)計期間和我密切合作的同學,和曾經(jīng)在各方面給予過我?guī)椭幕锇閭?,在大學生活即將結(jié)束的最后的日子里,我們再一次演繹了團結(jié)各做的童話,吧一個龐大的,從來沒有上手的畢業(yè)設(shè)計圓滿完成了,正是因為有了你們的幫助,才讓我不僅學到了本次畢業(yè)設(shè)計所涉及的新知識以外的東西,那就是團結(jié)的力量。</p><p>  最后,感謝所有在這次畢業(yè)設(shè)計中給予過我?guī)椭娜恕?lt;/p&g

72、t;<p><b>  附錄</b></p><p>  1. 數(shù)字溫度計部分程序清單</p><p>  1.1 初始化程序</p><p>  S1OK  EQU 5FH</p><p>  TEMPUTER  EQU 39H</p><p>  TEMPH EQU

73、5EH</p><p>  TEMPL EQU 5DH</p><p>  MS50  EQU 5CH</p><p>  SIGN  EQU 5BH</p><p>  S1 BIT P1.0</p><p>  S2 BIT P1.1</p><p>  S3 BIT

74、 P1.2</p><p>  S4 BIT P1.3</p><p>  ORG 0000H</p><p>  LJMP MAIN</p><p>  ORG 000BH</p><p>  LJMP  TOIT</p><p>  ORG 0030H</p>

75、;<p>  MAIN: MOV SP, #60H</p><p>  MOV TMOD, #01H</p><p>  MOV TH0, #3CH </p><p>  MOV TL0, #0B0H</p><p><b>  SETB ET0</b></p>

76、<p><b>  SETB TR0</b></p><p><b>  SETB EA</b></p><p>  MOV TEMPH, #30</p><p>  MOV TEMPL, #9</p><p>  MOV TEMPUTER, #15 ;溫度最始值<

77、/p><p>  MOV S1OK, #00H</p><p>  MOV SIGN, #00H</p><p>  MOV 38H, #0BH</p><p>  MOV 37H, #0CH</p><p>  MOV 36H, #0BH</p><p>  ACALL DIS

78、P</p><p><b>  ACALL T1S</b></p><p>  ; *****************************************</p><p><b>  1.2主程序</b></p><p>  START: JB S1, NET1</p>

79、<p>  ACALL T12MS</p><p>  JB S1, NET1</p><p>  JNB S1, $</p><p><b>  INC SIGN</b></p><p>  MOV A, SIGN</p><p>  CJNE A, #1, TIAO<

80、/p><p>  ACALL TIAOTL</p><p>  TIAO:CJNE A, #2, NET1</p><p>  MOV SIGN, #0</p><p>  ACALL TIAOTH</p><p>  ; *****************************************</p>

81、;<p>  NET1: MOV A, S1OK</p><p>  CJNE A, #1, START</p><p>  MOV A, TEMPUTER</p><p>  SUBB A, TEMPH</p><p>  JNB ACC.7, ALEM</p><p>  MOV

82、 A, TEMPUTER</p><p>  SUBB A, TEMPL</p><p>  JB ACC.7, ALEM</p><p>  SETB P2.1</p><p>  ACALL WENDU</p><p>  ACALL DISP</p><p>  MOV S

83、1OK, #00H</p><p>  AJMP START</p><p>  ALEM: MOV 36H, #0CH</p><p>  MOV 37H, #0CH</p><p>  MOV 38H, #0CH</p><p>  CLR P2.1</p><p>  

84、ACALL DISP</p><p><b>  ACALL T1S</b></p><p>  LCALL WENDU</p><p>  LCALL DISP</p><p>  MOV S1OK, #00H</p><p>  SJMP START</p><p&

85、gt;  ;*****************************************</p><p><b>  1.3溫度總子程序</b></p><p>  ; *****************************************</p><p>  wendu: ACALL INIT_1820</p&g

86、t;<p>  ACALL RE_CONFIG</p><p>  ACALL GET_TEMPER</p><p>  ACALL TEMPER_COV</p><p><b>  RET</b></p><p>  ; ************************************

87、*****</p><p>  1.4 DS18B20初始化程序</p><p>  ; *****************************************</p><p>  INIT_1820:</p><p><b>  SETB P2.0</b></p><p><b

88、>  NOP</b></p><p><b>  CLR P2.0</b></p><p>  MOV R0,#06BH</p><p>  MOV R1,#03H</p><p><b>  TSR1:</b></p><p>  DJNZ R0,TSR1

89、 ; 延時</p><p>  MOV R0,#6BH</p><p>  DJNZ R1,TSR1</p><p><b>  SETB P2.0</b></p><p><b>  NOP</b></p><p><b>  NOP</b></

90、p><p><b>  NOP</b></p><p>  MOV R0,#25H</p><p><b>  TSR2:</b></p><p>  JNB P2.0,TSR3</p><p>  DJNZ R0,TSR2</p><p>  LJMP

91、TSR4 ; 延時</p><p><b>  TSR3:</b></p><p>  SETB 20H.1 ; 置標志位,表示DS1820存在</p><p><b>  LJMP TSR5</b></p><p><b>  TSR4:</b></p><

92、;p>  CLR 20H.1 ; 清標志位,表示DS1820不存在</p><p><b>  LJMP TSR7</b></p><p><b>  TSR5:</b></p><p>  MOV R0,#06BH</p><p>  MOV R1,#03H</p><

93、p>  TSR6:DJNZ R0,TSR6 ; 延時</p><p>  MOV R0,#6BH</p><p>  DJNZ R1,TSR6</p><p>  TSR7:SETB P2.0</p><p><b>  RET</b></p><p>  ; **************

94、***************************</p><p>  1.5重新寫DS18B20暫存存儲器設(shè)定值</p><p>  ; *****************************************</p><p>  RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若DS18B20存在,轉(zhuǎn)RE_CONFIG1</p

95、><p><b>  RET</b></p><p>  RE_CONFIG1:</p><p>  MOV A,#0CCH ; 發(fā)SKIP ROM命令</p><p>  LCALL WRITE_1820</p><p>  MOV A,#4EH ; 發(fā)寫暫存存儲器命令</p><

96、;p>  LCALL WRITE_1820</p><p>  MOV A,#00H ; TH(報警上限)中寫入00H</p><p>  LCALL WRITE_1820</p><p>  MOV A,#00H ; TL(報警下限)中寫入00H</p><p>  LCALL WRITE_1820</p><p&

97、gt;  MOV A,#1FH ; 選擇9位溫度分辨率</p><p>  LCALL WRITE_1820</p><p><b>  RET</b></p><p>  ; *****************************************</p><p>  1.6讀出轉(zhuǎn)換后的溫度值</p&g

98、t;<p>  ; *****************************************</p><p>  GET_TEMPER:</p><p>  SETB P2.0 ; 定時入口</p><p>  LCALL INIT_1820</p><p>  JB 20H.1,TSS2</p><

99、;p>  RET ; 若DS18B20不存在則返回</p><p><b>  TSS2:</b></p><p>  MOV A,#0CCH ; 跳過ROM匹配</p><p>  LCALL WRITE_1820</p><p>  MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令</p><p&

100、gt;  LCALL WRITE_1820</p><p>  LCALL INIT_1820</p><p>  MOV A,#0CCH ; 跳過ROM匹配</p><p>  LCALL WRITE_1820</p><p>  MOV A,#0BEH ; 發(fā)出讀溫度命令</p><p>  LCALL WRITE

101、_1820</p><p>  LCALL READ_18200</p><p>  MOV 37H,A ; 將讀出的溫度數(shù)據(jù)保存</p><p><b>  RET</b></p><p>  ; *****************************************</p><p&

102、gt;  1.7寫DS18B20的程序</p><p>  ; *****************************************</p><p>  WRITE_1820:</p><p><b>  MOV R2,#8</b></p><p><b>  CLR C</b><

103、;/p><p>  WR1:CLR P2.0</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p&g

104、t;<p><b>  RRC A</b></p><p>  MOV P2.0,C</p><p>  MOV R3,#35</p><p><b>  DJNZ R3,$</b></p><p><b>  SETB P2.0</b></p>&

105、lt;p><b>  NOP</b></p><p>  DJNZ R2,WR1</p><p><b>  SETB P2.0</b></p><p><b>  RET</b></p><p>  ; *********************************

106、********</p><p>  1.8 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)</p><p>  ; *****************************************</p><p>  READ_18200:</p><p>  MOV R4,#2 ; 將溫度高位和低位DS18B20中讀

107、 </p><p>  RE00:MOV R2,#8</p><p>  RE01:CLR C</p><p><b>  SETB P2.0</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p&g

108、t;<p><b>  CLR P2.0</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETB P2.0&l

109、t;/b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  MOV C,P2.0</p><p>  MOV R3,#35</p><p><b>  RE20:</b></p>

110、;<p>  DJNZ R3,RE20</p><p><b>  RRC A</b></p><p>  DJNZ R2,RE01</p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p>&

111、lt;p>  DJNZ R4,RE00</p><p><b>  RET</b></p><p>  ; *****************************************</p><p>  1.9 將從DS18B20中讀出的溫度數(shù)據(jù)進行轉(zhuǎn)換</p><p>  ; **************

112、***************************</p><p>  TEMPER_COV:</p><p>  MOV A,#0F0H</p><p>  ANL A,36H ; 舍去溫度低位中小數(shù)點</p><p><b>  SWAP A</b></p><p><b>  

113、MOV 37H,A</b></p><p><b>  MOV A,36H</b></p><p>  JNB ACC.3,TEMPER_COV1 ; 四舍五入去溫度值</p><p><b>  INC 37H</b></p><p>  TEMPER_COV1:</p>

114、<p><b>  MOV A,35H</b></p><p>  ANL A,#07H</p><p><b>  SWAP A</b></p><p>  ADD A,37H</p><p>  MOV 37H,A ; 保存變換后的溫度數(shù)據(jù)</p><p>

115、  LCALL BIN_BCD</p><p><b>  RET</b></p><p>  ; *****************************************</p><p>  1.10 將16進制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼</p><p>  ; 38H中放百位,37十位,36個位</

116、p><p>  ; *****************************************</p><p><b>  BIN_BCD:</b></p><p>  MOV 39H,37H</p><p>  MOV A,37H</p><p>  MOV B,#100&

117、lt;/p><p><b>  DIV AB</b></p><p>  MOV 38H,A</p><p>  MOV 37H,B</p><p>  XCH A,B</p><p>  MOV B,#10</p><p><b>  

118、DIV AB</b></p><p>  MOV 37H,A</p><p>  MOV 36H,B</p><p><b>  RET</b></p><p>  DISP: SETB RS0</p><p>  MOV R0, #36H</p>

119、<p>  MOV R7, #3</p><p>  LOOPP:MOV A, @R0</p><p>  MOV DPTR, #TAB</p><p>  MOVC A, @A+DPTR</p><p>  MOV SBUF, A</p><p>  JNB TI, $</p>

120、<p><b>  CLR TI</b></p><p><b>  INC R0</b></p><p>  DJNZ R7, LOOPP</p><p><b>  CLR RS0</b></p><p><b>  RET</b>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論