單片機(jī)原理及應(yīng)用課程設(shè)計溫度報警系統(tǒng)_第1頁
單片機(jī)原理及應(yīng)用課程設(shè)計溫度報警系統(tǒng)_第2頁
單片機(jī)原理及應(yīng)用課程設(shè)計溫度報警系統(tǒng)_第3頁
單片機(jī)原理及應(yīng)用課程設(shè)計溫度報警系統(tǒng)_第4頁
單片機(jī)原理及應(yīng)用課程設(shè)計溫度報警系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、福州大學(xué)至誠學(xué)院單片機(jī)原理及應(yīng)用課程設(shè)計題 目: 基于ds18b20、1602lcd對溫度進(jìn)行顯示, 通過按鍵對溫度進(jìn)行上限值設(shè)定,越限蜂鳴器報警 姓 名: 學(xué) 號: 系 別: 電氣工程系 專 業(yè): 電氣工程及其自動化 年 級: 2010級 起訖日期: 2012.12.312013.1.13 指導(dǎo)教師: 目 錄1、課程設(shè)計目的22、課程設(shè)計題目和實現(xiàn)目標(biāo)23、設(shè)計方案24、proteus仿真原理圖45、程序流程圖46、程序代碼57、調(diào)試總結(jié)58、設(shè)計心得體會69、參考文獻(xiàn)61、課程設(shè)計目的單片機(jī)原理及應(yīng)用課程設(shè)計是與單片機(jī)原理及應(yīng)用課程相配套的實踐教學(xué)環(huán)節(jié)。單片機(jī)原理及應(yīng)用是一門實踐性很強(qiáng)的專

2、業(yè)基礎(chǔ)課,通過課程設(shè)計,達(dá)到進(jìn)一步理解單片機(jī)的硬件、軟件和綜合應(yīng)用方面的知識,培養(yǎng)實踐能力和綜合應(yīng)用能力,開拓學(xué)習(xí)積極性、主動性,學(xué)會靈活運用已經(jīng)學(xué)過的知識,并能不斷接受新的知識。培養(yǎng)大膽發(fā)明創(chuàng)造的設(shè)計理念,為今后就業(yè)打下良好的基礎(chǔ)。通過課程設(shè)計,掌握以下知識和技能:1 單片機(jī)應(yīng)用系統(tǒng)的總體方案的設(shè)計;2 單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計;3 單片機(jī)應(yīng)用系統(tǒng)的軟件程序設(shè)計;4 單片機(jī)開發(fā)系統(tǒng)的應(yīng)用和調(diào)試能力2、課程設(shè)計題目和實現(xiàn)目標(biāo) 使用ds18b20測溫用1602lcd對溫度進(jìn)行顯示,并能通過按鍵對溫度進(jìn)行上限值設(shè)定,要求越限蜂鳴器報警。3、設(shè)計方案3.1芯片資料3.1.1 lcd1602液晶顯示信

3、號真值表 3.1.2溫度傳感器ds18b20介紹ds18b20是美國dsllas半導(dǎo)體公司推出的第一篇支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串型數(shù)字信號供處理器處理。主機(jī)控制ds18b20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:初始化、rom操作指令、存儲器操作指令。必須先啟動ds18b20開始轉(zhuǎn)換,再讀出溫度轉(zhuǎn)換值。本程序僅掛接一個芯片,使用默認(rèn)的12位轉(zhuǎn)換精度,外接供電電源,讀取的溫度值高位字節(jié)送wdmsb單元,低位字節(jié)送wdlsb單元,再按照溫度值字節(jié)的表示格式及其符號位,經(jīng)過簡單的變換即可得到實際溫度值.單片機(jī)用串行方

4、式采集ds18b20的溫度數(shù)據(jù),執(zhí)行相應(yīng)的指令后,將溫度信息用并行方式發(fā)送到1602lcd顯示。適應(yīng)電壓范圍寬,電壓范圍在3.05.5v,在寄生電源方式下可有數(shù)據(jù)線供電。獨特的單線接口方式,它與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通信。支持多點組網(wǎng)功能,多個ds18b20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。在使用中不需要任何外圍元件,全部傳感器元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。測溫范圍-55+128,在-10+85時精度為0.5??删幊谭直媛蕿?12位,對應(yīng)的可分辨率溫度分別為0.5,0.25,0.125和0.0625,可實現(xiàn)高精度測溫。在9位

5、分辨率時,最多在93.78ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字;12位分辨率時,最多在750ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,顯示速度快。測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行送給cpu,同時可傳送crc校驗碼,具有極強(qiáng)的抗干擾糾錯能力。負(fù)壓特性。電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。 引腳排列與說明:表1 高速暫存器ram寄存器內(nèi)容字節(jié)地址溫度值低位(lsb)0溫度值高位(msb)1高溫限值(th)2低溫限值(lt)3配置寄存器4保留5保留6保留7crc校驗值8 高速暫存器ram由9個字節(jié)的存儲器組成。第01字節(jié)是溫度的顯示位;第2和第3個字節(jié)是復(fù)制的th和tl,同時第2和第3個字節(jié)的數(shù)字

6、可以更新;第4個字節(jié)是配置寄存器,同時第4個字節(jié)的數(shù)字可以更新;第5,6,7三個字節(jié)的保留的??呻姴脸鰁2rom又包括溫度觸發(fā)器th和tl,以及一個配置寄存器。表3.2.4列出了溫度數(shù)據(jù)在高速暫存器ram的第0和第1個字節(jié)中的存儲格式。表2 溫度數(shù)據(jù)存儲格式ds18b20在出廠時默認(rèn)配置為12位,其中最高位為符號位,即溫度值共11位,單片機(jī)在讀取數(shù)據(jù)時,一次會讀2字節(jié)共16位,讀完后將低11位的二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)后再乘以0.0625便為所測的實際溫度值。另外,還需要判斷溫度的正負(fù)。前5個數(shù)字為符號位,這5位同時變化,我們只需要判斷11位就可以了。前5位為1時,讀取的溫度為負(fù)值,且測到的數(shù)值

7、需要取反加1再乘以0.0625才可得到實際溫度值。前5位為0時,讀取的溫度為正值,且溫度為正值時,只要將測得的數(shù)值乘以0.0625即可得到實際溫度值。工作時序圖 初始化時序如圖3 圖3 初始化時序1) 先將數(shù)據(jù)線置高電平1。2) 延時(該時間要求不是很嚴(yán)格,但是要盡可能短一點)。3) 數(shù)據(jù)線拉到低電平0。4) 延時750us(該時間范圍可以在480us960us)。5) 數(shù)據(jù)線拉到高電平1。6) 延時等待。如果初始化成功則在1560us內(nèi)產(chǎn)生一個有ds18b20返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。但是應(yīng)注意,不能無限地等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時判斷。7) 若cpu讀到數(shù)

8、據(jù)線上的低電平0后,還要進(jìn)行延時,其延時的時間從發(fā)出高電平算起(第5)步的時間算起)最少要480us。8) 將數(shù)據(jù)線再次拉到高電平1后結(jié)束。 ds18b20寫數(shù)據(jù)時序圖如圖4圖4 寫數(shù)據(jù)時序圖1) 數(shù)據(jù)線先置低電平0。2) 延時確定的時間為15us。3) 按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。4) 延時時間為45us。5) 將數(shù)據(jù)線拉高到高電平1。6) 重復(fù)1)5)步驟,直到發(fā)送完整個字節(jié)。7) 最后將數(shù)據(jù)線拉高到1。 ds18b20讀數(shù)據(jù)時序圖如圖5圖5 讀數(shù)據(jù)時序圖1) 將數(shù)據(jù)線拉高到1。2) 延時2us。3) 將數(shù)據(jù)線拉低到0。4) 延時6us。5) 將數(shù)據(jù)線拉高到1。6) 延

9、時4us。7) 讀數(shù)據(jù)線的狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。8) 延時30us。9) 重復(fù)1)7)步驟,直到讀取完一個字節(jié)。3.2方案設(shè)計 方案一ds18b20一對一連接方案,就是一個i/o口連接一個ds18b20,這種方案雖然占用單片機(jī)的三個i/o口,但采用這種方案大大的簡化了編程難度,縮短了設(shè)計周期,同時也能保證系統(tǒng)的穩(wěn)定,方案一的框圖如圖2.1所示。stc89c52單片機(jī)ds18b20 ds18b20鍵盤選擇ds18b20lcd1602圖 1 ds18b20多i/o口連接方案方案二 ds18b20單線連接方案,就是三個ds18b20連接到單片機(jī)的一個i/0口上,這種方案只用到單片機(jī)的一個i/o口,

10、大大的節(jié)約了單片機(jī)i/o口資源。缺點是在時序上比較復(fù)雜,ds18b20的編程增加了讀rom程序,搜索rom和匹配rom程序。方案二的框圖如圖2.2所示。stc89c52單片機(jī)ds18b20ds18b20lcd1602液晶顯示鍵盤選擇ds18b20 圖 2 ds18b20單線連接方案方案的比較與選擇方案一是把ds18b20的三個dq端分別接到單片機(jī)的三個不同的i/o口,這種接法雖然占用的i/o口比較多,但是它的時序比較簡單,不需要讀取rom序列號程序,搜索rom序列號程序,匹配rom序列號程序,軟件上簡化了很多。方案二是四ds18b20d的四個dq端接到單片機(jī)的一個i/o口。這種接法在硬件上節(jié)省

11、了三個i/o口,在硬件上簡化了不少。但是在軟件上時序就增加了難度,需要添加讀rom序列號程序,搜索rom序列號程序,匹配rom序列號程序。 本設(shè)計由于功能比較簡單i/o口資源豐富,同時時間比較緊張,所以通過兩個方案的比較,決定選用方案一。4、proteus仿真原理圖 實物圖: 5、程序流程主程序的流程圖如下所示lcd初始化開始寫入報警溫度值上限轉(zhuǎn)換、顯示讀取溫度數(shù)據(jù)顯示溫度未超上限?報警結(jié)束復(fù)位1602lcd初始化按鍵掃描6、程序代碼見附錄。7、調(diào)試總結(jié)在讀懂ds18b20芯片手冊和1602lcd芯片手冊的前提下,將程序的總體框架用keil c編寫出來后,修改到語法完全正確,編譯生成hex文件

12、。將生成的hex文件導(dǎo)入proteus仿真畫好的電路圖,發(fā)現(xiàn)1602lcd什么都不顯示。于是我把1602lcd的光標(biāo)開起來,發(fā)現(xiàn)可以看到光標(biāo)在閃爍。于是我試著寫了一段簡短的程序,僅89c52與1602lcd的送顯示,讓他顯示“0123456789”。結(jié)果還是沒顯示出來,最后才想到要送到lcd顯示的必須是字符,于是我定義了一個uchar code table=0123456789;字符表,再次嘗試,發(fā)現(xiàn)成功顯示,同時也表明了1602lcd的那段程序沒有問題。當(dāng)溫度超過上限值時,蜂鳴器不能報警,按檢測報警另設(shè)的按鈕也不能報警。查看電路圖,原來是程序設(shè)計的報警端口和硬件的沒有匹配。8、設(shè)計心得體會通

13、過這次課設(shè),對單片機(jī)的使用和編程有了更加熟悉。同時也收集了一些常見的錯誤,避免下次編程時再犯。9、參考文獻(xiàn)1單片機(jī)原理、接口及應(yīng)用嵌入式系統(tǒng)技術(shù)基礎(chǔ)(第二版)-清華大學(xué)出版社附錄 程序#include #include #define uchar unsigned char #define uint unsigned int uchar code table=wendu:;uchar code table1=high wendu:;uchar code table2=warning;uchar code table3= ;uchar currentt=0;uchar temp=0x00,0x0

14、0;/讀取的溫度值uchar alarm_temp2=25,12;/th tl 初始值uchar alarm_temp12=00,00;/th tl uchar sw,gw,temp1=15;sbit sound=p15;/蜂鳴器/*= =鍵位設(shè)定= =*/sbit s1=p11;sbit s2=p12;/*= =定義1602液晶屏數(shù)據(jù)= =*/sbit rs = p26; /模式位,為0輸入指令,為1輸入數(shù)據(jù) sbit rw = p25; /讀寫位,為0讀,為1寫 sbit en = p27; /使能位,高脈沖 /*=ds18b20時鐘信號線=*/sbit qd= p37; /信號線/*=延

15、時=*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); void delay2(uint x)while(-x);/-寫指令-/void write_com(uchar com)rs=0;rw=0;en=0;p0=com;delay(5);en=1;delay(5);en=0;/-寫數(shù)據(jù)-/void write_date(uchar date) rs=1;rw=0;en=0;p0=date;delay(5);en=1;delay(5);en=0;/-初始化1602-/void init1602() en=0;write_co

16、m(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80); /-ds18b20-/-初始化ds18b20-/uchar init_ds18b20()uchar status;qd=1;delay2(8);qd=0;delay2(90);qd=1;delay2(8);status=qd;delay2(100);qd=1;return status;/-向18b20讀一個字節(jié)-/uchar read_ds18b20()uchar i,dat=0;qd=1;_nop_();for(i=0;i=1;qd=1;_nop

17、_();_nop_();if(qd) dat|=0x80;delay2(30);qd=1;return dat;/-向18b20寫一個字節(jié)-/void write_ds18b20(uchar dat)uchar i;for(i=0;i=1;/-讀取溫度值-/void read_wendu()init_ds18b20();write_ds18b20(0xcc); / 跳過序列號write_ds18b20(0x44); / 啟動溫度轉(zhuǎn)換init_ds18b20();write_ds18b20(0xcc); / 跳過序列號write_ds18b20(0xbe); / 讀取溫度寄存器temp0=rea

18、d_ds18b20(); / 溫度第八位temp1=read_ds18b20();/ 溫度高八位alarm_temp10=read_ds18b20();/報警溫度thalarm_temp11=read_ds18b20();/報警溫度tl/-設(shè)定報警值-/void set_alarm()init_ds18b20();write_ds18b20(0xcc); write_ds18b20(0x4e); write_ds18b20(alarm_temp0); write_ds18b20(alarm_temp1); write_ds18b20(0x7f); init_ds18b20();write_ds

19、18b20(0xcc); write_ds18b20(0x48); /-顯示溫度-/void display_temp()currentt=(temp0 & 0xf0)4) |(temp1 & 0x07)4);sw=currentt%100/10;gw=currentt%10;write_com(0x80+0x05);write_date(0x30+sw);write_date(0x30+gw); if(currentt=alarm_temp0-2)sound=1;write_com(0x80+0x09);for(i=0;i7;i+)write_date(table3i);/*鍵盤設(shè)置報警溫度*/void key_scan() uchar gewei,shiwei; if(s1=0) delay(10);if(s1=0)while(!s1);temp1+;gewei=temp1%10;shiwei=temp1/10;write_com(0x80+0x4a);write_date(0x30+shiwei);/ write_

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論