環(huán)境溫度檢測與報警課程設(shè)計
《環(huán)境溫度檢測與報警課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《環(huán)境溫度檢測與報警課程設(shè)計(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、湖南工程學(xué)院 課 程 設(shè) 計 課程名稱 單片機(jī)原理與應(yīng)用 課題名稱 環(huán)境溫度檢測與報警 專 業(yè) 電氣工程及其自動化 班 級 學(xué) 號 姓 名 指導(dǎo)教師 王迎旭 李曉秀 汪超 趙葵銀 2012年 9月 14日 湖南工程學(xué)院 課 程 設(shè) 計 任 務(wù) 書 課程名稱 單片機(jī)與應(yīng)用
2、 課 題 環(huán)境溫度檢測與報警 專業(yè)班級 學(xué)生姓名 學(xué) 號 指導(dǎo)老師 王迎旭 李曉秀 汪超 趙葵銀 審 批 王迎旭 李曉秀 汪超 趙葵銀 任務(wù)書下達(dá)日期 2012年 9月 3日 任務(wù)完成日期 2012年 9月 14日 設(shè)計內(nèi)容與設(shè)計要求 設(shè)計內(nèi)容: 本課題要求以單片機(jī)為核心設(shè)計一個環(huán)境溫度檢測與報警系統(tǒng),要求測溫范
3、圍為–10~125℃,精度誤差在0.1℃以內(nèi),LED數(shù)碼管直讀顯示,可以由用戶自己設(shè)定上限溫度,如果環(huán)境溫度超過實際溫度或在3秒內(nèi)溫度變化超過5度則會發(fā)出聲光報警。 設(shè)計任務(wù)包括控制系統(tǒng)硬件設(shè)計和應(yīng)用程序設(shè)計。要求焊接好開發(fā)板,在開發(fā)板上進(jìn)行調(diào)試。 設(shè)計要求: 1)確定系統(tǒng)設(shè)計方案; 2)進(jìn)行系統(tǒng)的硬件設(shè)計; 3)完成必要元器件選擇; 4)開發(fā)板焊接及測試 5)系統(tǒng)軟件設(shè)計及調(diào)試; 6)系統(tǒng)聯(lián)調(diào)及操作說明 7)寫說明書 主 要 設(shè) 計 條 件 1、 MCS-51單片機(jī)實驗操作臺1臺; 2、 PC機(jī)及單片機(jī)調(diào)試軟件; 3、 開發(fā)板1塊
4、; 4、 制作工具1套; 5、系統(tǒng)設(shè)計所需的元器件。 說 明 書 格 式 封面 課程設(shè)計任務(wù)書 目錄 第1章 概述(課題設(shè)計的要求、目的及意義) 第2章 系統(tǒng)總體方案選擇與說明(系統(tǒng)硬件電路設(shè)計框圖與工作原理) 第3章 硬件電路設(shè)計(各部分電路設(shè)計、原理、參數(shù)計算、I/O分配等) 第4章 應(yīng)用軟件設(shè)計(流程圖、算法等) *第5章 系統(tǒng)仿真調(diào)試 第6章 硬件調(diào)試與結(jié)果分析(開發(fā)板焊接、性能測試、結(jié)果、操作說明) 第7章 結(jié)束語(系統(tǒng)設(shè)計小結(jié):已完成的工作、效果、特色、不足與展望) 致謝 參考文獻(xiàn) 附錄A 系統(tǒng)硬件電路原理圖 附
5、錄B 程序清單 評分表 進(jìn) 度 安 排 設(shè)計時間分為二周 第一周 星期一、上午:布置課題任務(wù),課題介紹及講課。 下午:借閱有關(guān)資料,總體方案討論。 星期二、分班級焊接開發(fā)板 星期三、確定總體方案,學(xué)習(xí)與設(shè)計相關(guān)內(nèi)容。 星期四、各部分方案設(shè)計,各部分設(shè)計。 星期五、設(shè)計及上機(jī)調(diào)試。 星期六、設(shè)計并調(diào)試 第二周 星期一:設(shè)計及上機(jī)調(diào)試。 星期二:調(diào)試,中期檢查。 星期三:調(diào)試、寫說明書。 星期四--星期五上午:寫說明書、完成電子版并打印成稿。 星期五下午:答辯。 參 考 文 獻(xiàn) [1] 王迎旭等.單片機(jī)原理及及應(yīng)用.機(jī)械工業(yè)出版社.201
6、2年 [2] 三恒星科技.MCS-51單片機(jī)原理與應(yīng)用實例[M].電子工業(yè)出版社.2008年 [3] 戴仙金.51單片機(jī)及其C語言程序開發(fā)實例[M].清華大學(xué)出版社.2008年 [4] 陳海宴.51單片機(jī)原理及應(yīng)用——基于Keil C與Proteus[M].北京航空航天大學(xué)出版社.2010年 目錄 第1章 概述 1 1.1 課題的設(shè)計要求、目的及意義 1 第2章 總體方案 2 2.1 方案的選擇 2 2.2 系統(tǒng)結(jié)構(gòu)框圖及工作原理 3 第3章 硬件電路設(shè)計 5 3.1
7、復(fù)位電路的設(shè)計 5 3.2 時鐘振蕩電路 5 3.3 顯示電路 6 3.4 數(shù)字溫度傳感器DS18B20 7 3.5 按鍵查詢電路 9 3.6 單片機(jī)硬件資源分配 10 第4章 應(yīng)用軟件設(shè)計 11 4.1 主函數(shù)的設(shè)計 11 4.2 鍵盤掃描函數(shù)的設(shè)計 12 4.3 讀出溫度子程序 13 4.4 報警子程序 13 第5章 硬件調(diào)試與結(jié)果分析 14 5.1 調(diào)試方法 14 5.2 調(diào)試中出現(xiàn)的問題及解決辦法 14 5.3 調(diào)試結(jié)果 14 第6章 設(shè)計總結(jié) 17 參 考 文 獻(xiàn) 18 附錄A 系統(tǒng)硬件原理圖 19 附錄B 程序清單
8、 20 第1章 概述 1.1 課題的設(shè)計要求、目的及意義 單片機(jī)技術(shù)作為計算機(jī)技術(shù)的一個重要分支,廣泛應(yīng)用于工業(yè)控制,智能化儀器儀表,家用電器,甚至電子玩具等各個領(lǐng)域,它具有體積小,功能多,價格低廉,使用方便,系統(tǒng)設(shè)計靈活等優(yōu)點,因此越來越受工程技術(shù)人員的重視與親睞。 伴隨著科學(xué)技術(shù)和生產(chǎn)的不斷發(fā)展,需要對各種參數(shù)進(jìn)行溫度測量。溫度控制和測量在各行各業(yè)中發(fā)揮著重要的作用。如在日趨發(fā)達(dá)的工業(yè)之中,利用測量與控制溫度來保證生產(chǎn)的正常運(yùn)行。在農(nóng)業(yè)中,用于保證蔬菜大棚的恒溫保產(chǎn)等。在單片機(jī)溫度測量系統(tǒng)中的關(guān)鍵是測量溫度、控制溫度和保持溫度,溫度測量是工業(yè)對象中主要的被控
9、參數(shù)之一,具有現(xiàn)實意義. 本課題以單片機(jī)為核心,實現(xiàn)溫度的檢測和控制。用溫度感應(yīng)器件ds18b20模擬溫度的輸入量,當(dāng)溫度低于25度時,發(fā)出長嘀聲報警,當(dāng)溫度高于30度時,啟動直流電機(jī)散熱。測量溫度范圍在0-99度。用ds18b20溫度的檢測和控制,并用四位LED數(shù)碼顯示管顯示各路溫度,并且設(shè)置按鍵可實現(xiàn)對溫度的報警上下限進(jìn)行控制. 以此簡易的溫度檢測和控制系統(tǒng)來達(dá)到初步應(yīng)用單片機(jī),同時對各門學(xué)科知識作一個較好的整合,對單片機(jī)在實際溫度控制的實現(xiàn)形成較好的概念和理解. 第2章 系統(tǒng)總體方案選擇與說明 2.1 方案的選擇 溫度芯片DS18B
10、20 測量溫度,輸出信號全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89c52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機(jī)連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51 單片機(jī)控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機(jī)通
11、信上傳數(shù)據(jù),另外AT89C52 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟. 該系統(tǒng)利用AT89C52芯片控制溫度傳感器DS18B20進(jìn)行實時溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報警溫度,利用鍵盤來進(jìn)行調(diào)時和溫度查詢。 這種方法測溫裝置電路簡單、精確度較高、實現(xiàn)方便、軟件設(shè)計也比較簡單,故本次設(shè)計采用了此法。 2.2 系統(tǒng)結(jié)構(gòu)框圖及工作原理 2.2.1系統(tǒng)原理 該數(shù)字溫度檢測系統(tǒng)如圖2-2所示有四部分組成:溫度檢測,顯示控制,溫度顯示,報警。
12、 圖2-2 系統(tǒng)原理 (1)溫度檢測 該模塊由DS18B20負(fù)責(zé)對測試點的溫度進(jìn)行測量,單片機(jī)89C52對DS18B20進(jìn)行控制。由于DS18B20只有一根數(shù)據(jù)線,所以系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成,只需將DS18B20掛接到單片機(jī)的一個數(shù)據(jù)接口就可以直接使用。 (2)顯示控制 由于DS18B20是通過單總線方式與單片機(jī)進(jìn)行通訊的,所以對程序編寫的要求比較高。主要的程序流程是這樣的:首先由單片機(jī)發(fā)出對DS18B20進(jìn)行初始化的信號,在DS18B20初始化成功后,發(fā)送指令CC跳過讀序列號的操作,接著發(fā)送指令44啟動溫度轉(zhuǎn)換,此時
13、在對DS18B20進(jìn)行初始化,在發(fā)送指令CC跳過讀序列號操作,最后發(fā)送指令BE讀暫存存儲器。 至此完成一個周期,當(dāng)前溫度值所對應(yīng)的二進(jìn)制編碼已經(jīng)被保存在DS18B20的ROM上,我們只需將ROM上的溫度值讀取出來,然后轉(zhuǎn)換成相應(yīng)的十進(jìn)制,就可以拿來做后面的運(yùn)算和顯示了。 (3)溫度顯示 這部分模塊由四位八段共陽極的數(shù)碼管組成,段選部分直接與單片機(jī)相連。 (4) 報警 報警裝置由蜂鳴器構(gòu)成,當(dāng)溫度超過設(shè)定值時報警。 第3章 硬件電路設(shè)計 3.1復(fù)位電路的設(shè)計 采用47uF的C3和10K的R2可以保證加在引腳上的高電平持續(xù)2個機(jī)器周期
14、,即使單片機(jī)有效地復(fù)位。按鍵可以隨時使電路復(fù)位,當(dāng)鍵按下時1K的R1和10K的R2串聯(lián)分壓使RST為高電平,即復(fù)位,如圖3-1所示。 圖3-1 復(fù)位電路 3.2時鐘振蕩電路 時鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。本次設(shè)計采用內(nèi)部方式的外部時鐘接法。為達(dá)到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,電容C1、C2對頻率有微調(diào)作用,故外接晶振時,C1和C2在本設(shè)計中選擇30pF,振蕩頻率取12MHz。晶振
15、的兩個引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。具體連接圖如圖3-2所示: CRYSTAL XTAL1 XTAL2 圖3-2 時鐘振蕩電路 3.3 顯示電路 本次設(shè)計中采用共陰極數(shù)碼管作為顯示器。LED的驅(qū)動電路簡單,使用方便,具有耗電少、成本低廉、配置簡單靈活、安裝方便、耐振動、使用壽命長等優(yōu)點。LED顯示器與單片機(jī)的接口一般有動態(tài)顯示與靜態(tài)顯示接口兩種電路。 本次設(shè)計中,由于單片機(jī)本身提供的I/O口有限,本次設(shè)計采用動態(tài)顯示,數(shù)碼管采用的是共陽極接法。用AT89
16、C52的P0口作段碼輸出時, 在本次設(shè)計中我們將數(shù)碼管各段加上拉電阻后接單片機(jī)P0口。我們把P2口的輸出信號直接接到數(shù)碼管的位選端作為位選信號,低電平有效,具體連接如圖3-3所示。 圖3-3 3.4 數(shù)字溫度傳感器DS18B20 本次設(shè)計的硬件電路簡單,關(guān)鍵的地方在DS18B20,也是最復(fù)雜難懂的。 溫度傳感器采用的是DALLAS公司的單總線數(shù)字溫度傳感器DS18B20。它采用獨特的單線接口方式,僅需一個信號線發(fā)送或接收信息。測量范圍為-55℃~125℃,CPU用P3.6口與DS18B20通信,如圖3-4-1即為溫
17、度傳感器。 圖3-4-1 溫度傳感器 下圖為DS18B20的內(nèi)部結(jié)構(gòu)框圖 C 64 位 ROM 和 單 線 接 口 高速緩存 存儲器與控制邏輯 溫度傳感器 高溫觸發(fā)器TH 低溫觸發(fā)器TL 配置寄存器 8位CRC發(fā)生器 Vdd 圖3-4-2 DS18B20的內(nèi)部結(jié)構(gòu)框圖 64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進(jìn)行通信
18、的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。 DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖3-4所示。 表3-4 分辨率轉(zhuǎn)換 頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié), 為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20 工作
19、時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。 DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格
20、式以0.0625℃/LSB形式表示。下表為DS18B20溫度轉(zhuǎn)換時間表。 減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖 信號進(jìn)行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。 另外,由于DS18B20單線通信功能是
21、分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。 3.5 按鍵查詢電路 本系統(tǒng)設(shè)有四個獨立按鈕,如圖3-4所示。為確保隨時可以控制進(jìn)入和退出查詢狀態(tài),所以設(shè)有一個進(jìn)入和退出查詢狀態(tài)的復(fù)用按鍵,自進(jìn)入查詢狀態(tài)時,再按對應(yīng)的通道查尋鍵即可查詢各通道信息,例如按下通道0查詢,假若當(dāng)前顯示的是通道0的當(dāng)前溫度及對應(yīng)的數(shù)字量為上線,如果再次按下該鍵,則顯示的是為報警的下線,如果超溫次數(shù)大于設(shè)定值,則會出現(xiàn)報警現(xiàn)象,提示需對該路的控制對象進(jìn)行必要的檢查。
22、 圖3-5 按鍵電路 3.6 單片機(jī)硬件資源分配 I/O口配表 P0口 P0.0 LED數(shù)碼管A段 P2口 P2.0 LED數(shù)碼管W3位選端 P0.1 LED數(shù)碼管B段 P2.1 LED數(shù)碼管W1位選端 P0.2 LED數(shù)碼管C段 P2.2 LED數(shù)碼管W2位選端 P0.3 LED數(shù)碼管D段 P2.3 LED數(shù)碼管W4位選端 P0.4 LED數(shù)碼管E段 P2.4 獨立鍵盤的S4列選端 P0.5 LED
23、數(shù)碼管F段 P2.5 獨立鍵盤的S3列選端 P0.6 LED數(shù)碼管G段 P2.6 獨立鍵盤的S2列選端 P0.7 LED數(shù)碼管DP段 P2.7 獨立鍵盤的S1列選端 P3口 P3.7 蜂鳴器 P3.6 Ds18b20接口 第4章 應(yīng)用軟件設(shè)計 4.1 主函數(shù)的設(shè)計 整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實質(zhì)性的功
24、能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件也就是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。主程序流程見圖4-1。 圖4-1 主函數(shù)流程 4.2 鍵盤掃描函數(shù)的設(shè)計 圖4-2為鍵盤掃描函數(shù)流程圖,為防止誤讀電平,讀引腳時先寫“1”。本系統(tǒng)在P2口低四位接有四個開關(guān),故將低四位寫“1”。首先判斷有無鍵按下,然后延時去抖動后再次判有無鍵按下,然后等待鍵的釋放,最
25、后是鍵的識別。假若P2.0按下,則K1=1,因為四個鍵均為復(fù)用鍵,所以d[0]++表示當(dāng)前是查詢該路的溫度,對于其他2路通道也照此設(shè)計。 圖4-2 鍵盤掃描函數(shù)流程 4.3 讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進(jìn)行CRC校驗,校驗有錯時不進(jìn)行溫度數(shù)據(jù)的改寫,流程如圖4-3所示。 如圖4-3 4.4 報警子程序 報警根據(jù)通過鍵盤設(shè)定的上下限溫度值來比較是否觸發(fā)報警裝置。流程如圖4-4所示。
26、 圖4-4 報警子程序函數(shù) 第5章 硬件調(diào)試與結(jié)果分析 5.1 調(diào)試方法 首先將用KEIL編譯好的程序進(jìn)行編譯,程序無錯誤運(yùn)行后產(chǎn)生hex文件,然后用單片機(jī)連接電腦用軟件下載到單片機(jī)中試運(yùn)行看結(jié)果。 調(diào)試時單片機(jī)p0口一次連接顯示管a到dp,將j6用線短接,s1到s4分別連接單片機(jī)p2.4到p2.7顯示管位選連接單片機(jī)p2.0到p2.3,溫度檢測原件ds18b20連接p3.6,連接好電源都打開調(diào)試。 5.2 調(diào)試中出現(xiàn)的問題及解決辦法 單片機(jī)調(diào)試時出現(xiàn)顯示閃爍太大,以至于顯示看不清,應(yīng)看顯示抖動程序是否
27、正確,調(diào)試時按鍵加減顯示過快出現(xiàn)跳躍式顯示,應(yīng)該看看按鍵顯示程序的延時是否符合標(biāo)準(zhǔn), 5.3 調(diào)試結(jié)果 (1)開機(jī)正常顯示溫度 圖5-3-1 開機(jī)顯示 (2)按下矩陣鍵盤最后一排第一個鍵顯示上限定,按兩下為下限設(shè)定。 圖5-3-2 上線顯示 (3)按下矩陣鍵盤最后一排第二個鍵顯示加一功能。 圖5-3-3 上線加一 (4) 按下矩陣鍵盤最后一排第三個鍵顯示減一功能。
28、 圖5-3-4 上線減一 (5)按下矩陣鍵盤最后一排第四個鍵顯示反回。 圖5-3-5 返回顯示界面 第6章 設(shè)計總結(jié) 經(jīng)過兩周的努力,老師任務(wù)書交代的基本內(nèi)容都已經(jīng)通過單片機(jī)實現(xiàn),效果不錯,(1)可以很穩(wěn)定的通過ds18b20檢測顯示溫度,(2)可以自由的通過鍵盤修改溫度報警上下限,(3)當(dāng)溫度超出設(shè)定范圍是,有報警提示。但是本次設(shè)計的不足之處在沒能更好的實現(xiàn)溫度突變報警,還有沒有顯示四位溫度,希望在
29、以后的接觸過程中更加的了解單片機(jī),學(xué)到更多的應(yīng)用。 以后有什么問題要勇敢的面對,遇到的多了,自然而然的我們會自信的解決這些問題。這就是我在這次課程設(shè)計中的最大收獲。最后感謝老師和同一課題的彭瓊和姚波同學(xué)的幫助和指點,特別是王迎旭老師的熱心指導(dǎo),沒有老師們的幫助我們不可能順利解決一些疑惑和難題,再次謝謝老師們的幫助和辛勤的付出。 參 考 文 獻(xiàn) [1] 王迎旭.單片機(jī)原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004. [2] 三恒星科技.MCS-51單片機(jī)原理與應(yīng)用實例[M].北京:電子工業(yè)出版社,2008
30、.
[3] 戴仙金.51單片機(jī)及其C語言程序開發(fā)實例[M].北京:清華大學(xué)出版社,2008.
[4] 陳海宴.51單片機(jī)原理及應(yīng)用——基于Keil C與Proteus[M].北京:北京航空航天大學(xué)出版社,2010.
[5] 何立民.單片機(jī)高級教程——應(yīng)用與設(shè)計[M].2版.北京:北京航空航天大學(xué)出版社,2007.
附錄A 系統(tǒng)硬件原理圖
附錄B 程序清單
#include
31、 #define uint unsigned int sbit DATA = P3^6; //DS18B20接入口 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/ int temp; //溫度值 int ss; //中間的一個變量 int dd; int j; uchar data b;//定時器中斷次數(shù) uchar data buf[4];//字型顯示中間變量 int alarmH=500; //默認(rèn)
32、報警值 int alarmL=-10; //定義開關(guān)的接入口 sbit k1=P2^5;//+ sbit k2=P2^6;//- sbit k3=P2^7;//確認(rèn) sbit k4=P2^4; sbit bell=P1^0; sbit HLight=P1^2; sbit LLight=P1^3; sbit Red=P1^6; sbit Green=P1^7; bit set=0; bit Flag=0; int n; //函數(shù)的聲明區(qū) void key_to1(); void key_to2(); void delay(uint); vo
33、id key(); void Show(); //函數(shù)的定義區(qū) /*延時子函數(shù)*/ void delay(uint num) { while(num--) ; } //DS18b20溫度傳感器所需函數(shù),分為初始化,讀寫字節(jié),讀取溫度4個函數(shù) Init_DS18B20(void) //傳感器初始化 { uchar x=0; DATA = 1; //DQ復(fù)位 delay(10); //稍做延時 DATA = 0; //單片機(jī)將DQ拉低 delay(80); //精確延時 大于 480us //450 DATA
34、 = 1; //拉高總線 delay(20); x=DATA; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(30); } ReadOneChar(void) //讀一個字節(jié) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DATA = 0; // 給脈沖信號 dat>>=1; DATA = 1; // 給脈沖信號 if(DATA) dat|=0x80; delay(8); } retur
35、n(dat); } WriteOneChar(unsigned char dat) //寫一個字節(jié) { uchar i=0; for (i=8; i>0; i--) { DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat>>=1; } delay(8); } int ReadTemperature(void) //讀取溫度 { uchar a=0; uchar b=0; int t=0; float tt=0; Init_DS18B20()
36、; WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=ReadOneChar();//低位 b=ReadOneChar();//高位 t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; return(t); } void
37、display00() //*********顯示負(fù)值子函數(shù) { dd=-(temp-1); buf[1]=dd/100; buf[2]=dd/100; buf[3]=dd%100/10; buf[0]=dd%10; //動態(tài)顯示 for(j=0;j<5;j++) { P2=0xff; // 初始燈為滅的 P0=0x00; P2=0xfd; //顯示小數(shù)點 P0=0x80; //顯示小數(shù)點 delay(100); P2=0xff; //
38、初始燈為滅的 P0=0x00; P2=0xf7; //片選LED1 P0=0x40; delay(100); P2=0xff; P0=0x00; P2=0xfb; //片選LED2 P0=table[buf[2]]; delay(100); P2=0xff; P0=0x00; P2=0Xfd; //片選LED3 P0=table[buf[3]]; delay(100); P2=0xff; P0=0x00; P2=
39、0Xfe; P0=table[buf[0]]; //片選LED4 delay(100); P2=0xff; } } //顯示正值子函數(shù) void display() { buf[1]=temp/1000;//顯示百位 buf[2]=temp/100%10;//顯示十位 buf[3]=temp%100/10;//顯示個位 buf[0]=temp%10; //第4位 南北秒個位 for(j=0;j<3;j++) { P2=0xff; // 初始燈為滅的 P0=0x00; P2=
40、0xfd; //顯示小數(shù)點 P0=0x80; //顯示小數(shù)點 delay(300); P2=0xff; // 初始燈為滅的 P0=0x00; P2=0xf7; //片選LED1 P0=table[buf[1]]; delay(300); P2=0xff; P0=0x00; P2=0xfb; //片選LED2 P0=table[buf[2]]; delay(300); P2=0xff; P0=0x00
41、; P2=0Xfd; //片選LED3 P0=table[buf[3]]; delay(300); P2=0xff; P0=0x00; P2=0Xfe; P0=table[buf[0]]; //片選LED4 delay(300); P2=0xff; } } void key() //按鍵掃描子程序 { if(k1!=1) { delay(20); if(k1!=1) { while(k1!=1) { key_to1(); for(n=0;n<8;n++)
42、 Show(); } } } if(k2!=1) { delay(20); if(k2!=1) { while(k2!=1) { key_to2(); for(n=0;n<8;n++) Show(); } } } if(k3!=1) { TR0=1; //復(fù)位,開定時 temp=ReadTemperature(); } if(k4!=1) { delay(20); if(k4!=1) {
43、while(k4!=1); set=!set; if(set==0) { Red=0;Green=1;} else { Green=0;Red=1;} } } } void key_to1() { TR0=0; //關(guān)定時器 temp+=10; if(temp>=1100) {temp=-550;} if(set==0) {alarmH=temp;} else {alarmL=temp;} } void key_to2() {
44、
TR0=0;
//關(guān)定時器
temp-=10;
if(temp<=-550)
{temp=1100;}
if(set==0)
{ alarmH=temp;}
else { alarmL=temp;}
}
void alarm(void)
{
if(temp>alarmH||temp 45、o()//開機(jī)的Logo
{ P0=0x40;
P2=0xf7;
delay(50);
P2=0xfb;
delay(50);
P2=0Xfd;
delay(50);
P2=0Xfe;
delay(50);
P1 = 0xff; //關(guān)閉顯示
}
void Show()
{ if(temp>=0)
{HLight=1;LLight=0;display();}//顯示函數(shù)
if(temp<0)
{HLight=0;LLight=1;display00();}
}
void 46、 main()
{
TCON=0x01;
TMOD=0X01;
TH0=0XD8;
TL0=0XF0;
EA=1;
ET0=1;
TR0=1;
EX0=1;
for(n=0;n<500;n++)//顯示啟動LOGo"- - - -"
{bell=0;logo();}
Red=0;
while(1)
{
key();
ss=ReadTemperature();
Show();
alarm();
if(Flag==1)
{bell=!bell;} //蜂鳴器滴滴響 47、
else {bell=0;}
}
}
void time0(void) interrupt 1 using 1 //每隔10ms執(zhí)行一次此子程序
{ TH0=0X56;
TL0=0XDC;
temp=ss;
}
電氣與信息工程系課程設(shè)計評分表
項 目
評 價
優(yōu)
良
中
及格
差
設(shè)計方案合理性與創(chuàng)造性(10%)
開發(fā)板焊接及其調(diào)試完成情況*(10%)
硬件設(shè)計或軟件編程完成情況(20%)
硬件測試或軟件調(diào)試結(jié)果*(10%)
48、
設(shè)計說明書質(zhì)量(20%)
答辯情況(10%)
完成任務(wù)情況(10%)
獨立工作能力(10%)
出勤情況(10%)
綜 合 評 分
指導(dǎo)教師簽名:________________
日 期:________________
注:①表中標(biāo)*號項目是硬件制作或軟件編程類課題必填內(nèi)容;
②此表裝訂在課程設(shè)計說明書的最后一頁。課程設(shè)計說明書裝訂順序:封面、任務(wù)書、目錄、正文、評分表、附件(非16K大小的圖紙及程序清單)。
35
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案