激光切割機用的激光器電源溫度監(jiān)控系統(tǒng)的研究論文_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  西安文理學院機械電子工程系</p><p>  本科畢業(yè)設計(論文)</p><p>  題 目 激光切割機用的激光器 </p><p>  電源溫度監(jiān)控系統(tǒng)的研究 </p><p>  專業(yè)班級 08機械2班 </p&

2、gt;<p>  學 號 08102080207 </p><p>  學生姓名 任小杠 </p><p>  指導教師 衛(wèi)軍朝 </p><p>  設計所在單位 西安文理學院

3、 </p><p><b>  2012年 5月</b></p><p>  激光切割機用的激光器電源溫度監(jiān)測系統(tǒng)的研究</p><p><b>  摘要:</b></p><p>  本文所介紹的是一種采用單總線數(shù)字式的溫度傳感器DS18B20與AT89S52單片機組成的新型溫

4、度測量系統(tǒng),并使用LCD1602液晶顯示器將所測溫度顯示出來。該系統(tǒng)以 AT89S52單片機為控制核心,利用新型一線制溫度傳感器 DS18B20測量溫度值,實現(xiàn)環(huán)境溫度的檢測和報警。精度為 0.5℃。用戶可以自定義報警上、下限,一旦溫度超過極限值,單片機便報警系統(tǒng)。該系統(tǒng)精度高、測溫范圍廣、報警及時,可廣泛應用于基于單片機的溫讀報警領域。 </p><p>  關鍵詞:AT89S52單片機;DS18B20溫度傳感

5、器;報警器;LCD1602液晶顯示器</p><p>  The Laser Cutter with Laser Power Supply Temperature Monitoring System of Research</p><p>  Abstract: This paper introduced a single bus is using digital temperatur

6、e sensor DS18B20 and composed of AT89S52 SCM new temperature measuring system, and use LCD1602 LCD monitor will measure temperature display. This system to AT89S52 SCM as control core, to use the new a wire temperature s

7、ensor DS18B20 temperature measurement, the realization environmental temperature detection and alarm. Precision of 0.5 ℃. Users can customize alarm upper and lower limit, once the temperature over limit, mi</p>&l

8、t;p>  Key words: AT89S52 SCM; The temperature sensor DS18B20 ; alarm ; LCD1602 LCD monitor </p><p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1.溫度監(jiān)控

9、系統(tǒng)的發(fā)展與現(xiàn)狀1</p><p>  1.2.選課題的目的和意義2</p><p>  第二章 課程設計任務3</p><p><b>  2.1功能說明3</b></p><p>  第三章 整體設計方案4</p><p>  3.1整體框架及各模塊功能4</p>&

10、lt;p>  第四章 硬件電路設計7</p><p>  4.1傳感器的選擇7</p><p>  4.1.1采用DALLAS最新單線數(shù)字溫度傳感器DS18B20。7</p><p>  4.2單片機的選擇9</p><p>  4.2.1 AT89S52單片機的主要功能9</p><p>  4.2.

11、2 AT89S52單片機的封裝及其引腳功能說明10</p><p>  4.2.3外接晶振或外部振蕩器引腳12</p><p>  4.2.4 AT89S52復位12</p><p>  4.3液晶的選擇13</p><p>  4.3.1 LCD1602液晶顯示介紹13</p><p>  第五章 控

12、制系統(tǒng)軟件設計14</p><p>  5.1 主程序14</p><p>  5.2 子程序14</p><p>  5.2.1讀出溫度子程序14</p><p>  5.2.2溫度轉(zhuǎn)換命令子程序15</p><p>  5.2.3計算溫度子程序16</p><p>  5.2.4

13、顯示數(shù)據(jù)刷新子程序16</p><p>  第六章 電路圖分析18</p><p>  6.1單片機模塊電路圖及分析18</p><p>  6.2液晶顯示模塊電路圖及分析19</p><p>  6.3溫度傳感器模塊電路圖及分析20</p><p>  6.4報警電路模塊22</p>&l

14、t;p><b>  6.5總程序23</b></p><p><b>  結論33</b></p><p><b>  致 謝34</b></p><p><b>  參考文獻35</b></p><p>  附錄一 英文文獻錯誤!未定義書

15、簽。</p><p>  附錄二 中文翻譯錯誤!未定義書簽。</p><p><b>  第一章 緒論</b></p><p>  1.1.溫度監(jiān)控系統(tǒng)的發(fā)展與現(xiàn)狀</p><p>  溫度是一種最基本的環(huán)境參數(shù),對于我們來說,不僅僅是一個量的反映,更能直接影響作用到我們的生活中,人民的生活與環(huán)境的溫度息息相關,在我

16、國以信息化帶動的工業(yè)化正在蓬勃發(fā)展,溫度已成為工業(yè)對象控制中一種重要的參數(shù),特別是在冶金、化工、機械等各類工業(yè)中,廣泛使用各種加熱爐、熱處理爐、反應爐等。由于爐子的種類及原理不同,因此所采用的加熱方法及燃料也不同,如煤氣、天然氣、油電等。對于不同生產(chǎn)情況和工藝要求下的溫度控制,所采用的加熱方式,選用的燃料,控制方案也有所不同。例如冶金、機械、食品、化工等各類工業(yè)生產(chǎn)中廣泛使用的各種加熱爐、熱處理爐、反應爐等;燃料有煤氣、天然氣、油、電等

17、;控制方案有直接數(shù)字控制(DDC),推斷控制,預測控制,模糊控制(Fuzzy),專家控制(Expert Control),魯棒控制(Robust Control),推理控制等。隨著工業(yè)技術的不斷發(fā)展,傳統(tǒng)的控制方式已經(jīng)不能滿足高精度、高速度的控制要求。</p><p>  如接觸器溫度控制儀表,其主要缺點是溫度波動范圍大,由于它主要通過控制接觸器的通斷時間比例來達到改變加熱功率的目的,受儀表本身誤差和交流接觸器

18、的壽命限制,通斷頻率很低。近幾年來快速發(fā)展了多種先進的溫度控制方式,如:PID控制,模糊控制,神經(jīng)網(wǎng)絡及遺傳算法控制等。這些控制技術大大的提高了控制精度,不但使控制變得簡便,而且使產(chǎn)品的質(zhì)量更好,降低了產(chǎn)品的成本,提高了生產(chǎn)效率。</p><p>  單片微型計算機的功能不斷的增強,為先進的控制算法提供的載體,許多高性能的新型機種應運而生。單片機以其功能強、體積小、可靠性高、造價低和開發(fā)周期短等優(yōu)點,成為自動化領

19、域和其他測控領域中廣泛應用的器件,在工業(yè)生產(chǎn)中成為必不可少的器件。在溫度控制系統(tǒng)中,單片機更是起到了不可替代的核心作用。然而一些設備對溫度的控制要求越,而本文則以單片機為核心、設計的激光電源溫度的監(jiān)測及報警控制系統(tǒng)。所以高精度溫度測量系統(tǒng)的研究就非常有意義。</p><p>  1.2.選課題的目的和意義</p><p>  通過對溫度控制系統(tǒng)的設計、制作、以及溫度的信息采集及報警的全過程

20、,提高在單片機的設計和實際操作方面的綜合能力,初步培養(yǎng)在完成設計中所應具備的基本素質(zhì)和要求。</p><p>  培養(yǎng)創(chuàng)新設計及動手能力,通過對多個電路的設計,初步掌握在設計條件和要求的情況下,如何達到以最實用的方法、巧妙合理地去設計系統(tǒng)中的電路及程序,并將其連接到系統(tǒng)中去。</p><p>  培養(yǎng)自己的學習能力,提高查閱資料、語言表達能力和理論聯(lián)系實際的技能。</p>&

21、lt;p>  第二章 課程設計任務</p><p><b>  2.1功能說明</b></p><p>  完成對激光器電源溫度的檢測</p><p>  可以通過按鍵進行溫度上限兩個報警值設定并實現(xiàn)功能;</p><p>  將溫度測量值在LCD1602液晶顯示器顯示顯示;</p><p>

22、;  當溫度大于上限時會亮綠燈燈并長聲報警,當溫度小于下限時會亮紅綠燈。并且斷開電路</p><p>  第三章 整體設計方案</p><p>  3.1整體框架及各模塊功能</p><p>  本系統(tǒng)共分為七個模塊。</p><p>  1、單片機模塊,這部分主要實現(xiàn)數(shù)據(jù)的處理,輸出執(zhí)行,報警設置功能(主要模塊)</p>&l

23、t;p>  2、液晶顯示模塊可以分別顯示實時溫度值,溫度上下限。(主要模塊)</p><p>  3、溫度傳感模塊的主要功能是通過DS18B20的強大功能實現(xiàn)對溫度的采集。(主要模塊)</p><p>  4、繼電器模塊可以控制外圍其他線路,如家居電線總開關。</p><p>  5、蜂鳴器模塊可以發(fā)出報警聲。</p><p>  6、

24、LED燈模塊可以顯示報警信號</p><p>  7、按鍵可以設置時間和上限的兩個溫度值</p><p><b>  圖3.1 整體框圖</b></p><p><b>  圖3.2 總電路圖</b></p><p>  圖3.3單片機溫度實時監(jiān)控報警系統(tǒng)流程圖</p><p&g

25、t;  第四章 硬件電路設計</p><p><b>  4.1傳感器的選擇</b></p><p>  4.1.1采用DALLAS最新單線數(shù)字溫度傳感器DS18B20。</p><p><b>  DS18B20簡介</b></p><p>  DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度

26、傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可在遠端引入,也可采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢

27、測系統(tǒng)。</p><p>  DS1820 單線數(shù)字溫度計特性 </p><p>  ? 獨特的單線接口僅需一個端口引腳進行通訊 </p><p>  ? 簡單的多點分布應用 </p><p><b>  ? 無需外部器件 </b></p><p>  ? 可通過數(shù)據(jù)線供電 </p>

28、<p><b>  ? 零待機功耗 </b></p><p>  ? 測溫范圍-55~+125℃,以 0.5℃遞增 </p><p>  ? 溫度以 9 位數(shù)字量讀出 </p><p>  ? 溫度數(shù)字量轉(zhuǎn)換時間 200ms(典型值) </p><p>  ? 用戶可定義的非易失性溫度報警設置 </p&

29、gt;<p>  ? 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件 </p><p>  ? 應用包括溫度控制、工業(yè)系統(tǒng)、消費品、溫度計或任何熱感測系統(tǒng) </p><p>  DS1820溫度傳感器外觀圖和引腳圖</p><p><b> ?、僖_1接地</b></p><p>  ②引腳2

30、數(shù)字信號輸入/輸出</p><p> ?、垡_3接高電平5V高電平 </p><p>  圖4.1 .1 DS18B20引腳排列</p><p>  圖4.1.2所示為DS18B20的內(nèi)部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲用戶設定的溫度上下限值的TH和TL解發(fā)器存儲與控制邏輯、8位循

31、環(huán)冗余校驗碼(CRC)發(fā)生器等七部分。</p><p>  圖4.1.2DS18B20的內(nèi)部框圖</p><p>  DS18B20工作原理:</p><p>  DS18B20 的工作原理如圖4所示,是用一個高溫度系數(shù)的振蕩器確定一個門周期,內(nèi)部計數(shù)器在這個門周期內(nèi)對一個低溫度系數(shù)的振蕩器的脈沖進行計數(shù)來得到溫度值。計數(shù)器被預置到對應于-55℃的一個值。如果計數(shù)器

32、在門周期結束前到達 0,則溫度寄存器(同樣被預置到-55℃)的值增加,表明所測溫度大于-55℃。 同時,計數(shù)器被復位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性。然后計數(shù)器又開始計數(shù)直到 0,如果門周期仍未結束,將重復這一過程。 </p><p>  斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨力。這是通過改變計數(shù)器對溫度每增加一度所需計數(shù)的的值來

33、實現(xiàn)的。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數(shù)器的值和每一度的計數(shù)值。 </p><p>  圖4.1.3 DS18B20工作原理圖</p><p><b>  4.2單片機的選擇</b></p><p>  單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器

34、ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)。</p><p><b>  單片機的基本特點:</b></p><p>  1高集成度,體積小,高可靠性 </p><p>  單片機將各功能部件集成在一塊晶體芯片上,集成度很高,體積自然也是最小的。芯片本身是按工業(yè)測控環(huán)境要求設計的,內(nèi)部布線

35、很短,其抗工業(yè)噪音性能優(yōu)于一般通用的CPU。單片機程序指令,常數(shù)及表格等固化在ROM中不易破壞,許多信號通道均在一個芯片內(nèi),故可靠性高。 2控制功能強 為了滿足對對象的控制要求,單片機的指令系統(tǒng)均有極豐富的條件:分支轉(zhuǎn)移能力,I/O口的邏輯操作及位處理能力,非常適用于專門的控制功能。 3低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品 為了滿足廣泛使用于便攜式系統(tǒng),許多單片機內(nèi)的工作電壓僅為1.8V~3.6V,

36、而工作電流僅為數(shù)百微安。 4易擴展 片內(nèi)具有計算機正常運行所必需的部件。芯片外部有許多供擴展用的三總線及并行、串行輸入/輸出管腳,很容易構成各種規(guī)模的計算機應用系統(tǒng)。 5優(yōu)異的性能價格比 單片機的性能極高。為了提高速度和運行效率,單片機已開始使用RISC流水線和DSP等技術。單片機的尋址能力也已突破64KB的限制,有的已可達到1MB和16MB,片內(nèi)的ROM容量可達62MB,RAM容量則可達2MB。

37、由于</p><p>  4.2.1 AT89S52單片機的主要功能</p><p> ?。?)8位字長CPU;</p><p> ?。?)振蕩器和時鐘電路,全靜態(tài)操作:0~33MHz;</p><p>  (3)8KB系統(tǒng)內(nèi)可編程Flash存儲器;</p><p>  (4)256B內(nèi)部RAM;</p>

38、<p>  (5)4個I/O端口共32線;</p><p>  (6)3個16位定時/計數(shù)器;</p><p> ?。?)全雙工(UART)串行口通道;</p><p><b> ?。?)ISP端口;</b></p><p><b> ?。?)定時監(jiān)視器;</b></p>

39、<p>  AT89S52系列單片機的基本組成:</p><p>  圖4.2.1單片機基本組成圖</p><p>  4.2.2 AT89S52單片機的封裝及其引腳功能說明</p><p>  圖4.2.2 AT89S52引腳</p><p>  1)VCC:電源電壓+5V (2)GND:接地</p&

40、gt;<p> ?。?)P0口:P0口是8位漏極開路型雙向I/O口,其既可作為地址/數(shù)據(jù)總線復用口,又可作為通用I/O口使用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,該口分時轉(zhuǎn)換低8位地址和數(shù)據(jù)總線,在訪問期間激活內(nèi)部上拉電阻。在作為通用I/O口使用時:作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,在驅(qū)動NMOS電路時,需外接上拉電阻。作為輸入端口用時,要先向鎖存器寫l,這時輸出級2個FET均截止,可用作可作為高阻抗輸入。&

41、lt;/p><p> ?。?)P1口:Pl是一個帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級可驅(qū)動(接收或輸出電流)4個TTL邏輯門電路。對端口寫“l(fā)”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。</p><p> ?。?)P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,該口的輸出緩沖級可驅(qū)動4

42、個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX @DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX @Ri指令)時,P2口線上的內(nèi)容在整個訪問期間不改變。 </p><p> ?。?/p>

43、6)P3口:P3口是一個帶有內(nèi)部上拉電阻的8位雙向I/0口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“l(fā)”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端口時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如下表所示:</p><p><b>  端口引腳第二功能</b></p>

44、;<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 定時/計數(shù)器0外部輸入</p><p&

45、gt;  P3.5 T1 定時/計數(shù)器1外部輸入</p><p>  P3.6 WR 寫選通</p><p>  P3.6 RD 讀選通</p><p> ?。?)EA/VPP:外部訪問允許端。EA端保持低電平時,CPU訪問外部程序存儲器;EA端保持高電平時,CPU則執(zhí)行內(nèi)部程序存儲器中的指令。</p><p>

46、  F1ash存儲器編程時,該引腳加上+12V的編程電壓Vpp。</p><p> ?。?)RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。</p><p>  (9)ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對

47、外輸出時鐘或用于定時目的。每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。</p><p>  (10)XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。</p><p>  (11) XTAL2:振蕩器反相放大器的輸出端。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容C1、C2沒有十分嚴格的要求,如果使用石英晶體,推薦電容值為30pF&#

48、177;10pF</p><p>  4.2.3外接晶振或外部振蕩器引腳</p><p>  XTALl:當外接晶振時,接外部晶體的一個引腳。片內(nèi)振蕩器由一個單級反相器組成,XTALl 為反相器的輸入。當外部振蕩器提供時鐘信號時,則由XTALl 段輸入。</p><p>  XTAL2:接外部晶體的另一個引腳。片內(nèi)為單級反相器的輸出。當由外部時鐘源提供時鐘信號時,則

49、本引腳浮空。</p><p><b>  圖4.6時鐘電路</b></p><p>  4.2.4 AT89S52復位</p><p>  復位是單片機的初始化操作。其主要功能是把 PC初始化為0000H,使CPU從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位

50、鍵重新啟動。</p><p>  MCS-5l系列單片機的復位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài)。復位操作的兩種基本形式為上電復位和上電或開關復位。上電復位要求接通電源后,自動實現(xiàn)復位操作;上電或開關復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。上電后,由于電容C的充電和反相門的

51、作用,使RST持續(xù)一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現(xiàn)上電或開關復位的操作</p><p>  圖4.2.4 AT89S52復位電路圖</p><p><b>  4.3液晶的選擇</b></p><p>  4.3.1 LCD1602液晶顯示介紹</p><

52、;p>  采用LCD1602液晶顯示模塊,有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點,在袖珍式儀表和低功耗應用系統(tǒng)中得到廣泛的應用。目前字符型液晶顯示模塊已經(jīng)是單片機應用設計中最常用的信息顯示器件。它可以顯示兩行,每行16個字符,采用單+5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比</p><p><b>  管腳功能</b></p><p>

53、  1602采用標準的16腳接口</p><p>  第1腳:VSS為電源地</p><p>  第2腳:VDD接5V電源正極</p><p>  第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。 </p><p>  第5腳:R

54、W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 </p><p>  第6腳:E(或EN)端為使能(enable)端。 </p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。 </p><p>  第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極</p><p>  圖4.3.1 LCD1

55、602液晶顯示器及引腳圖</p><p>  第五章 控制系統(tǒng)軟件設計</p><p><b>  5.1 主程序</b></p><p>  系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。</p><p>  主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18

56、B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖20所示。</p><p>  圖5.1主程序流程圖</p><p><b>  5.2 子程序</b></p><p>  5.2.1讀出溫度子程序</p><p>  讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在

57、讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖所示。</p><p>  圖5.2.1 讀溫度流程圖</p><p>  5.2.2溫度轉(zhuǎn)換命令子程序</p><p>  溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖

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

59、</p><p>  顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如5.2.4圖所示。</p><p>  圖 5.2.4數(shù)據(jù)刷新子程序流程圖</p><p>  第六章 電路圖分析</p><p>  6.1單片機模塊電路圖及分析</p><p>

60、;  圖6.1單片機接線圖</p><p>  P0接液晶數(shù)據(jù)口,P2.2和P2.3接2個發(fā)光二極管,P3接8個按鈕,P2.4接蜂鳴器,P2.5接繼電器,P2.6接液晶的RS,P2.7接液晶的EN,P1.2接溫度傳感器,其他按單片機最小系統(tǒng)連接。</p><p>  6.2液晶顯示模塊電路圖及分析</p><p>  圖6.2液晶顯示模塊電路圖</p>

61、<p>  液晶顯示模塊的子程序:</p><p>  void write_com(uchar com)</p><p>  {//寫液晶命令函數(shù)</p><p><b>  rs=0;</b></p><p><b>  lcden=0;</b></p><p&g

62、t;<b>  P0=com;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=

63、0;</b></p><p><b>  }</b></p><p>  void write_date(uchar date)</p><p>  {//寫液晶數(shù)據(jù)函數(shù)</p><p><b>  rs=1;</b></p><p><b>  lc

64、den=0;</b></p><p><b>  P0=date;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(3);</b>&l

65、t;/p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_sfm(uchar add,char date)//1602液晶刷新時分秒函數(shù)1為時,4為分,7為秒</p><p>  {

66、 </p><p>  char shiwei,gewei;</p><p>  shiwei=date/10;</p><p>  gewei=date%10;</p><p>  write_com(0x80+add);</p><p>  write_date(0x30+s

67、hiwei);</p><p>  write_date(0x30+gewei);</p><p><b>  }</b></p><p>  void write_nyr(uchar add,char date)</p><p>  {//1602液晶刷新年月日函數(shù)3為年,6為分,9為秒</p><

68、p>  char shiwei,gewei;</p><p>  shiwei=date/10;</p><p>  gewei=date%10;</p><p>  write_com(0xc0+add);</p><p>  write_date(0x30+shiwei);</p><p>  write_d

69、ate(0x30+gewei);</p><p><b>  }</b></p><p>  6.3溫度傳感器模塊電路圖及分析</p><p>  圖6.3溫度傳感器模塊電路圖</p><p>  溫度傳感器模塊電路圖及分析DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為

70、信號線,3腳接電源.另一種是寄生電源供電方式,如圖13單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電源,可用一個MOSFET管來完成對總線的上拉.。</p><p>  當DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換時,總線上必須有強的上拉,上拉開啟時間最大為10微秒.采用寄生電源供電方式是VDD和GND端均接地.由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。</p>

71、<p><b>  溫度傳感程序</b></p><p>  void dsreset(void) //18B20復位,初始化函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  

72、ds=0;</b></p><p><b>  i=103;</b></p><p>  while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i=4;</b></p><p>  w

73、hile(i>0)i--;</p><p><b>  }</b></p><p>  bit tempreadbit(void) //讀1位函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b></p><

74、;p><b>  bit dat;</b></p><p>  ds=0;i++; //i++ 起延時作用</p><p>  ds=1;i++;i++;</p><p><b>  dat=ds;</b></p><p>  i=8;while(i>0)i--;<

75、;/p><p>  return (dat);</p><p><b>  }</b></p><p>  uchar tempread(void) //讀1個字節(jié)</p><p><b>  {</b></p><p>  uchar i,j,dat;</p>

76、<p><b>  dat=0;</b></p><p>  for(i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=tempreadbit();</p><p>  dat=(j<<7)|(dat>>1);

77、//讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void tempwritebyte(uchar dat) //向18B20寫一個字節(jié)數(shù)據(jù)&

78、lt;/p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  uchar j;</b></p><p>  bit testb;</p><p>  for(j=1;j<=8;j++)<

79、;/p><p><b>  {</b></p><p>  testb=dat&0x01;</p><p>  dat=dat>>1;</p><p>  if(testb) //寫 1</p><p><b>  {</b></p>&

80、lt;p><b>  ds=0;</b></p><p><b>  i++;i++;</b></p><p><b>  ds=1;</b></p><p>  i=8;while(i>0)i--;</p><p><b>  }</b>&l

81、t;/p><p><b>  else</b></p><p><b>  {</b></p><p>  ds=0; //寫 0</p><p>  i=8;while(i>0)i--;</p><p><b>  ds=1;</b>&l

82、t;/p><p><b>  i++;i++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tempchange(void

83、) //DS18B20 開始獲取溫度并轉(zhuǎn)換</p><p><b>  {</b></p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc); // 寫跳過讀ROM指令</p>&l

84、t;p>  tempwritebyte(0x44); // 寫溫度轉(zhuǎn)換指令</p><p><b>  }</b></p><p>  uint get_temp() //讀取寄存器中存儲的溫度數(shù)據(jù)</p><p><b>  {</b></p><p>  uchar a,

85、b;</p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc);</p><p>  tempwritebyte(0xbe);</p><p>  a=tempread(); //讀

86、低8位</p><p>  b=tempread(); //讀高8位</p><p><b>  temp=b;</b></p><p>  temp<<=8; //兩個字節(jié)組合為1個字</p><p>  temp=temp|a;</p><p>

87、;  f_temp=temp*0.0625; //溫度在寄存器中為12位 分辨率位0.0625°</p><p>  temp=f_temp+0.5; //加0.5是四舍五入</p><p>  return temp; //temp是浮點型</p><p><b>  6.4報警電路模塊</b><

88、;/p><p>  將DS18B20讀出的溫度與設定的溫度比較,如溫度超限,單片機將P1.0口置0,溫度超限報警顯示LED亮,蜂鳴器報警。</p><p><b>  圖6.4報警電路圖</b></p><p><b>  6.5總程序</b></p><p>  #define uchar unsig

89、ned char </p><p>  #define uint unsigned int</p><p>  sbit rs=P2^6;</p><p>  sbit lcden=P2^7;</p><p>  sbit jidianqi=P2^5;</p><p>  sbit s1=P3^0;//功能鍵</

90、p><p>  sbit s2=P3^1;//增加鍵</p><p>  sbit s3=P3^3;//減小鍵</p><p>  sbit beep=P2^3;//蜂鳴器</p><p>  sbit led1=P2^1;</p><p>  sbit led2=P2^2;</p><p>  s

91、bit ds=P1^2; //溫度傳感器</p><p>  uint warnl=-20; //下限溫度</p><p>  uint warnh=57; //上限溫度</p><p>  uint temp;//整形溫度數(shù)據(jù)</p><p>  float f_temp;//浮點型溫度數(shù)據(jù)</p>&l

92、t;p>  uchar count,stop,s1num,s2num;//其它變量定義</p><p>  char miao,shi,fen;</p><p>  uchar code table[]=" : : T: ";//液晶固定顯示內(nèi)容</p><p>  uchar code table1[]=" L:

93、 H: ";</p><p>  #include<reg51.h></p><p>  #include<temp.h></p><p>  void delay(uint z)//延時函數(shù)</p><p><b>  {</b></p><p&g

94、t;<b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=124;y>0;y--)</p><p><b>  ;</b></p><p><b>  }</b></p><

95、p>  void di() //蜂鳴器報警聲音</p><p><b>  {</b></p><p><b>  beep=0;</b></p><p>  delay(100);</p><p>  beep=1; </p><p><b>  

96、}</b></p><p>  /*================液晶操作============*/</p><p>  void write_com(uchar com)</p><p>  {//寫液晶命令函數(shù)</p><p><b>  rs=0;</b></p><p>&

97、lt;b>  lcden=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(3);&

98、lt;/b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_date(uchar date)</p><p>  {//寫液晶數(shù)據(jù)函數(shù)</p><p><b>  rs

99、=1;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=date;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=1;</b></p

100、><p><b>  delay(3);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_sfm(uchar add,char date)//1602液晶刷新時分秒函數(shù)1為時,4為

101、分,7為秒</p><p>  { </p><p>  char shiwei,gewei;</p><p>  shiwei=date/10;</p><p>  gewei=date%10;</p><p>  write_com(0x8

102、0+add);</p><p>  write_date(0x30+shiwei);</p><p>  write_date(0x30+gewei);</p><p><b>  }</b></p><p>  void write_nyr(uchar add,char date)</p><p&g

103、t;  {//1602液晶刷新年月日函數(shù)3為年,6為分,9為秒</p><p>  char shiwei,gewei;</p><p>  shiwei=date/10;</p><p>  gewei=date%10;</p><p>  write_com(0xc0+add);</p><p>  write_d

104、ate(0x30+shiwei);</p><p>  write_date(0x30+gewei);</p><p><b>  }</b></p><p>  /*==================================================*/</p><p>  /*============

105、==ds18B20程序=========================*/</p><p>  void dsreset(void) //18B20復位,初始化函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>

106、  ds=0;</b></p><p><b>  i=103;</b></p><p>  while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i=4;</b></p><p> 

107、 while(i>0)i--;</p><p><b>  }</b></p><p>  bit tempreadbit(void) //讀1位函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b></p>&

108、lt;p><b>  bit dat;</b></p><p>  ds=0;i++; //i++ 起延時作用</p><p>  ds=1;i++;i++;</p><p><b>  dat=ds;</b></p><p>  i=8;while(i>0)i--;&

109、lt;/p><p>  return (dat);</p><p><b>  }</b></p><p>  uchar tempread(void) //讀1個字節(jié)</p><p><b>  {</b></p><p>  uchar i,j,dat;</p>

110、;<p><b>  dat=0;</b></p><p>  for(i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=tempreadbit();</p><p>  dat=(j<<7)|(dat>>1);

111、 //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void tempwritebyte(uchar dat) //向18B20寫一個字節(jié)數(shù)

112、據(jù)</p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  uchar j;</b></p><p>  bit testb;</p><p>  for(j=1;j<=8;j++)&

113、lt;/p><p><b>  {</b></p><p>  testb=dat&0x01;</p><p>  dat=dat>>1;</p><p>  if(testb) //寫 1</p><p><b>  {</b></p>

114、<p><b>  ds=0;</b></p><p><b>  i++;i++;</b></p><p><b>  ds=1;</b></p><p>  i=8;while(i>0)i--;</p><p><b>  }</b>

115、</p><p><b>  else</b></p><p><b>  {</b></p><p>  ds=0; //寫 0</p><p>  i=8;while(i>0)i--;</p><p><b>  ds=1;</b>

116、</p><p><b>  i++;i++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tempchange(vo

117、id) //DS18B20 開始獲取溫度并轉(zhuǎn)換</p><p><b>  {</b></p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc); // 寫跳過讀ROM指令</p>

118、<p>  tempwritebyte(0x44); // 寫溫度轉(zhuǎn)換指令</p><p><b>  }</b></p><p>  uint get_temp() //讀取寄存器中存儲的溫度數(shù)據(jù)</p><p><b>  {</b></p><p>  uchar

119、a,b;</p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc);</p><p>  tempwritebyte(0xbe);</p><p>  a=tempread(); /

120、/讀低8位</p><p>  b=tempread(); //讀高8位</p><p><b>  temp=b;</b></p><p>  temp<<=8; //兩個字節(jié)組合為1個字</p><p>  temp=temp|a;</p><p&

121、gt;  f_temp=temp*0.0625; //溫度在寄存器中為12位 分辨率位0.0625°</p><p>  temp=f_temp+0.5; //加0.5是四舍五入</p><p>  return temp; //temp是浮點型</p><p><b>  }</b></p>

122、;<p>  /*=========================================================================*/</p><p>  /*========================溫度處理========================*/</p><p>  void deal(uint t)</p>

123、<p><b>  {</b></p><p>  if (t>warnh)</p><p><b>  {</b></p><p>  jidianqi=0;</p><p><b>  TR0=0;</b></p><p><

124、;b>  led1=0;</b></p><p><b>  di();</b></p><p>  delay(200);</p><p><b>  di();</b></p><p>  delay(100);</p><p><b>  }

125、</b></p><p>  if (t>warnl&&t<=warnh)</p><p><b>  {</b></p><p><b>  led2=0;</b></p><p><b>  di();</b></p>

126、<p>  delay(400);</p><p><b>  di();</b></p><p>  delay(100);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*======

127、===================液晶處理=============*/ </p><p>  void init()</p><p><b>  {//初始化函數(shù)</b></p><p>  uchar num;</p><p><b>  s1num=0;</b></p>&

128、lt;p><b>  count=0;</b></p><p><b>  fen=0;</b></p><p><b>  miao=0;</b></p><p><b>  shi=0;</b></p><p><b>  lcden=

129、0;</b></p><p>  jidianqi=1;</p><p><b>  led1=1;</b></p><p><b>  led2=1;</b></p><p>  write_com(0x38);//1602液晶初始化</p><p>  wri

130、te_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(num=0;num<15;num++)//寫入液晶固定部分顯示</p><p><b>

131、;  {</b></p><p>  write_date(table[num]);</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  write_sfm(7,miao);//分別送去液晶顯示</p><

132、;p>  write_sfm(4,fen);</p><p>  write_sfm(1,shi);</p><p>  write_com(0x8e);</p><p>  write_date(0xdf);</p><p>  write_date(0x43);</p><p>  write_com(0x8

溫馨提示

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

評論

0/150

提交評論