版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 前言1</b></p><p> 1 總體方案設(shè)計2</p><p><b> 1.1設(shè)計要求2</b></p><p> 1.1.1 設(shè)計背景2</p><p>
2、1.1.2具體指標2</p><p> 1.1.3具體控制要求2</p><p> 1.2系統(tǒng)框圖和軟件流程圖2</p><p><b> 1.3元件選擇4</b></p><p> 1.3.1溫度傳感器的選擇4</p><p> 1.3.2顯示電路的選擇4</p>
3、;<p> 1.3.3按鍵選擇4</p><p> 1.3.4單片機的選擇4</p><p> 1.3.5上拉電阻的選擇5</p><p><b> 1.4工作原理5</b></p><p> 2 設(shè)計理論基礎(chǔ)6</p><p> 2.1 AT89C52單片
4、機6</p><p> 2.2DS18B206</p><p><b> 2.2.1特征6</b></p><p> 2.2.2引腳排列7</p><p> 2.2.3執(zhí)行序列7</p><p> 2.2.4單總線信號7</p><p><b&g
5、t; 2.3矩陣鍵盤9</b></p><p> 2.4LCD160210</p><p> 3 系統(tǒng)硬件設(shè)計12</p><p> 3.1單片機最小系統(tǒng)設(shè)計12</p><p> 3.2溫度傳感電路設(shè)計12</p><p> 3.3溫度控制電路設(shè)計13</p><
6、;p> 3.4矩陣鍵盤電路設(shè)計13</p><p> 3.5液晶顯示電路設(shè)計14</p><p> 4 系統(tǒng)軟件設(shè)計15</p><p> 4.1 延時函數(shù)的設(shè)計15</p><p> 4.2 DS18B20的初始化與讀寫設(shè)計15</p><p> 4.3 LCD的初始化與讀寫顯示設(shè)計17
7、</p><p> 4.4 矩陣鍵盤輸入設(shè)計18</p><p> 4.5主程序設(shè)計20</p><p><b> 5 結(jié)論22</b></p><p><b> 致謝23</b></p><p><b> 參考文獻24</b><
8、;/p><p> 附錄I元器件清單25</p><p> 附錄II設(shè)計原理圖26</p><p> 附錄III設(shè)計仿真圖27</p><p><b> 前言</b></p><p> 在化學、化工實驗室中實驗中,往往需要使用微型加熱器對各類反應藥品進行加熱,如何精確控制微型加熱器進行加
9、熱,這就需要一種合適的系統(tǒng)對其溫度進行精確控制。由于單片機具有低功耗、高性能、可靠性好、易于產(chǎn)品化等特點,因此采用單片機對溫度進行控制不僅節(jié)約成本,控制方法靈活多樣,并且可以達到較高的控制精度,從而能夠大大提高產(chǎn)品的質(zhì)量,因此單片機被廣泛應用在中小型控制系統(tǒng)中。</p><p> 本文將設(shè)計一個溫度控制系統(tǒng)利用溫度傳感器顯示實時溫度,能夠通過按鍵給需要加熱的實驗室藥品設(shè)定給定溫度,微型加熱器從室溫給藥品加熱當溫
10、度等于給定溫度時蜂鳴器響并且微型加熱器斷電,本設(shè)計的主要任務(wù)是能對溫度進行自動的檢測和控制。</p><p><b> 1 總體方案設(shè)計</b></p><p><b> 1.1設(shè)計要求</b></p><p> 1.1.1 設(shè)計背景</p><p> 溫度控制廣泛應用于人們的生產(chǎn)和生活中,
11、人們使用溫度計來采集溫度,通過人工操作加熱、通風和降溫設(shè)備來控制溫度,這樣不但控制精度低、實時性差,而且操作人員的勞動強度大。在某些行業(yè)中對溫度的要求較高,由于工作環(huán)境溫度不合理而引發(fā)的事故時有發(fā)生。對工業(yè)生產(chǎn)可靠進行造成影響,甚至操作人員的安全。為了避免這些缺點,需要在某些特定的環(huán)境里安裝數(shù)字溫度測量及控制設(shè)備。本設(shè)計由于采用了新型單片機對溫度進行控制,以其測量精度高,操作簡單??蛇\行性強,價格低廉等優(yōu)點,特別適用于生活,醫(yī)療,工業(yè)生
12、產(chǎn)等方面的溫度測量及控制。</p><p><b> 1.1.2具體指標</b></p><p> 加熱器最大溫度范圍為0oC~100oC,能設(shè)定加熱溫度并進行控制,上下波動不超過5%,顯示實時溫度。</p><p> 1.1.3具體控制要求</p><p> 根據(jù)設(shè)計的要求,要利用溫度傳感器顯示實時溫度。能夠通
13、過按鍵給需要加熱的實驗室藥品設(shè)定給定溫度,微型加熱器從室溫給藥品加熱當溫度等于給定溫度時蜂鳴器響并且微型加熱器斷電。畢業(yè)設(shè)計的主要任務(wù)是能對溫度進行自動的檢測和控制。設(shè)計中采用51單片機來控制溫度,因此要有溫度傳感器,鍵盤,顯示電路,溫控電路,報警電路等幾個部分。</p><p> 1.2系統(tǒng)框圖和軟件流程圖</p><p> 本文所設(shè)計溫度控制系統(tǒng)主要是通過溫度傳感器把采集到的溫度送
14、到單片機中通過顯示電路顯示實時溫度,目標溫度通過鍵盤送到單片機中控制顯示電路顯示,當實時溫度大于等于目標溫度是單片機通過高低電平控制加熱器和報警電路。</p><p> 本文所設(shè)計的溫度控制系統(tǒng)框圖如圖1所示,整個系統(tǒng)以單片機(AT89C52)為核心,包括溫度傳感器,鍵盤,顯示電路,溫控電路,報警電路等幾個部分。</p><p> 系統(tǒng)的軟件控制流程如圖2所示,先進行系統(tǒng)的初始化,溫度
15、傳感器通過溫度測量測出實時溫度,并在顯示系統(tǒng)中顯示,而目標溫度則是通過鍵盤掃描來設(shè)定且能通過顯示系統(tǒng)顯示,當實時溫度大于等于目標溫度時,加熱器斷開蜂鳴器響。</p><p><b> 圖1系統(tǒng)框圖</b></p><p><b> 溫度測量鍵盤掃描</b></p><p> 實時溫度
16、 目標溫度設(shè)定</p><p><b> 比較若</b></p><p><b> 實>=目 </b></p><p> 顯示系統(tǒng) 加熱器斷開</p><p> 圖2 軟件設(shè)計流程圖</p><p>&l
17、t;b> 1.3元件選擇</b></p><p> 1.3.1溫度傳感器的選擇</p><p> AD590----------------------------DS18B20------------------------ 需要模擬轉(zhuǎn)數(shù)字電路-------------只需要一個元件 成本低點-----------------------成本高點精確度低--
18、---------------------精確度高 測溫點數(shù)量少-------------------單總線可同時連接很多溫點 電路繁多-----------------------電路簡單 對線阻有要求-------------------信號線距離遠 可以說DS18B20的優(yōu)點都是在彌補AD590的缺點的,ds18B20的唯一缺點是就是價格高一點總的來說性價比還是蠻高的。</p><p>
19、用AD590設(shè)計的電子數(shù)字溫度計是需要加模擬和數(shù)字轉(zhuǎn)換電路的,電路設(shè)計比較麻煩,而DS18B20在芯片的內(nèi)部自帶模擬和數(shù)字轉(zhuǎn)換電路的, 從電路的復雜性和穩(wěn)定性上來說,選擇ds18b20更好。</p><p> 綜上所述,采用DS18B20作為本實驗的溫度傳感器。</p><p> 1.3.2顯示電路的選擇</p><p> 數(shù)碼管要3mA電流才能發(fā)亮單片機io
20、口驅(qū)動能力較弱,電流只有幾毫安,所以一般要加一個373芯片放大電流,數(shù)據(jù)輸出時一般還需要一個74LS138譯碼器譯碼,顯示電路若采用數(shù)碼管顯示則至少4個數(shù)碼管顯示,由于每個數(shù)碼管靜態(tài)顯示每個數(shù)碼管必須接一個8位數(shù)據(jù)線來保持顯示字型碼首先排除靜態(tài)顯示,而數(shù)碼管動態(tài)顯示亮度不夠穩(wěn)定,影響因素較多;編程較復雜,占用CPU時間較多。</p><p> Lcd1602采用并口傳輸,速度比12864串口快只需一個口無需外加
21、電路其內(nèi)部有顯示芯片可以識別英文字母、阿拉伯數(shù)字,其控制簡單且有帶有背光。</p><p> 從電路的復雜性和穩(wěn)定性上來說采用LCD1602更好。</p><p><b> 1.3.3按鍵選擇</b></p><p> 獨立按鍵:一個按鍵占用單獨的一個I/O口。</p><p> 矩陣鍵盤:為了節(jié)省I/O口,矩陣
22、形式的按鍵排列,在交叉點水平線和垂直線不能連接,一般用一個按鍵來連接。</p><p> 輸入設(shè)定溫度要用到1~9,考慮到節(jié)省IO口采用矩陣鍵盤更好。</p><p> 1.3.4單片機的選擇</p><p> 由于作者是初學者對于c系列單片機較熟悉, at89c51最多支持4KB的程序,at89c52則最多支持8KB的程序。他們是互相兼容的,可以相互替換就是
23、52的RAM多點,程序可以大點,還有就是52多個定時器T2都是51內(nèi)核,封裝一致,多是dip40的,管腳順序一模一樣,通屬AT89C系列單片機唯一不同,ROM不同,前者4k,后者8K。</p><p> 本文中DS18B20、LCD1602、矩陣鍵盤的驅(qū)動程序約各為1K再加上主程序1K左右,總共程序大小在4K左右所以本文采用At89c52單片機。</p><p> 1.3.5上拉電阻的
24、選擇</p><p> 因為單片機P0口沒有上拉電阻為了保護單片機通常要外接上拉電阻,通常在1k 到10k 之間選取。</p><p><b> 1.4工作原理</b></p><p> 該溫控系統(tǒng)采用AT89C52單片機進行控制。采用4X4矩陣鍵盤把設(shè)定的目標溫度存入單片機的數(shù)據(jù)存儲器,。單片機把溫度傳感器采集的信號與單片機里的數(shù)據(jù)相比
25、較來控制微型加熱器。</p><p> 根據(jù)系統(tǒng)的設(shè)計要求,選擇DS18B20作為本系統(tǒng)的溫度傳感器,選擇單片機AT89C52為溫控系統(tǒng)的核心來完成數(shù)據(jù)采集、處理、顯示、報警、控制等功能。選用數(shù)字溫度傳感器DS18B20,省卻了采樣/保持電路、運放、數(shù)/模轉(zhuǎn)換電路以及進行長距離傳輸時的串/并轉(zhuǎn)換電路,簡化了電路,縮短了系統(tǒng)的工作時間,降低了系統(tǒng)的硬件成本。</p><p> 該系統(tǒng)的總
26、體設(shè)計思路如下:溫度傳感器DS18B20把所測得的溫度發(fā)送到AT89c52單片機上,經(jīng)過單片機處理,將把溫度在顯示電路上顯示,本系統(tǒng)顯示器為LCD1602液晶。本系統(tǒng)除了顯示溫度以外還可以設(shè)置一個目標溫度值,對所測溫度進行監(jiān)控,當溫度等于目標溫度時,蜂鳴器響微型加熱器斷電,從而控制溫度。</p><p><b> 2 設(shè)計理論基礎(chǔ)</b></p><p> 2.1
27、 AT89C52單片機</p><p><b> 工作特性:</b></p><p> 片內(nèi)FLASH程序存儲器有8KB大小,壽命為可擦寫1000次;</p><p> 片內(nèi)數(shù)據(jù)存儲器RAM有256字節(jié)大?。?lt;/p><p> 可編程I/O口線有32根;</p><p> 可編程定時
28、器有3個;</p><p> 中斷系統(tǒng)中、級優(yōu)先權(quán)的中斷結(jié)構(gòu)有2個中斷源有8個、中斷矢量有6個;</p><p> 有一個全雙工的可編程串行通信口的串行口;</p><p> 有一個數(shù)據(jù)指針(DPTR);</p><p> 單片機正常工作時,都需要有一個時鐘電路和一個復位電路。本設(shè)計中選擇了內(nèi)部時鐘方式和按鍵電平復位電路,來構(gòu)成單片機
29、的最小電路。</p><p> AT89C52有引腳40個,有外部雙向IO口32個,有外部中斷口兩個,有定時計數(shù)器3個。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產(chǎn)品的需求。</p><p> 2.2DS18B20</p><
30、p> 2.2.1特征 </p><p> 僅需一個端口引腳就可以進行通訊的單線接口;</p><p> 每個器件有唯一的64 位的序列號存儲在內(nèi)部存儲器中;</p><p> ??供電范圍為3.0V到5.5V;</p><p> ??測溫范圍為-55~+125℃(-67~+257℉
31、);</p><p> ??在-10~+85℃范圍內(nèi)精確度為±5℃;</p><p> ??溫度計分辨率可以被使用者選擇為9~12位;</p><p> ??最多在750ms 內(nèi)將溫度轉(zhuǎn)換為12 位數(shù)字;</p><p> ??非易失性溫度報警設(shè)置用戶自己可以定義;</p><p> ??應用包括溫
32、度控制、工業(yè)系統(tǒng)、消費品、溫度計或任何熱感測系統(tǒng)。</p><p><b> 2.2.2引腳排列</b></p><p> 圖3 DS18B20引腳排列圖</p><p><b> 說明</b></p><p> DS18B20數(shù)字溫度計提供9至12位的攝氏溫度測量,并具有易失性的用戶可編程
33、觸發(fā)點的上限和下限報警功能,其引腳排列如圖3所示。DS18B20單總線通信按定義只需要一條數(shù)據(jù)線(和地線)與中央微處理器進行通信。它具有工作溫度范圍55°C + 125°C和準確±0.5°C范圍- 10°C + 85°C.此外,DS18B20可以導出功率直接從數(shù)據(jù)線(“寄生蟲”),消除了外部電源需要。</p><p> 每個DS18B20都有一個唯一的
34、64位串行碼,它允許多個DS18B20在同一根總線功能。因此,它是用一個簡單的微處理器控制,大面積分布的許多DS18B20s。應用程序可以受益于這個功能包括空調(diào)環(huán)境控制,建筑物內(nèi)的溫度監(jiān)控系統(tǒng),設(shè)備,或機械,和過程監(jiān)控控制系統(tǒng)。</p><p><b> 2.2.3執(zhí)行序列</b></p><p> 通過單線總線端口訪問DS18B20的協(xié)議如下:</p>
35、;<p><b> 步驟1. 初始化;</b></p><p> 步驟2. ROM操作指令;</p><p> 步驟3. DS18B20功能指令;</p><p> 每一次DS18B20的操作都必須滿足以上步驟,當順序混亂或缺少步驟,該器件不會有返回值。例如這樣的順序:發(fā)起ROM搜索指令[F0h]和報警搜索指令[ECh]之
36、后,總線控制器必須返回步驟1。</p><p> 2.2.4單總線信號</p><p> DS18B20需要嚴格的單總線協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括集中單總線信號類型:復位脈沖、存在脈沖、寫0、寫1、讀0 和讀1。所有這些信號,除存在脈沖外,都是由總線控制器發(fā)出的。</p><p><b> 圖4初始化時序</b></p>
37、<p><b> 讀/寫時序</b></p><p> DS18B20的數(shù)據(jù)讀寫是通過時序處理位來確認信息交換的。</p><p><b> 寫時序</b></p><p> 由兩種寫時序:寫1 時序和寫0 時序??偩€控制器通過寫1 時序?qū)戇壿? 到DS18B20,寫0 時序?qū)戇壿? 到DS18B20
38、。所有寫時序必須最少持續(xù)60us,包括兩個寫周期之間至少1us的恢復時間。當總線控制器把數(shù)據(jù)線從邏輯高電平拉到低電平的時候,寫時序開始(圖4)。</p><p> 總線控制器要生產(chǎn)一個寫時序,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時序開始后的15us釋放總線。當總線被釋放的時候,5K的上拉電阻將拉高總線??偪刂破饕梢粋€寫0時序。</p><p> 若線上是高電平,就是寫1。若線上是低
39、電平,就是寫0。</p><p><b> 讀時序</b></p><p> 當控制器發(fā)起讀時序,DS18B20只用來給控制器傳輸數(shù)據(jù)。所有讀時序必須最少60us,包括兩個讀周期間至少1us的恢復時間。當總線控制器把數(shù)據(jù)線從高電平拉到低電平時,讀時序開始,數(shù)據(jù)線必須至少保持1us,然后總線被釋放(圖5)。在總線控制器發(fā)出讀時序后,DS18B20 通過拉高或拉低總線
40、上來傳輸1或0。當傳輸邏輯0結(jié)束后,總線將被釋放,通過上拉電阻回到上升沿狀態(tài)。從DS18B20輸出的數(shù)據(jù)在讀時序的下降沿出現(xiàn)后15us 內(nèi)有效。</p><p> 因此,總線控制器在讀時序開始后必須停止把I/O腳驅(qū)動為低電平15us,以讀取I/O腳狀態(tài)。</p><p><b> 圖5讀/寫時序</b></p><p><b>
41、 2.3矩陣鍵盤</b></p><p> 4 根行線與4 根列線交叉構(gòu)成4*4矩陣鍵盤,其16個按鍵在行列的交叉點上。4*4矩陣鍵盤的每條行線都和4 條列線相交,該鍵所在行線與列線的電平受交點按鍵的按下影響,各按鍵間將相互影響,鍵分析時必須將行線、列線信號配合起來作適當處理,才能確定閉合鍵的位置。</p><p><b> 按鍵的特點與去抖</b>&
42、lt;/p><p> 按鍵在釋放和按下時,受機械彈性作用,通常有一定時間的抖動,然后其觸點才能逐漸穩(wěn)定如下圖所示。抖動時間的長短和開關(guān)機械特性有關(guān)系,其時間一般為5 ~ 10 ms左右如圖6所示。在抖動期間按下或者釋放經(jīng)常被認為是多次操作按鍵這很明顯是錯誤的,要怎么樣才能避免這種錯誤呢這就必須采用去抖操作通常考慮軟件去抖和硬件去抖,硬件去抖通常在按鍵較少時采用,軟件去抖通常在按鍵較多時采用很明顯本設(shè)計應該考慮的是軟
43、件去抖。</p><p><b> 圖6 按鍵的去抖</b></p><p> 2.4LCD1602</p><p><b> 管腳功能</b></p><p> 1602采用標準的16腳接口,其中:</p><p> 第1腳:VSS是一個電源地引腳;</p&
44、gt;<p> 第2腳:VDD引腳應該接+5V電源;</p><p> 第4腳:RS是一個寄存器選擇引腳;</p><p> 第5腳:RW是一個讀寫信號線引腳;</p><p> 第6腳:E是一個使能引腳;</p><p> 第15腳是一個背光正極引腳;</p><p> 第7~14腳:D0~
45、D7是一個8位雙向數(shù)據(jù)引腳。</p><p><b> 操作控制</b></p><p><b> 表1操作控制表</b></p><p> 注:關(guān)于E=H脈沖——開始時初始化E為0,然后置E為1,再通常推薦的初始化過程:</p><p><b> 延時15ms</b>
46、</p><p><b> 寫指令38H</b></p><p><b> 延時5ms</b></p><p><b> 寫指令38H</b></p><p><b> 延時5ms</b></p><p><b>
47、 寫指令38H</b></p><p><b> 延時5ms</b></p><p> ?。ㄒ陨隙疾粰z測忙信號)</p><p> ?。ㄒ韵露家獧z測忙信號)</p><p><b> 寫指令38H</b></p><p> 寫指令08H 關(guān)閉顯示</
48、p><p> 寫指令01H 顯示清屏</p><p> 寫指令06H 光標移動設(shè)置</p><p> 寫指令0cH 顯示開關(guān)及光標設(shè)置</p><p><b> 完畢</b></p><p> 讀寫操作時序如圖所示</p><p><b> 圖7讀操作時序
49、</b></p><p><b> 圖9 寫操作時序</b></p><p><b> 3 系統(tǒng)硬件設(shè)計</b></p><p> 3.1單片機最小系統(tǒng)設(shè)計</p><p> 單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng).對51系列單片機來說,
50、單片機+晶振電路+復位電路,便組成了一個最小系統(tǒng)如下圖所示其中XTAL1與XTAL2 接晶振通過電容接地形成時鐘電路給單片機提供時鐘脈沖具體如下圖10所示。</p><p> 圖10單片機最小系統(tǒng)</p><p> 3.2溫度傳感電路設(shè)計</p><p> 如下圖11所示DS18B20采用單總線連接只需將DQ引腳接到單片機的一個IO口上(P2.1)VCC接電G
51、ND接地I/O口線要接5KΩ左右的上拉電阻以保護溫度傳感器。</p><p><b> 圖11溫度傳感電路</b></p><p> 3.3溫度控制電路設(shè)計</p><p> 如下圖12所示溫度控制電路采用三極管來控制微型加熱器,當溫度達到目標溫度時單片機io口有高電平變?yōu)榈碗娖饺龢O管斷開微型加熱器不斷電從而控制溫度。</p>
52、<p><b> 圖12溫度控制電路</b></p><p> 3.4矩陣鍵盤電路設(shè)計</p><p> 如下圖13所示4×4 的矩陣式鍵盤由4 根行線和4 根列線交叉構(gòu)成,按鍵位于行列的交叉點上,這樣就構(gòu)成了16 個按鍵,其中交叉點的行列線是不連接的。</p><p><b> 圖13鍵盤電路<
53、/b></p><p> Lcd1602上顯示每個按鍵的“0~F”序號,對應的按鍵的序號排列如圖14所示:</p><p> 圖 14鍵的序號排列圖</p><p> 3.5液晶顯示電路設(shè)計</p><p> 如圖15所示PO口接D0~D7為8位雙向數(shù)據(jù)端,VDD接電VSS接地VEE通過電阻接地456引腳接單片機的三個IO引腳。
54、</p><p><b> 圖15液晶顯示電路</b></p><p><b> 4 系統(tǒng)軟件設(shè)計</b></p><p> 4.1 延時函數(shù)的設(shè)計</p><p> 在延時頭文件中主要制作了50us延時函數(shù)和50ms延時函數(shù)方便其他函數(shù)調(diào)用。</p><p> /
55、*************delay.h************//delay頭文件</p><p> #ifndef __ DELAY _H__</p><p> #define __ DELAY _H__//防重復包含指令</p><p> #define uchar unsigned char #define uint unsigned in
56、t</p><p> void delay_50us(uint t);//50us延時函數(shù)</p><p> void delay_50ms(uint t); //50ms延時函數(shù)</p><p><b> #endif</b></p><p> //************************ delay.
57、c****************</p><p> #include” delay.h” </p><p> void delay_50us(uint t){ uchar j; for(;t>0;t--) for(j=19;j>0;j--);}</p&g
58、t;<p> void delay_50ms(uint t){ uint j; for(;t>0;t--) for(j=6245;j>0;j--);}</p><p> 4.2 DS18B20的初始化與讀寫設(shè)計</p><p> 在ds18b20模塊中主要是ds18b20的初始化函數(shù),讀溫度函數(shù)以及在lcd1602的顯
59、示以方便在主函數(shù)當中調(diào)用。</p><p> //****************ds18b20.h*****************</p><p> #ifndef __DS18B20_H__</p><p> #define __DS18B20_H__//防重復包含指令</p><p> #include<reg52.h&
60、gt;</p><p> #define uchar unsigned char #define uint unsigned int</p><p> sbit DQ=P2^1; //定義P2^1</p><p> void init_ds18b20(void);void delay(uint t);void
61、write_byte(uchar dat);uchar read_byte(void);uchar readtemperature(void);</p><p> void display(void);#endif</p><p> //**********************ds18b20.c************</p><p> #inclu
62、de”ds18b20.h” </p><p> #include”delay.h”</p><p> #include”lcd1602.h”</p><p> #include<reg52.h></p><p> void delay(uint t){ while(t--); }</p>
63、;<p> void init_ds18b20(void) //ds18b20初始化函數(shù){ uchar n; DQ=1; delay(8); DQ=0; delay(80); DQ=1; delay(8); n=DQ; delay(4);</p><p>
64、<b> }</b></p><p> void write_byte(uchar dat) //寫字節(jié){ uchar i; for(i=0;i<8;i++) { DQ=0; DQ=dat&0x01; delay(4);
65、 DQ=1; dat>>=1; } delay(4);}</p><p> uchar read_byte(void) //讀字節(jié){ uchar i,value; for(i=0;i<8;i++) { DQ=0;
66、; value>>=1; DQ=1; if(DQ) value|=0x80; delay(4);</p><p> } return value;}</p><p> uchar readtemperature(void)
67、 //讀溫度{ uchar a,b; init_ds18b20(); write_byte(0xcc); //跳過ROM write_byte(0x44); //啟動溫度測量 delay(300);</p><p> init_ds18b20(); write_byte(0xcc); wri
68、te_byte(0xbe); a=read_byte(); b=read_byte(); b<<=4; b+=(a&0xf0)>>4; return b;</p><p><b> } </b></p><p> void display(void)
69、 //lcd1602顯示溫度{ write_data(readtemperature());</p><p><b> }</b></p><p> 4.3 LCD的初始化與讀寫顯示設(shè)計</p><p> 在lcd1602模塊主要是1602的初始化,寫命令,寫字符函數(shù)以方便在主函數(shù)當中調(diào)用。</p>&l
70、t;p> //*************lcd1602.h************</p><p> #ifndef __LCD1602_H__</p><p> #define __LCD1602_H__//防重復包含指令</p><p> #include<reg52.h></p><p> #define u
71、char unsigned char #define uint unsigned int</p><p> sbit rs=P2^3; //定義接口sbit rw=P2^4;sbit e=P2^5;</p><p> void write_com(uchar com);void write_data(uchar dat);<
72、;/p><p> void init(void);#endif</p><p> //************************lcd1602.c****************</p><p> #include”lcd1602.h” </p><p> #include”delay.h”</p><p>
73、; #include<reg52.h>void write_com(uchar com) //寫命令程序{ e=0; rs=0; rw=0; P0=com; delay_50us(10); e=1; delay_50us(20); e=0;}</p><p> void
74、write_data(uchar dat) //寫字符{ e=0; rs=1; rw=0; P0=dat; delay_50us(10); e=1; delay_50us(20); e=0; }</p><p> void init(void)
75、 //lcd1602初始化函數(shù){ delay_50us(300); write_com(0x38); delay_50us(100); write_com(0x38); delay_50us(100); write_com(0x38); write_com(0x38); write_com(0x08); write_co
76、m(0x01); write_com(0x06); write_com(0x0c);}</p><p> 4.4 矩陣鍵盤輸入設(shè)計</p><p> 矩陣模塊主要包括鍵盤掃描和按鍵的去抖。</p><p> //************* keyscan.h ************</p><p> #if
77、ndef __ KEYSCAN_H__</p><p> #define __ KEYSCAN_H__//防重復包含指令</p><p> #include<reg52.h></p><p> void keyscan(void);</p><p> uint target;</p><p><
78、;b> #endif</b></p><p> //************************ keyscan.c****************</p><p> #include”keyscan.h” </p><p> #include”lcd1602.h” </p><p> #include”del
79、ay.h”</p><p> #include<reg52.h></p><p> #define uchar unsigned char #define uint unsigned int</p><p> void keyscan(void) //鍵盤掃描函數(shù){</p><
80、p> uchar key_l,key_h; uchar key;</p><p><b> target=0;</b></p><p> uint i=0; while(1) { P1=0xf0; key_l=P1; key_l=key_l&0xf0; if(key
81、_l!=0xf0) //去抖 { delay_50us(100); if(key_l!=0xf0) { key_l=P1&0xf0; //11100000 key_l=key_l|0x0f;//11101111
82、0; P1=key_l; key_h=P1; key_h=key_h&0x0f;//00001110 key_l=key_l&0xf0;//11100000 key=key_h+key_l; //11101110
83、0; } } switch (key) //顯示鍵值 { case 0xee: write_data(0x00); target=target*i+0;i++;break; case 0xde: write_data(0x01); target=target*i+<
84、;/p><p><b> }</b></p><p><b> }</b></p><p><b> 4.5主程序設(shè)計</b></p><p> 主程序先把各模塊包涵進來即之前制作的頭文件,方便函數(shù)的調(diào)用。</p><p> 主函數(shù)當中先進行ds1
85、8b20 lcd1602的初始化,加熱器工作;通過lcd1602寫命令函數(shù)把光標指到第一行;調(diào)用lcd1602寫字符函數(shù)顯示“Target TEM:”鍵盤掃描函數(shù)把鍵值顯示到lcd1602即顯示目標溫度。</p><p> 調(diào)用寫命令函數(shù)把光標指到第二行;調(diào)用lcd1602寫字符函數(shù)顯示“Get TEM:”調(diào)用ds18b20的顯示函數(shù)把實時溫度顯示到液晶第二行。</p><p> 當
86、時溫度大于或等于目標溫度時進入while循環(huán)蜂鳴器響,加熱器斷電。</p><p> #include”ds18b20.h” //頭文件</p><p> #include”lcd1602.h”</p><p> #include”keyscan.h”</p><p> #include”delay.h”<
87、;/p><p> #include<reg52.h></p><p> sbit beep =P3^0; //定義蜂鳴器接口</p><p> sbit heating =P3^4; //定義加熱器接口</p><p> #define uchar unsigne
88、d char //宏定義#define uint unsigned int</p><p> void main(){ uchar table1[]=" Get TEM: "; //實時溫度 uchar table2[]="Target TEM:"; //目標溫度</p&g
89、t;<p><b> uchar j;</b></p><p> init_ds18b20(); //ds18b20初始化</p><p> init(); //lcd1602初始化</p><p> heating=1;
90、 </p><p><b> while(1)</b></p><p><b> {</b></p><p> write_com(0x80); //光標指到第一行</p><p> for(j=0;j<10;j++)
91、{ write_data(table2[j]); //顯示Target TEM字符</p><p> keyscan(); //鍵盤掃描</p><p> delay_50us(10); //延時</p><p> } wri
92、te_com(0x80+0x40); //光標指到第二行</p><p> for(j=0;j<10;j++) { write_data(table1[j]); //顯示Get TEM字符</p><p> display(); //
93、顯示實時溫度 delay_50us(10); }</p><p> while ((readtemperature())>==target) //當實時溫度大于或等于目標溫度時</p><p> {beep=1; //蜂鳴器響,指示燈亮</p>
94、;<p> heating=0; //加熱器停止加熱</p><p><b> }}</b></p><p><b> 5 結(jié)論</b></p><p> 本文設(shè)計的溫度控制系統(tǒng)能快速安全準確的讓微型加熱器加熱到目標溫度,通過矩陣鍵盤能夠很好的輸入目標溫度,液晶顯示很好
95、的保證了實時溫度的顯示和目標溫度的鍵入輸出,使實驗人員對溫度一目了然,使用單片機處理數(shù)據(jù)保證了其準確和穩(wěn)定性,減小了誤差,報警電路保證了實驗人員的安全和實驗的精確,綜上本溫控系統(tǒng)的設(shè)計很好的滿足了實驗對于加熱藥品的需要,值得推廣使用。</p><p><b> 致謝</b></p><p> 本設(shè)計在**老師的悉心指導經(jīng)過兩個月,從一開始的課題選擇、方案流程圖到具
96、體軟硬件設(shè)計,歷經(jīng)千辛萬苦終于圓滿完成在這首先要感謝我的指導老師和同寢室同學是他們給了我精心指導和無私的關(guān)懷,讓我受益匪淺。</p><p> 本設(shè)計能夠圓滿完成,其中很大一部分要歸功與各位任課老師是他們的認真負責讓我打下了扎實的基礎(chǔ)讓我能夠更好地運用專業(yè)知識來完成該設(shè)計。在此向宜春學院理工院全體老師表示由衷的感謝。感謝你們四年來孜孜不倦的栽培。</p><p><b> 參
97、考文獻</b></p><p> [1] 沙占友. 集成溫度傳感器原理與應用. 北京:機械工業(yè)出版社,2002, 84~95.</p><p> [2] 劉君華. 智能傳感器系統(tǒng). 西安:西安電子科技大學出版社,1999,83~105.</p><p> [3] 沙占友. 智能化傳感器原理與應用. 北京:電子工業(yè)出版社,2004,99~108.&l
98、t;/p><p> [4] 趙負圖. 傳感器集成電路手冊. 北京:化學工業(yè)出版社,2002,692~703.</p><p> [5] 張毅剛. MCS-51單片機原理及應用. 哈爾濱:哈爾濱工業(yè)大學出版社,2004,81~94</p><p> [6] 李玉峰,倪虹霞 MCS-51系列單片機原理與接口技術(shù). 北京:人民郵電出版社,2004,187~216.<
99、;/p><p> [7] 林伸茂. 8051單片機徹底研究經(jīng)驗篇. 北京:人民郵電出版社,2004,7~14.</p><p> [8] 沙占友. 單片機外圍電路設(shè)計. 北京:電子工業(yè)出版社,2003,37~48.</p><p> [9] 何希才. 傳感器及其應用電路. 北京:電子工業(yè)出版社,2001,36~47.</p><p> [
100、10] Intel:MCS-51 Family of Single Chip Mirocomputers User’s Manual,1990,3~9.</p><p> [11] 吳金戌,沈慶陽,郭庭吉.《8051單片機實踐與應用》[M].北京:清華大學出版社,2002.</p><p> [12] 高峰,《單片微型計算機與接口技術(shù)》[M].北京:科學出版社,2003.<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--溫度控制系統(tǒng)設(shè)計
- 水箱溫度控制系統(tǒng)畢業(yè)設(shè)計
- 遠程溫度控制系統(tǒng)畢業(yè)設(shè)計
- 溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計論文
- 溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計----智能溫度控制系統(tǒng)
- 雞舍溫度控制系統(tǒng)畢業(yè)設(shè)計上下限溫度控制
- 畢業(yè)設(shè)計---電子溫度計溫度控制系統(tǒng)
- 畢業(yè)設(shè)計237智能溫度控制系統(tǒng)
- 雞舍溫度控制系統(tǒng)畢業(yè)設(shè)計上下限溫度控制
- 畢業(yè)設(shè)計論文-智能溫度控制系統(tǒng)
- 畢業(yè)設(shè)計----焦化爐溫度控制系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計--智能溫度控制系統(tǒng)硬件設(shè)計
- 雞舍溫度控制系統(tǒng)畢業(yè)設(shè)計上下限溫度控制.doc
- 畢業(yè)設(shè)計237智能溫度控制系統(tǒng)
- 智能溫度控制系統(tǒng)畢業(yè)設(shè)計論文
- 雞舍溫度控制系統(tǒng)畢業(yè)設(shè)計上下限溫度控制.doc
- 電阻爐溫度控制系統(tǒng)畢業(yè)設(shè)計
- plc200溫度控制系統(tǒng)畢業(yè)設(shè)計
評論
0/150
提交評論