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