版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計(論文)</p><p> 基于單片機的溫度控制系統(tǒng)設(shè)計</p><p> Based on Single Chip Microcomputer Temperature Control System Design</p><p> 學(xué) 院(系): 計算機與信息工程學(xué)院 </p><p&g
2、t; 專 業(yè): 計算機科學(xué)與技術(shù) </p><p> 基于單片機的溫度控制系統(tǒng)設(shè)計 </p><p> 【摘 要】溫度是工業(yè)控制中主要的被控參數(shù)之一,在日常生活中也經(jīng)常要用到溫度的檢測及控制。本文介紹了一種以AT89C51單片機為核心的控制器,以DS18B20為溫度傳感器的溫度控制器。首先,通過對元器件的選擇,設(shè)計控制器的硬件電路;然后,設(shè)計相關(guān)
3、應(yīng)用程序;最后,通過仿真,對整個系統(tǒng)進行調(diào)試、分析。最終實現(xiàn)溫度采集、顯示、控制等功能。仿真結(jié)果表明,所設(shè)計的控制器能夠完成所需功能,并且具有測量精準(zhǔn)高、實時性好、使用方便等特點。</p><p> 【關(guān)鍵詞】:溫度控制;AT89C51;溫度顯示;DS18B20</p><p> Based on Single Chip Microcomputer Temperature Contro
4、l System Design</p><p> Communications Engineering Major Li Ruiqing</p><p> Abstract:Temperature control is charged with one of the main industrial parameters, in everyday life also often use
5、 to detect and control the temperature. This paper presents a AT89C51 microcontroller as the core to the controller to DS18B20 temperature sensor temperature controller. First, the choice of components, design of the con
6、troller hardware circuit; then, design-related applications; Finally, the simulation of the entire system for debugging and analysis. The ultimate realization of tem</p><p> Key words: Temperature cont
7、rol; AT89C51; Temperature display; DS18B20</p><p><b> 目 錄</b></p><p><b> 1 緒 論1</b></p><p> 1.1課題背景及意義1</p><p> 1.2課題研究的內(nèi)容1</p>&l
8、t;p> 1.3.溫度控制器的選擇2</p><p> 2. 溫度控制器的硬件電路設(shè)計3</p><p> 2.1 溫度傳感器的選擇3</p><p> 2.1.1 數(shù)字溫度傳感器3</p><p> 2.1.2 熱電阻溫度傳感器4</p><p> 2.1.3 方案選擇4</p&g
9、t;<p> 2.2 溫度采集模塊電路的設(shè)計4</p><p> 2.2.1 DS18B20介紹4</p><p> 2.2.2 溫度傳感器工作原理5</p><p> 2.2.3 DS18B20工作原理介紹7</p><p> 2.2.4 DS18B20使用中的注意事項8</p><p&
10、gt; 2.2.5 DS18B20和AT89C51單片機連接電路9</p><p> 2.3 顯示模塊設(shè)計10</p><p> 2.3.1 LCD液晶顯示器簡介10</p><p> 2.3.2 液晶模塊簡介11</p><p> 2.3.3 液晶顯示部分與STC89C51單片機的接口13</p><
11、p> 2.4 按鍵電路的設(shè)計14</p><p> 2.4.1 單片機檢測按鍵的原理14</p><p> 2.4.2 矩陣鍵盤的設(shè)計15</p><p> 3. 系統(tǒng)軟件設(shè)計16</p><p> 3.1 主程序的設(shè)計16</p><p> 3.2 DS18B20初始化程序17</
12、p><p> 3.3 LCD初始化程序的設(shè)計19</p><p> 3.4 繼電器控制的程序20</p><p> 4. 仿真結(jié)果及分析26</p><p> 4.1 系統(tǒng)仿真26</p><p> 4.2 仿真分析27</p><p><b> 5. 總結(jié)28&l
13、t;/b></p><p><b> 參考文獻29</b></p><p><b> 附 錄30</b></p><p><b> 致謝36</b></p><p><b> 1 緒 論</b></p><p>
14、 1.1課題背景及意義</p><p> 日常生活中溫度控制在各行各業(yè)中都起著重要的作用,因此能夠檢測溫度變化的溫度檢測設(shè)備出現(xiàn)在人們的視線中。它能使人們能及時看到溫度變化的第一手資料,提示溫度變化情況,協(xié)助人們及時調(diào)整,并有溫度報警作用,讓溫度控制更好的服務(wù)于整個社會和人們的生活。</p><p> 21世紀(jì)是電子技術(shù)飛速發(fā)展的時代,人類的生活發(fā)生了質(zhì)的變化,特別是隨著大規(guī)模集成電
15、路的出現(xiàn)微型計算機應(yīng)運而生,讓人類社會進入了一個新的時代。雖然微機可以完成各種各樣的工程控制,但是微機價格高,對于大多數(shù)的工業(yè)控制來說,并不是最佳選擇。于是單片機就出現(xiàn)在了人們的視野中。它是一個簡化的微機,將微機的中央處理器,存儲單元,I/O接口,定時器/計數(shù)器等集成在一片芯片上。和微機比較,單片機價格低廉,適合應(yīng)用在工業(yè)的控制場合以降低成本。另外,單片機可靠性高,性能穩(wěn)定??稍趶?fù)雜的工業(yè)環(huán)境下運行。單片機依靠其高性價比,在工業(yè)控制,工
16、業(yè)生產(chǎn),家用電器制造等方面得到了廣泛的應(yīng)用。</p><p> 溫度是表征物體冷熱程度的物理量,工農(nóng)業(yè)生產(chǎn)過程中溫度是一個重要的參數(shù)。溫度測量在產(chǎn)品生產(chǎn),工業(yè)設(shè)計,能源節(jié)約中起到了關(guān)鍵性的作用。隨著科學(xué)技術(shù)的進步和生產(chǎn)的需要,溫度傳感器不斷更新豐富起來。</p><p> 溫度作為一個模擬量,如果采用合適的技術(shù)和元件,將模擬的溫度量轉(zhuǎn)化為數(shù)字量雖說不難,但電路也很復(fù)雜,成本也很高。溫度
17、測量中測量溫度是重點,本設(shè)計中單片機溫度測量同樣如此。</p><p> 1.2課題研究的內(nèi)容</p><p> 本設(shè)計研究的主要課題是基于單片機的水溫控制系統(tǒng),介紹了對爐內(nèi)溫度的顯示、控制和報警,實現(xiàn)了溫度的實時顯示及控制。其中爐內(nèi)溫度控制中,采用AT89C51單片機、DS18B20、和LCD的硬件電路檢測和顯示實時水溫,采用DS18B20與單片機相接再由硬件與軟件電路組合來實現(xiàn)對加
18、熱電阻絲的控制和超出規(guī)定的上下限溫度的報警。</p><p> 1.3.溫度控制器的選擇</p><p> 溫度控制器選擇基于51單片機的溫度控制器,圖2-1是基于51單片機的溫度控制器框圖。該控制器由溫度采集模塊、控制模塊、顯示模塊、報警模塊以及電源模塊等組成。</p><p> 基于單片機的溫度控制器框圖如圖2-1所示。</p><p&
19、gt; 圖1-1 基于單片機溫度控制器框圖</p><p> 51單片機是控制器的控制核心,因此單片機的選擇,對所設(shè)計系統(tǒng)的實現(xiàn)以及功能的擴展有著很大的影響。單片機種類很多,在眾多51系列單片機中,較為常用的是ATMEL 公司的AT89C51和AT89S52單片機,AT89C51片內(nèi)4KROM是Flash工藝的,使用專用的編程器自己就可以隨時對單片機進行電擦除和改寫,片內(nèi)有128字節(jié)的RAM。而AT89S52
20、含有在系統(tǒng)可編程的Flash存儲器,片內(nèi)有8K閃存,RAM的容量也較AT89C51大,為256字節(jié)。顯然這種單片機優(yōu)點更多,開發(fā)時間也大為縮短。</p><p> 2. 溫度控制器的硬件電路設(shè)計</p><p> 2.1 溫度傳感器的選擇</p><p> 溫度是表征物體冷熱程度的物理量,它可以通過物體隨溫度變化的某些特性(如電阻、電壓變化等特性)來間接測量,
21、利用這種物理特性制成的傳感器稱為溫度傳感器。常用的溫度傳感器有熱電偶、熱敏電阻、熱電阻、集成溫度傳感器及數(shù)字式溫度傳感器等多種溫度傳感器。</p><p> 2.1.1 數(shù)字溫度傳感器</p><p> 典型的數(shù)字溫度傳感器如DS18B20,該傳感器主要特性如下:</p><p> 1.數(shù)據(jù)線供電是寄生電源方式下的供電方式,電壓適應(yīng)的范圍更寬,電壓范圍:3.0
22、~5.5V;</p><p> 2.DS18B20在和微處理器的連接僅僅需一條總線即就可以實現(xiàn)DS18B20和微處理器雙向的通信,它的單線接口方式十分特殊;</p><p> 3.DS18B20可以支持多個點的組網(wǎng)功能,多個DS18B20可并聯(lián)的在唯一的總線上,能夠?qū)崿F(xiàn)組網(wǎng)的多點測溫;</p><p> 4.轉(zhuǎn)換的電路及全部傳感器元件就像一只三極管集成在的集成
23、電路內(nèi),DS18B20在使用的時候不需要任何的外圍元件;</p><p> 5.在-10~+85℃時精度為±0.5℃,測溫范圍-55℃~+125℃;</p><p> 6.可分辨溫度依次為0.5℃、0.25℃、0.125℃和0.0625℃,相對應(yīng)的可以編程的分辨率是9~12位,可實現(xiàn)高精度測溫;</p><p> 7.12位分辨率時最多在750毫秒內(nèi)
24、把溫度值轉(zhuǎn)換為數(shù)字,在9位分辨率時最多在 93.75毫秒內(nèi)把溫度轉(zhuǎn)換為數(shù)字,速度更快;</p><p> 8.直接輸出數(shù)字溫度信號的測量結(jié)果,可傳送CRC校驗碼,同時以"單總線"串行方式傳送給CPU,有極強抗干擾和糾錯能力;</p><p> 9.負(fù)壓特性:接反電源的極性時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p> 2.1.
25、2 熱電阻溫度傳感器</p><p> 熱電阻的測量精度高,性能穩(wěn)定,使用方便,測量范圍寬,在高精度、低溫測量中占有重要的地位。熱電阻傳感器主要用于中低溫度(-200℃~+650℃或850℃)范圍的溫度測量。常用的工業(yè)標(biāo)準(zhǔn)化熱電阻有鉑熱電阻和銅熱電阻。鉑電阻傳感器是利用金屬鉑(Pt)的電阻值隨溫度變化而變化的物理特性而制成的溫度傳感器。以鉑電阻作為測溫元件進行溫度測量的關(guān)鍵是要能準(zhǔn)確地測量出鉑電阻傳感器的電阻值
26、。鉑電阻具有適用范圍廣、測量范圍大、穩(wěn)定性高、重復(fù)性好、價格低廉、使用方便等優(yōu)點,成為目前工業(yè)和實驗室中溫度測量應(yīng)用最廣泛普遍的傳感元件之一,工業(yè)中應(yīng)用較多的熱電阻傳感器如Pt100。</p><p> 2.1.3 方案選擇</p><p> 對比上述兩種方案,雖然Pt100的測量溫度范圍比較大,但是由于其測溫原理是電阻值隨著溫度的改變而改變,需要設(shè)計非常優(yōu)良的溫度采集電路,其中應(yīng)包括
27、測溫部分,線性化部分,放大部分,A/D轉(zhuǎn)換部分,這就會使外圍的電路更加復(fù)雜。DS18B20是數(shù)字式溫度傳感器,只需一根總線就可以與單片機通信,是外圍的電路大大簡化,測量的精度更準(zhǔn)確。因此本控制器的設(shè)計中,溫度傳感器擬選擇DS18B20作為溫度采集傳感器。</p><p> 2.2 溫度采集模塊電路的設(shè)計</p><p> 2.2.1 DS18B20介紹</p><p
28、> DS18B20引腳圖如圖2-1所示。</p><p> 圖2-1 DS18B20引腳圖</p><p> DALLAS 最新的單線數(shù)字溫度傳感器DS18B20是一種新型“一線器件”,它的體積更小、更適用于多種場合、而且適用電壓更寬、也更經(jīng)濟。DALLAS 半導(dǎo)體公司開發(fā)的數(shù)字化溫度傳感器DS18B20也是世界上第一片支持“一線總線”接口的數(shù)字溫度傳感器。溫度的測量范圍為-5
29、5~+125 攝氏度,能編程為9位~12 位轉(zhuǎn)換精度,0.0625攝氏度的測溫分辨率,分辨率的設(shè)定參數(shù)及用戶設(shè)定的報警溫度會存儲在EEPROM 中,掉電后依然能保存。用符號擴展的16位數(shù)字量方式串行的輸出被測溫度;采用寄生電源方式產(chǎn)生,其工作的電源既可以遠(yuǎn)端引入;3 根或2根線上可并聯(lián)多個DS18B20,CPU只需要一根端口線就能與諸多的DS18B20 通信,較少占用微處理器的端口,可以節(jié)省邏輯電路和大量的引線,因而用它來組成的測溫系統(tǒng)
30、,具有線路簡單,在一根通信線,可掛多個這樣的數(shù)字溫度計,非常的方便。</p><p> 2.2.2 溫度傳感器工作原理</p><p> DS18B20的讀寫時序及測溫原理與DS1820是相同的,得到的溫度值的位數(shù)卻會因為分辨率的不同而不同,而且進行溫度轉(zhuǎn)換時的延時時間從2s 減為750ms。 DS18B20的測溫原理:低溫度系數(shù)的晶振,它是用以產(chǎn)生固定頻率的脈沖信號給計數(shù)器1,它的振
31、蕩頻率受到溫度的影響非常的小。高溫度系數(shù)的晶振,則它的振蕩率會隨著溫度的變化而明顯的改變,產(chǎn)生的信號就作為計數(shù)器2的脈沖輸入。溫度寄存器以及計數(shù)器1被預(yù)先設(shè)置在-55℃所對應(yīng)的一個基數(shù)值。對從低溫度系數(shù)晶振產(chǎn)生的脈沖,將會通過計數(shù)器1來進行減法的計數(shù),當(dāng)計數(shù)器1預(yù)置的值減到了0的時候,計數(shù)器1的預(yù)置值將重新裝入,這時候溫度寄存器的值就加1。計數(shù)器1也就重新開始進行計數(shù),如此循環(huán),停止溫度寄存器值的累加時計數(shù)器2的計數(shù)值到0,所測溫度就為
32、此時溫度寄存器中的數(shù)值。</p><p> DS18B20功能特點:</p><p> 1.采用了總線技術(shù),與單片機的通信只需要一根I/O線,在一根線上可以掛接多個的DS18B20。</p><p> 2.每只DS18B20它是根據(jù)序列號來訪問相應(yīng)的器件,具有一個獨有的,不可更改的64位的序列號。</p><p> 3.低壓供電,電源
33、范圍為3--5V,可本地供電,也能直接通過數(shù)據(jù)線提供電源(即寄生電源2方式)。</p><p> 4.在-10°C至+85°C范圍內(nèi)的可以達到精度為±0.5攝氏度,測溫的范圍為-55℃~+125攝氏度。</p><p> 5.溫度超過了的預(yù)定值的器件可以用報警搜索命令識別以及尋址。</p><p> 6.用戶可以自己設(shè)定報警上下限
34、溫度。</p><p> 7.它轉(zhuǎn)換12位的溫度的最大時間為750毫秒,可編輯的數(shù)據(jù)位9--12位。</p><p> 8.DS18B20的分辨率由用戶通過EEPROM設(shè)置為9--12位。</p><p> 9.DS18B20可以將檢測到的溫度值直接轉(zhuǎn)化為數(shù)字量,并且通過串行通信方式。</p><p> DS18B20有4個主要數(shù)據(jù)部
35、件:</p><p> 1. 光刻ROM中的64位序列號在出廠之前就已經(jīng)被光刻好了,它可看作該DS18B20的地址的序列碼。64位光刻ROM的排列為:開始的8位 (28H)是產(chǎn)品類型的標(biāo)號,接著48位是該DS18B20的自身序列號,最后的8位是前面的56位循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是讓每一個DS18B20都不相同,這樣的話就能夠一根總線上可掛接多個的DS18B20。<
36、/p><p> 2. DS18B20溫度傳感器能實現(xiàn)對溫度的測量,以12位的轉(zhuǎn)化為例:用16位的符號擴展二進制補碼讀數(shù)的形式提供,以0.0625℃/LSB的形式表達,其中S是符號位。</p><p> 3. DS18B20溫度傳感器它的內(nèi)部存儲器包括一個高速暫存RAM以及一個非易失性的、可電擦除的EEPRAM,后者存放高溫度和低溫度的觸發(fā)器 TH、TL以及結(jié)構(gòu)寄存器。</p>
37、<p><b> 4.配置寄存器。</b></p><p> DS18B20內(nèi)部結(jié)構(gòu)及功能:</p><p> DS18B20內(nèi)部的結(jié)構(gòu)如圖3-7所示。主要包括以下部分:電源,溫度傳感器,64位的ROM單總線接口,用于存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲用戶設(shè)定溫度上下限的TH和TL觸發(fā)器,控制邏輯,8為循環(huán)冗余校驗碼(CRC)發(fā)生器等7部分。D
38、S18B20內(nèi)部結(jié)構(gòu)如圖2-2所示。</p><p> 圖2-2 DS18B20內(nèi)部結(jié)構(gòu)</p><p> 2.2.3 DS18B20工作原理介紹</p><p><b> 溫度的讀?。?lt;/b></p><p> DS18B20出廠時配置為12位,讀取溫度時共讀取16位,所以要把后11位的2進制轉(zhuǎn)化為10進制后再
39、乘以0.0625就是所測的溫度,還需判斷正負(fù)。前5個的數(shù)字為符號位,若前5位為1時,讀取的溫度就為負(fù)數(shù);若前5位為0時,讀取的溫度就為正數(shù)。</p><p> DS18B20寫操作:</p><p> 1.數(shù)據(jù)線首先置低電平“0”。</p><p> 2.延時的時間為15ms。</p><p> 3.再按從低位到高位的順序發(fā)送字節(jié)(一
40、次只能發(fā)送一位)。</p><p> 4.延時的時間為45ms。</p><p> 5.把數(shù)據(jù)線拉到高電平。</p><p> 6.重復(fù)上(1)到(6)的操作,一直到所有的字節(jié)全部都發(fā)送完為止。</p><p> 7.最后把數(shù)據(jù)線拉高。</p><p> DS18B20讀操作:</p><
41、p> 1.把數(shù)據(jù)線拉高“1”。</p><p><b> 2.延時2ms。</b></p><p> 3.數(shù)據(jù)線拉低“0”。</p><p><b> 4.延時15ms。</b></p><p> 5.將據(jù)線拉高“1”。</p><p><b>
42、6.延時15ms。</b></p><p> 7.讀數(shù)據(jù)線的狀態(tài)得到了1個狀態(tài)位,并且進行數(shù)據(jù)處理。</p><p><b> 8.延時30ms。</b></p><p> 2.2.4 DS18B20使用中的注意事項</p><p> DS18B20 雖具有連接方便、測溫系統(tǒng)簡單、占用口線少、測溫的精
43、度高等優(yōu)點,然而在實際的應(yīng)用中也應(yīng)該注意以下幾方面問題:</p><p> 1.DS18B20 從測溫結(jié)束直到把溫度值轉(zhuǎn)換成為了數(shù)字量,需要一些轉(zhuǎn)換時間,這必須保證,不然會出現(xiàn)轉(zhuǎn)換錯誤現(xiàn)象,從而使溫度輸出總是顯示為85度。</p><p> 2.在實際的使用中,應(yīng)該使電源電壓保持在5V 左右的大小,若是電源的電壓過低了,就會降低所測得的溫度精度。</p><p>
44、; 3.較小的硬件開銷就需要比較復(fù)雜的軟件來進行補償,因為DS1820和微處理器間數(shù)據(jù)是串行傳送的,所以,對DS1820進行讀寫編程,就必須嚴(yán)格保證讀寫時序,否則就不能讀取測得的溫度值。</p><p> 4.DS18B20的有關(guān)資料由于未提及單總線上所掛DS18B20 數(shù)量,就使人誤認(rèn)為能夠掛任意多個的DS18B20,但在實際的應(yīng)用中并不是這樣的,如果在單總線上所掛載的DS18B20超過了8個,就要解決微處
45、理器的總線驅(qū)動問題,在進行多點測溫系統(tǒng)設(shè)計時必須注意這一點。</p><p> 5.在DS18B20測溫程序的設(shè)計中,向DS18B20 發(fā)出了溫度轉(zhuǎn)換命令后,程序總是要等待DS18B20的返回信號,若某個DS18B20 接觸不好或這斷線,當(dāng)程序讀該DS18B20 時,將會沒有返回的信號,程序就進入了死循環(huán),這一點在進行DS18B20硬件連接和軟件設(shè)計的時候也要給予重視。</p><p>
46、 2.2.5 DS18B20和AT89C51單片機連接電路</p><p> DS18B20可以有兩種供電的方式,一種用的是電源供電的方式,此時DS18B20的1腳接地,3腳接電源,2腳是信號線。另一種是寄生電源供電的一種方式。如圖2-3 所示單片機端口接的是單總線,為了在DS18B20有效的時鐘周期之內(nèi)提供的電流足夠,對總線的上拉可用一個MOSFET管來完成。</p><p> 當(dāng)
47、DS18B20處于溫度A/D轉(zhuǎn)換操作和寫存儲器操作時,必須有強的上拉在總線上,上拉的最大開啟時間為10微秒。采用寄生電源供電的供電方式時VDD端接地,單線制由于只有一根線,因此發(fā)送接口必須是三態(tài)的。</p><p> DS18B20與單片機的接口電路如圖2-3所示。</p><p> 圖2-3 DS18B20與單片機的接口電路</p><p> 2.3 顯示模
48、塊設(shè)計</p><p> 2.3.1 LCD液晶顯示器簡介</p><p> 顯示器是人和機器交流信息的重要界面,早期的是以顯像管(CRT/Cathode Ray Tube)顯示器為主,但是隨著技術(shù)的不斷發(fā)展,各種各樣的顯示技術(shù)不斷誕生,而液晶(LCD)顯示器由于具有耗電量較低、短小輕薄、無輻射的危險,平面直角顯示,和穩(wěn)定不閃爍的影像等優(yōu)勢,更是在近年來不斷下跌的價格吸引下,逐漸取代了
49、主流的CRT之地位。</p><p> 液晶是一種既有液體的流動性還具光學(xué)特性的有機化合物,它的透明程度和呈現(xiàn)顏色受外加電場影響,利用這個特點就可以做成字符顯示器。</p><p> 液晶顯示器(LCD)英文為Liquid Crystal Display,它是一種采用液晶控制透光度的技術(shù)來實現(xiàn)色彩的顯示器。和CRT顯示器比,LCD的優(yōu)點是十分明顯的。因為通過控制是否透光從而控制亮和暗,
50、當(dāng)色彩不變化時,液晶也就保持不變,這樣就不用考慮刷新率的問題。</p><p> 顯示接口用來顯示系統(tǒng)的狀態(tài),命令和采集的電壓數(shù)據(jù)。本系統(tǒng)的顯示部分用的是LCD液晶模塊,采用的是一個16×1字符型液晶的顯示模塊。 </p><p> 點陣圖形式的液晶顯示器是由 M 行×N 列個顯示單元組成的,若LCD 顯示屏有64行,每行有 128列,每 8列對應(yīng) 1 個字節(jié)的 8
51、 個位,則每行有 16 字節(jié),共有 16×8=128個點所組成,屏上 64×16 個顯示單元和顯示 RAM 區(qū) 1024 個的字節(jié)是相對應(yīng)的,屏上相應(yīng)位置的亮暗和每一個字節(jié)的內(nèi)容是對應(yīng)的。一個字符是由 6×8 或者 8×8一個點陣所組成的,所以要找到和屏上某幾個位置相對應(yīng)顯示 RAM區(qū)的 8 個字節(jié),而且應(yīng)該使每一個字節(jié)不的同位為‘1’狀態(tài),其它的則為‘0’,為‘1’的點亮,為‘0’的點為暗,這樣
52、就組成了某一個字符。但是對內(nèi)部自帶字符發(fā)生器的控制器來說,字符顯示就會比較簡單了,可以使控制器在文本方式下工作,根據(jù)在每行的列數(shù)找出顯示RAM對應(yīng)的地址和LCD開始顯示的行列號,設(shè)立光標(biāo),在此送入該字符的對應(yīng)代碼就可以了。</p><p> 2.3.2 液晶模塊簡介</p><p> LM016L結(jié)構(gòu)及功能:</p><p> LM016L液晶模塊采用了HD4
53、4780的控制器,hd44780是具有簡單而功能較強的指令集,能實現(xiàn)字符移動,閃爍等一些功能,LM016L與單片機MCU通訊可以采用8位或者4位并行傳輸?shù)膬煞N方式,hd44780控制器是由兩個8位的寄存器,地址計數(shù)器RAM(AC),和字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),顯示數(shù)RAM(DDRAM),及指令寄存器(IR)以及數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF)。寄存指令碼用IR,只可以寫入不可以讀出,DR用以寄存數(shù)
54、據(jù),數(shù)據(jù)是暫存從DDRAM和CGRAM讀出,或內(nèi)部操作自動的寫入DDRAM和CGRAM的數(shù)據(jù),當(dāng)BF為1時,液晶模塊就會處于內(nèi)部模式,不響應(yīng)接受數(shù)據(jù)和外部操作指令,DDTAM用以存儲顯示字符,能夠存儲總共80個字符碼,CGROM是由5*10點陣字符32種和8位字符碼生成的5*7點陣字符160種.CGRAM是專門給用戶編寫特殊字符而留的,容量只有64個字節(jié),可以自定義4個5*10點陣字符或8個5*7點陣字符,AC可存儲CGRAM和DDRA
55、M的地址,若是地址碼隨指令寫入了IR的話,那么IR就自動把地址碼裝入AC,與此同時,選擇</p><p> 圖2-4 1601引腳圖</p><p> LM016L引腳介紹:</p><p> Vss(1腳):一般的會接地。</p><p> Vdd(2腳):一般接電源。</p><p> Vee(3腳):液
56、晶顯示器的對比度調(diào)整端,接電源時它的對比度是最弱的,接地時它的對比度卻是最高的(如果對比度過高則會產(chǎn)生“鬼影”,使用時可通過一個10K電位器用來調(diào)整對比度)。</p><p> RS(4腳):RS是選擇寄存器的引腳,低電平0時選擇的是指令寄存器、高電平1時就會選擇數(shù)據(jù)寄存器。</p><p> R/W(5腳):R/W是讀寫的信號線,低電平(0)時則進行的是寫操作,高電平(1)時進行的是
57、讀操作。</p><p> E(6腳):E(或EN)端是使能(enable)端,也即下降沿使能。</p><p> DB0(7腳):底4位的三態(tài)、 雙向數(shù)據(jù)總線的 0位(最低位)。</p><p> DB1(8腳):底4位的三態(tài)、 雙向數(shù)據(jù)總線 的1位。</p><p> DB2(9腳):底4位的三態(tài)、 雙向數(shù)據(jù)總線的 2位。<
58、/p><p> DB3(10腳):底4位的三態(tài)、 雙向數(shù)據(jù)總線的 3位。</p><p> DB4(11腳):高4位的三態(tài)、 雙向數(shù)據(jù)總線 的4位。</p><p> DB5(12腳):高4位的三態(tài)、 雙向數(shù)據(jù)總線的 5位。</p><p> DB6(13腳):高4位的三態(tài)、 雙向數(shù)據(jù)總線的 6位。</p><p>
59、; DB7(14腳):高4位的三態(tài)、 雙向數(shù)據(jù)總線 的7位(最高位)(也是busy flag)。</p><p> 寄存器選擇控制如表2-5。</p><p> 表2-5寄存器選擇控制</p><p> 2.3.3 液晶顯示部分與STC89C51單片機的接口 </p><p> 如圖3-5所示。用89C51的P0口作數(shù)據(jù)線,用P1.
60、2、P1.1、P1.0分別作LCD的E、R/W、RS。其中,E是下降沿觸發(fā)片選信號,R/W是讀寫信號,RS是寄存器選擇信號,本模塊有如下設(shè)計要點:顯示模塊的初始化:首先要清屏,然后再設(shè)置8位接口數(shù)據(jù)位,顯示的行數(shù)為1行,字型的為5×7點陣,然后再設(shè)置成整體顯示,取消光標(biāo)以及字體的閃爍,最后再設(shè)置成正向增量的方式且為不移位。送字符給LCD顯示緩沖區(qū),程序采用的是一個顯示的字符,2個字符數(shù)組,另一則顯示電壓數(shù)據(jù),相應(yīng)數(shù)組中被送入要
61、顯示的字符或者數(shù)據(jù),完成之后再統(tǒng)一的顯示.LCD顯示的緩沖區(qū)送人一個要顯示的字符或者數(shù)據(jù),通過軟件延時2.5毫秒后,再作個數(shù)是否夠顯示的判斷,若不足夠則地址加一,取下一個要顯示的字符或者數(shù)據(jù)。</p><p> 液晶與80C51單片機連接電路如圖2-6所示。</p><p> 圖2-6 液晶與89C51單片機的連接電路</p><p> 2.4 按鍵電路的設(shè)計
62、</p><p> 2.4.1 單片機檢測按鍵的原理</p><p> 單片機的I/O口即可以作為輸出也可以作為輸入使用,當(dāng)該檢測按鍵使用的是它的輸入功能,我們把按鍵的其中一端接地,另一段與單片機的I/O口相連,開始時先給I/O口賦一個高電平,然后讓單片機一直不斷循環(huán)檢測該I/O口是已經(jīng)否變?yōu)榱说碗娖?,若是按鍵閉合,就相當(dāng)于此I/O口通過按鍵接地了,變成低電平,程序如果檢測到I/O口變
63、為了低電平就說明該按鍵已被按下,然后就執(zhí)行相應(yīng)的指令和程序。</p><p> 2.4.2 矩陣鍵盤的設(shè)計</p><p> 鍵盤接口電路是單片機系統(tǒng)設(shè)計非常重要的一環(huán),作為人機交互界面里最常用的輸入設(shè)備。我們可以通過鍵盤輸入數(shù)據(jù)或命令來實現(xiàn)簡單的人機通信。通過4X4的矩陣鍵盤來可以對溫度方便的進行設(shè)定,并通過液晶顯示器實時顯示溫度設(shè)置的情況。4×4 的矩陣式鍵盤由4 根列線
64、和4 根行線交叉構(gòu)成,行列的交叉點上就是按鍵,這樣就有16個按鍵。其中交叉點的行線和列線不連接,當(dāng)按鍵按下,位于交叉點處的列線和行線導(dǎo)通。行線由上拉電阻連接VCC。若是無按鍵按下,行線為高電平;若是有鍵按下,行、列線在交點導(dǎo)通,此時,行線電平狀態(tài)是與此行線相連列線的電平狀態(tài)關(guān)聯(lián)。這是判斷按鍵是否按下的關(guān)鍵環(huán)節(jié)。但是,矩陣鍵盤的每一條行線均和4條列線相連接,位于交點處的按鍵是否按下均會影響該鍵所在列線和行線的電平狀態(tài),各個按鍵之間將會相互
65、的影響,按鍵分析時必須把列線、行線的狀態(tài)信號配合處理,才能確定閉合鍵的位置。在本設(shè)計中,按鍵電路原理圖如圖2-7所示。</p><p> 圖2-7 按鍵電路原理圖</p><p><b> 3. 系統(tǒng)軟件設(shè)計</b></p><p> 3.1 主程序的設(shè)計</p><p> 整個設(shè)計系統(tǒng)功能由軟件配合硬件電路來實
66、現(xiàn),若硬件已經(jīng)定型,軟件的功能也就基本上確定了。從軟件的不同功能可為兩大類:一類是主程序(監(jiān)控軟件),是整個控制系統(tǒng)的核心,專門用于協(xié)調(diào)操作者和各執(zhí)行模塊的關(guān)系。二類是子程序(執(zhí)行軟件),它用來實現(xiàn)各種實質(zhì)性的功能,比如測量、計算、顯示、通訊等。每一個小的執(zhí)行軟件就是一個小功能執(zhí)行的模塊。在這里一一的列出各執(zhí)行模塊,并為每一個執(zhí)行模塊進行接口和功能的定義。規(guī)劃好各個執(zhí)行模塊以后,就可以進行監(jiān)控程序的規(guī)劃了。首先應(yīng)根據(jù)系統(tǒng)的總體功能選擇一
67、種最合適的監(jiān)控程序的結(jié)構(gòu),然后再根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。主程序流程圖如圖3-1所示。</p><p> 圖3-1 主程序流程圖</p><p> 主程序的C語言程序如下:</p><p> /*******************************************************</p>
68、<p><b> 主程序</b></p><p> ********************************************************/</p><p><b> main() </b></p><p><b> { </b></p>
69、<p> set(); //開始設(shè)置</p><p> while(1) //設(shè)置好后進入死循環(huán)</p><p><b> {</b></p><p> lcd_init();
70、 // 初始化LCD</p><p> key(); //鍵盤掃描</p><p> error(); //檢查是否出錯</p><p> re
71、adtemp(); //讀取溫度值</p><p> lcd(); //顯示子函數(shù)</p><p> relay(); //控制繼電器</
72、p><p> delay(500); //延時</p><p><b> }</b></p><p><b> }</b></p><p> 3.2 DS18B20初始化程序</p><p&g
73、t; DS18B20初始化步驟如下:</p><p> 1、高電平“1”狀態(tài)必須先給數(shù)據(jù)線。</p><p> 2、然后延時(該時間的要求不嚴(yán)格,但盡可能短一點)。</p><p> 3、把數(shù)據(jù)線拉低到電平“0”狀態(tài)。</p><p> 4、再延時750微秒(該時間的范圍為480--960ms)。</p><p&
74、gt; 5、把數(shù)據(jù)線拉高到電平“1”。</p><p> 6、延時等待(初始化已成功,在15--60ms時間之內(nèi)DS18B20返回一個低電平“0”。根據(jù)該狀態(tài)來確定它是否存在,但不可無限進行等待,否則程序會進入死循環(huán)狀態(tài),故要有超時控制的操作)。</p><p> 7、CPU如果讀到了數(shù)據(jù)線上“0”狀態(tài)的低電平,還要再做延時,延時時間由發(fā)出高電平開始算起(第(5)步的時間開始算),最
75、少需480ms。</p><p> 8、再次把數(shù)據(jù)線拉高到高電平“1”后就結(jié)束。</p><p> DS18B20初始化的C語言程序如下:</p><p> /*******************************************************</p><p> DS18B20初始化子程序</p>
76、<p> ********************************************************/</p><p> void Init_DS18B20()</p><p><b> {</b></p><p> unsigned char x=0;
77、 //定義字符型局域變量</p><p> DS = 1; //總線拉高</p><p> tmpDelay(8); //延時,準(zhǔn)備與DS18B20通訊</p><p> DS = 0;
78、 //總線拉低</p><p> tmpDelay(80); //延時,給DS18B20復(fù)位信號</p><p> DS = 1; //總線拉高</p><
79、p> tmpDelay(14); //延時,等待DS18B20響應(yīng)</p><p> x=DS; //讀DS18B20響應(yīng)狀態(tài)</p><p> tmpDelay(20);
80、 //延時</p><p><b> }</b></p><p> 3.3 LCD初始化程序的設(shè)計</p><p> LM016L的讀操作時序如圖3-2所示。</p><p> LM016L的寫操作時序如圖3-3所示。</p><p> LM016L的初始化的C語言程序如下:&l
81、t;/p><p> /*******************************************************</p><p><b> LCD初始化子程序</b></p><p> ********************************************************/</p>
82、<p> lcd_init()</p><p><b> {</b></p><p> lcd_wcmd(0x38); //設(shè)置8位字符顯示,5*10點陣字符</p><p> delay(1);
83、 //延時</p><p> lcd_wcmd(0x0c); //開顯示、光標(biāo)和閃爍關(guān)閉</p><p> delay(1); //延時</p><p> lcd_wcmd(0x06); //
84、讀、寫操作后,AC增一、畫面不動</p><p> delay(1); //延時</p><p> lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容</p><p> delay(1);
85、 //延時</p><p><b> }</b></p><p> 3.4 繼電器控制的程序</p><p> 當(dāng)測量的環(huán)境溫度低于設(shè)定溫度時,啟動加熱繼電器,使系統(tǒng)自動加熱,當(dāng)測量的溫度高于設(shè)定的溫度時,啟動降溫繼電器,使系統(tǒng)自動降溫,從而使系統(tǒng)的溫度維持在設(shè)定的溫度。&
86、lt;/p><p> 系統(tǒng)繼電器控制的C語言程序如下:</p><p> /*******************************************************</p><p><b> 繼電器控制子程序</b></p><p> ******************************
87、**************************/</p><p> void relay()</p><p><b> {</b></p><p> if(an==0)flagn=0; //實際溫度為0度,實際溫度標(biāo)志位置0</p><p> if(as==0)flags=0;
88、 //設(shè)置溫度為0度,設(shè)置溫度標(biāo)志位置0</p><p> if(flagn==0) //實際溫度標(biāo)志位為0時循環(huán)</p><p><b> {</b></p><p> if(flags==0) //設(shè)置溫度標(biāo)志位為0時循環(huán)</p><p&
89、gt;<b> {</b></p><p> if(an<as) //若實際溫度小于設(shè)置溫度循環(huán)</p><p><b> {</b></p><p> up=0; //升溫繼電器閉合</p><p>
90、down=1; //降溫繼電器打開</p><p><b> }</b></p><p> if(an==as) //若實際溫度等于設(shè)置溫度循環(huán)</p><p><b> {</b></p><p> up=1
91、; //升溫繼電器打開</p><p> down=1; //降溫繼電器打開</p><p><b> }</b></p><p> if(an>as) //若實際溫度大于設(shè)置溫度循環(huán)</
92、p><p><b> {</b></p><p> down=0; //降溫繼電器閉合</p><p> up=1; //升溫繼電器打開</p><p><b> }</b></p
93、><p><b> }</b></p><p> if(flags==1) //設(shè)置溫度標(biāo)志位為1時循環(huán)</p><p><b> {</b></p><p> up=1; //升溫繼電器打開</
94、p><p> down=0; //降溫繼電器閉合</p><p><b> }</b></p><p><b> }</b></p><p> if(flagn==1) //實際溫度標(biāo)志位
95、為1時循環(huán)</p><p><b> {</b></p><p> if(flags==1) //設(shè)置溫度標(biāo)志位為1時循環(huán)</p><p><b> {</b></p><p> if(an<as) //若實際溫度
96、大于設(shè)置溫度循環(huán)</p><p><b> {</b></p><p> up=1; //升溫繼電器打開</p><p> down=0; //降溫繼電器閉合</p><p><b> }&l
97、t;/b></p><p> if(an==as) //若實際溫度等于設(shè)置溫度循環(huán)</p><p><b> {</b></p><p> up=1; //升溫繼電器打開</p><p> down=1;
98、 //降溫繼電器打開</p><p><b> }</b></p><p> if(an>as) //若實際溫度小于設(shè)置溫度循環(huán)</p><p><b> { </b></p><p> down=1;
99、 //降溫繼電器打開</p><p> up=0; //升溫繼電器閉合</p><p><b> }</b></p><p><b> }</b></p><p> if(flags==
100、0) //設(shè)置溫度標(biāo)志位為0時循環(huán)</p><p><b> {</b></p><p> up=0; //升溫繼電器閉合</p><p> down=1; //降溫繼電器打開
101、</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.5按鍵程序的設(shè)計</p><p> 由于實際波形與理想波形之間有區(qū)別,實際波形在按下和釋放的瞬間會有抖動的
102、現(xiàn)象,按鍵的抖動時間和機械特性的長短有關(guān),一般為5--10毫秒。我們通常手動按下按鍵,然后就立即釋放掉按鍵,這個過程穩(wěn)定閉合的時間超過了20毫秒。因此,單片機檢測按鍵是否按下必須要加上去掉抖動的操作,可以通過去抖動的電路去掉抖動,也可以通過專用的去抖動芯片去抖動,但我們常用的是軟件延時,能很容易解決抖動問題,而沒有必要再添加多余的硬件電路。按鍵檢測流程圖如圖3-4所示。</p><p> 圖3-4 按鍵檢測流程
103、圖</p><p> 按鍵掃描的C語言程序如下:</p><p> /*******************************************************</p><p><b> 按鍵掃描子程序</b></p><p> ********************************
104、************************/</p><p> uchar keyscan()</p><p><b> {</b></p><p> P2=0xf0; //行掃描為低電平,列線為高電平</p><p> LJC=P2&0xf0;
105、 //第一次讀列檢測狀態(tài)</p><p> if(LJC!=0xf0) //若有鍵盤被按下</p><p><b> {</b></p><p> delay(2);
106、 //鍵盤消抖</p><p> LJC=P2&0xf0; //第二次讀取列檢測狀態(tài)</p><p> if(LJC!=0xf0) //若有閉合鍵,則逐行掃描</p><p><b> {</b&g
107、t;</p><p> HSM=0xfe; //掃描碼為0xfe、0xfd、0xfb、0xf7</p><p> while((HSM&0x10)!=0) //若掃描碼為0xef,則結(jié)束掃描</p><p><b> {</b></p&g
108、t;<p> P2=HSM; //輸出行掃描碼</p><p> LJC=P2&0xf0; //讀列檢測:0xe0、0xd0、0xb0、0x70</p><p> if(LJC!=0xf0) //如果有按鍵
109、閉合</p><p><b> {</b></p><p> keyvalue=(~HSM)+(~(LJC|0x0f)); //計算鍵盤值</p><p> P2=0xf0; //測試按鍵是否松開</p><p> while(P2!=0xf0); //進
110、入死循環(huán)直至按鍵松開</p><p> return(keyvalue); //返回鍵值</p><p><b> }</b></p><p> else HSM=(HSM<<1)|0x01; //行掃描左移1位</p><p><b>
111、; }</b></p><p><b> }</b></p><p><b> }</b></p><p> P2=0xf0; //測試按鍵是否松開</p><p> while(P2!=0xf0);
112、 //進入死循環(huán)直至按鍵松開</p><p> return(0x00); //沒有按鍵按下則返回0x00</p><p> 4. 仿真結(jié)果及分析</p><p><b> 4.1 系統(tǒng)仿真</b></p><p>
113、 1.仿真實驗一: 設(shè)定的溫度為-21.00攝氏度,實時檢測的溫度為0.00攝氏度,啟動降溫繼電器。仿真圖如圖4-1所示。</p><p><b> 圖4-1 仿真圖</b></p><p> 2. 仿真實驗二: 設(shè)定的溫度為22.00攝氏度,實時檢測的溫度為0.00攝氏度,啟動升溫繼電器。仿真圖如圖4-2所示。</p><p><b
114、> 圖4-2 仿真圖2</b></p><p><b> 4.2 仿真分析</b></p><p> 通過以上的仿真實驗,可以看到,本次設(shè)計的系統(tǒng)能夠可靠地運行。當(dāng)測定的溫度比設(shè)定的溫度高時,系統(tǒng)自動啟動降溫繼電器;而當(dāng)測定的溫度比設(shè)定的溫度低時,啟動加熱繼電器。所以可以說:該系統(tǒng)在軟件仿真的過程中,系統(tǒng)的軟件和硬件能夠很好運行,滿足設(shè)計的要求
115、。為以后在實際的工業(yè)生產(chǎn)和日常生活中的運用打下了堅實的基礎(chǔ)。</p><p><b> 5. 總結(jié)</b></p><p> 本文介紹了基于80C51單片機的數(shù)字溫度控制系統(tǒng)的設(shè)計內(nèi)容,對整個硬件電路和軟件程序設(shè)計做了分析,文中介紹了數(shù)字溫度控制器的現(xiàn)狀及發(fā)展,介紹了數(shù)字溫度計的設(shè)計方案選擇及原理介紹,加深了51單片機的知識了解,介紹51單片機的結(jié)構(gòu)、特點等。并學(xué)
116、習(xí)了數(shù)字溫度傳感器DS18B20,設(shè)計軟件仿真,更直觀的反應(yīng)了設(shè)計的正確性。本文對其中的一些基本原理也做了簡要的概述。其實寫完了本篇論文,也僅僅是對數(shù)字溫度控制系統(tǒng)做出了一個簡單的設(shè)計方案,數(shù)字溫度控制器利用在很多領(lǐng)域,在一些人不能直接進入的場所,利用單片機控制的溫度控制器,可以設(shè)置并控制其中的溫度,溫度控制器還可以利用在溫室中,這樣就可以方便的控制溫室中的溫度??傊趩纹瑱C的溫度控制器利用在很多領(lǐng)域。本課題只是單片機控制數(shù)字溫度控制
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機溫度控制系統(tǒng)的設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--基于單片機的溫度控制系統(tǒng)
- 基于單片機的溫度控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文設(shè)計基于單片機溫度控制系統(tǒng)的設(shè)計
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文
- 畢業(yè)論文 基于單片機的溫度控制系統(tǒng)設(shè)計
- 畢業(yè)論文-單片機溫度控制系統(tǒng)
- 畢業(yè)論文--基于單片機的溫度控制系統(tǒng)
- 畢業(yè)論文-單片機溫度控制系統(tǒng)
- 單片機溫度控制系統(tǒng)畢業(yè)論文
- 基于單片機原理溫度控制系統(tǒng)的設(shè)計畢業(yè)論文
- 單片機溫度控制系統(tǒng)畢業(yè)論文
- 單片機的溫度控制系統(tǒng)畢業(yè)論文
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)論文 (2)
評論
0/150
提交評論