單片機數(shù)字式溫度計設(shè)計說明書(附帶源程序)_第1頁
單片機數(shù)字式溫度計設(shè)計說明書(附帶源程序)_第2頁
單片機數(shù)字式溫度計設(shè)計說明書(附帶源程序)_第3頁
單片機數(shù)字式溫度計設(shè)計說明書(附帶源程序)_第4頁
單片機數(shù)字式溫度計設(shè)計說明書(附帶源程序)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學單片機原理與接口技術(shù)課程設(shè)計說明書附件1:學 號: 0121218700312課 程 設(shè) 計題 目數(shù)字式溫度計學 院物流工程學院專 業(yè)物流工程班 級姓 名指導(dǎo)教師2015年1月18日附件2:課程設(shè)計任務(wù)書學生姓名: 專業(yè)班級: 指導(dǎo)教師: 工作單位: 題 目: 數(shù)字式溫度計設(shè)計 初始條件:1、設(shè)計與仿真軟件:Keil uVision 和Proteus要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1.18B20 設(shè)計一款能夠顯示當前溫度值的溫度計;2. 切換按鈕可以切換華氏度和攝氏度顯示;3.其他功能時間安排:2015年1月4 - 5日 選擇題目,

2、布置任務(wù)2015年1月6 - 8日 功能分析,硬件設(shè)計及修改2015年1月9 -13日 軟件設(shè)計與編程2015年1月14-18日 調(diào)試并修改硬件組成2015年1月19-20日 編寫任務(wù)說明書2015年1月21-22日 確認提交版、答辯指導(dǎo)教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日附件6:本科生課程設(shè)計成績評定表姓 名 性 別 專業(yè)、班級 課程設(shè)計題目: 數(shù)字式溫度計課程設(shè)計答辯或質(zhì)疑記錄:1. Respack-8是什么?作用是什么?答:Respack-8是排阻,作上拉電阻,使得單片機P0口具備I/O能力2. 如何實現(xiàn)復(fù)位?答:接通復(fù)位回路,按下復(fù)位按鈕,保持兩個機器周期以上的

3、時間,即可實現(xiàn)復(fù)位。3. DS18B20是什么芯片?有何特點答:DS18B20是一種常用的溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。測溫范圍為-55+125,固有測溫誤差為1。成績評定依據(jù):1.硬件電路和軟件程序的正確性2.設(shè)計說明書的規(guī)范性和完整性3.答辯情況4.功能實現(xiàn)的難易程度最終評定成績(以優(yōu)、良、中、及格、不及格評定)指導(dǎo)教師簽字: 年 月 日目 錄1 設(shè)計任務(wù)22設(shè)計方案32.1 任務(wù)分析32.2 方案設(shè)計33系統(tǒng)硬件設(shè)計53.1時鐘電路設(shè)計53.2復(fù)位電路設(shè)計53.3 1602控制電路53.4 DS18B20通信電路,開關(guān)電路設(shè)計63.5系統(tǒng)原理圖 74系統(tǒng)

4、軟件設(shè)計84.1 1ms定時84.2 DS18B20初始化程序84.3對DS1802寫一個字節(jié)的數(shù)據(jù)84.4 1602的操作程序 84.5溫度測算及轉(zhuǎn)換程序105仿真與性能分析115.1系統(tǒng)仿真過程115.2系統(tǒng)性能分析116.小結(jié)與展望13參考文獻14附錄1 元件清單15附錄2 系統(tǒng)程序16數(shù)字式溫度計的設(shè)計摘要溫度是一種最基本的環(huán)境參數(shù),人民的生活、生產(chǎn)與環(huán)境的溫度息息相關(guān)。 在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此 研究溫度的測量方法和裝置也有重要的意義。本文將介紹智能集成溫度傳感器 DS18B20 的結(jié)構(gòu)特征及控制方法,并以此為傳感器 DS18B20 和

5、AT89C52 單片機為控制器構(gòu)成的溫度測量裝置的工作原理做了詳細的介紹。該產(chǎn)品適用于人民的日常生活和工、農(nóng)業(yè)生產(chǎn),用于溫度測量。關(guān)鍵詞AT89C52;DS18B20;LM016L;數(shù)字;溫度計。1設(shè)計任務(wù)1.1設(shè)計任務(wù)(1)用 DS18B20 設(shè)計一款能夠顯示當前溫度值的溫度計;(2)通過切換按鈕可以切換華氏度和攝氏度顯示;(3)其他功能(創(chuàng)新部分)設(shè)計例圖如圖1.1所示圖1.1 設(shè)計例圖1.2基本要求(1)用 DS18B20 設(shè)計一款能夠顯示當前溫度值的溫度計;(2)通過切換按鈕可以切換華氏度和攝氏度顯示;1.3拓展要求選作:實現(xiàn)測量多組的溫度,都可以顯示出來。2設(shè)計方案2.1任務(wù)分析數(shù)字

6、式溫度傳感器就是使用單片機來實現(xiàn)與 DS18B20 溫度傳感器的通信,實現(xiàn)溫度計 的功能。溫度由單片機計算出后,顯示在 1602 液晶上,并且可以通過轉(zhuǎn)換按鈕實現(xiàn)顯示 華氏溫度和攝氏溫度的轉(zhuǎn)換。2.2方案設(shè)計2.2.1硬件方案根據(jù)設(shè)計的要求可知,系統(tǒng)的硬件原理框圖如圖 2.1 所示。按 鍵1602液晶單片機DS18B20圖2.1 硬件原理框圖單片機選用AT89C51,設(shè)計時無需外接程序存儲器,為設(shè)計和調(diào)試帶來極大的方便。DS18B20 與單片機的通信是通過 1wire 總線方式。我將該通信線路與單片機 P3.2口連接,從該口對 DS18B20 進行讀寫操作。另外,將一個按鍵開關(guān)與 P3.7 口

7、連接,進行攝氏華氏溫度的換算。 2.2.2軟件方案根據(jù)設(shè)計要求,程序框圖如圖 2.2 所示。軟件可由匯編語言完成,也可由 C 語言完成,我選擇的C語言。 軟件設(shè)計可以分為以下幾個功能模塊:(1)主程序:初始化及鍵盤。(2)延時子程序:由_nop_()及 while 執(zhí)行空循環(huán)來實現(xiàn)。用于通信時序。(3)LM160LCD液晶初始化及讀寫 RAM 子程序:初始化 1602 液晶,讀寫 1602RAM。(4)18B20 初始化及讀寫 RAM 程序:初始化 18B20 以及讀寫 18B20 片內(nèi) RAM 的程序。 鍵盤掃描程序模塊:掃描鍵盤有無按鍵按下。開始初始化啟動溫度轉(zhuǎn)換讀取溫度數(shù)值攝氏或華氏計算

8、數(shù)據(jù)更新溫度顯示判斷鍵值圖2.2 程序框圖3.系統(tǒng)硬件設(shè)計3.1時鐘電路設(shè)計如圖3.1所示,采用內(nèi)部時鐘產(chǎn)生方式,在XTAL1和XTAL2兩端跨接晶體或陶瓷振蕩器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自擊震蕩。其發(fā)出的時鐘脈沖直接送入片內(nèi)定時控制部件。我采用的是12MHZ的晶振。圖3.1單片機時鐘電路3.2復(fù)位電路設(shè)計如圖3.2所示,采用上電+按鈕電平復(fù)位方式,當按下按鈕時,RST 管腳高電平觸發(fā)。 為保證復(fù)位可靠,RC 時間常數(shù)應(yīng)大于兩個機器周期,電容取30pF,電阻10k歐。3.2單片機復(fù)位電路3.3 1602 控制電路如圖3.3所示,通過上拉電阻使得單片機P0口具備I/O能力,P0與1602的數(shù)據(jù)端口

9、依次連接。RS、RW、EN分別連接單片機P1.0,P1.1,P1.2口。上拉電阻1口為+5v。圖3.3控制電路3.4 DS18B20 通信電路,開關(guān)電路設(shè)計如圖3.4所示,由DS18B20的數(shù)據(jù)通信端口與P3.2連接,開關(guān)電路與單片機P3.7口連接,按下開關(guān)即可將攝氏溫度轉(zhuǎn)化成華氏溫度并顯示在LCD上,保持閉合狀態(tài)則可以實時顯示華氏溫度。圖3.4 DS18B20通信電路,開關(guān)電路電路3.5系統(tǒng)電路圖如圖3.5所示。圖3.5 系統(tǒng)電路圖4系統(tǒng)軟件設(shè)計4.1 1ms定時在這里我們并不需要太精確的定時,故我采用的是執(zhí)行無實際意義的語句的方法定時。采用了2層while語句,內(nèi)層為執(zhí)行while空循環(huán)1

10、10次,通過keil軟件的調(diào)試可以發(fā)現(xiàn), 該空循環(huán)可延時約1ms,這樣只用確定外層while執(zhí)行的次數(shù),就能實現(xiàn)大約毫秒級的延時。4.2 1820初始化程序18b20的復(fù)位時序圖如圖4.1所示。 單片機io口必須要維持400960us的低電平,以顯示單片機現(xiàn)在接管總線,然后釋放總線至少15us(即給單片機IO口給高電平),此后,18b20會拉低總線約200us,并釋放總線, 此時代表ds18b20復(fù)位成功。按照對應(yīng)時序用軟件給單片機IO口賦值即可。圖4.1 18b20復(fù)位時序圖4.3對18B20 寫一個字節(jié)數(shù)據(jù)18b20寫操作時,先必須保證總線是高電平。寫 0 時,拉低總線至少 60us,ds

11、18b20 會在 1560us 完成讀入 0。然后釋放總線至少1us,完成一次寫 1 操作。寫 1 時,也是先拉低總線,然后必須在 15us 之內(nèi)拉高總線超過 60us,在 15us 之后 ds18b20會完成讀入 1。如此就完成了一次寫 1 抄作。 將一字節(jié)數(shù)據(jù)的低位先寫入,完成一次字節(jié)的寫入。讀出時也是先讀出的是低位數(shù)據(jù)。4.4 1602的操作程1602操作指令如下:讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0-D7=狀態(tài)字寫指令:輸入:RS=L,RW=L,D0-D7=指令碼,E=高脈沖 輸出:無讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0-D7=數(shù)據(jù)寫數(shù)據(jù): 輸入:RS=

12、H,RW=L,D0-D7=數(shù)據(jù),E=高脈沖 輸出:無這使得1602顯示字符的程序流程圖如圖4.2所示。開始忙檢測不忙信號不忙設(shè)置顯示模式等寫指令,給出字符的ram地址寫出數(shù)據(jù)庫,給出字符的ASCII碼圖4.2 1602顯示字符流程圖先寫指令 55H,判斷 1602 是否忙。寫指令 38H 設(shè)置顯示模式,寫指令 06H,0CH 設(shè)置光標及數(shù)據(jù)地址指針移動方向??偟姆椒ň褪?,在數(shù)據(jù)地址指針指向的 RAM 內(nèi)寫字符的ASCII 碼,該地址對應(yīng)的 lcd 塊就會顯示相應(yīng)的字符。數(shù)據(jù)地址映射圖如圖 4.3。圖4.3 1602數(shù)字地址映射圖4.5 溫度測算及轉(zhuǎn)換程序DS18B20 的在完成溫度測量之后會發(fā)

13、送 11 位 2 進制數(shù),以表征溫度的絕對值前 5位為溫度的符號位,見圖 4.4 所示。圖4.4 DS18B20溫度輸出軟件的思路為,先將 2 個八位數(shù)據(jù)存在一個無符號整形的變量中,再將 2 個八位數(shù)據(jù) 拼接在一起存放在一個有符號的 16 位整形變量中。然后將其后 4 位分離出來,這是小數(shù) 部分。前 12 位要判斷最高 5 位是否為 1。若為 1,代表為溫度為負值,如此低 7 位就是反碼,取反再加 1 求得溫度的絕對值;若為 0,代表溫度是正值,讀出低 7 位的值就是溫度 的絕對值。如此一來就得出了攝氏溫度值。華氏溫度攝氏溫度轉(zhuǎn)換關(guān)系式:華氏度 = 32 + 攝氏度 ×1.85仿真與

14、性能分析5.1系統(tǒng)仿真過程1.利用 protues 平臺做仿真。2.搭建如圖 5.1 所示電路,配置電源端子為設(shè)計值,運行。3.通過圖上每個 IO 口的顏色(紅色表示高電平,藍色表示低電平)判斷程序的執(zhí)行是否符合預(yù)期。4.調(diào)整 DS18B20 上面的溫度按鈕,看看溫度顯示能否跟隨 DS18B20 處溫度變化而變化。圖5.1 系統(tǒng)仿真圖5.2系統(tǒng)性能分析當系統(tǒng)上電后,LCD大約1s后顯示DS18B20所設(shè)溫度,并保持恒定不會變化,如圖5.2所示。當按下切換按鈕后,LCD上排即對此時溫度進行換算,顯示當前攝氏溫度所對應(yīng)的華氏溫度。調(diào)整DS18B20溫度后,LCD溫度隨即更改,再次按下切換按鈕,即可

15、顯示當前新溫度所對應(yīng)的華氏溫度,如圖5.3所示。如果將切換按鈕處于長期閉合狀態(tài),則可以同時顯示攝氏溫度及華氏溫度,當調(diào)節(jié)DS18B20溫度后,兩排溫度都會發(fā)生變化。圖5.2系統(tǒng)仿真結(jié)果圖5.3系統(tǒng)仿真圖6小結(jié)與展望這次單片機課程設(shè)計我受益良多,不僅學會了兩款軟件:Keil uVision 和Proteus的使用方法,也學習到了許多硬件電路設(shè)計的基本準則和軟件編制的好習慣。為了達到設(shè)計功能要求,我接觸了自己以前從沒接觸過的DS18B20溫度傳感器和LCD1602液晶芯片,雖然在有限的設(shè)計時間內(nèi)沒有把這兩個芯片的應(yīng)用原理研究透徹,但可以實現(xiàn)基本的應(yīng)用編程。設(shè)計的這幾天時間里,我閱讀了單片機電路設(shè)計

16、與仿真的相關(guān)資料,雖然是特別枯燥的,但收獲到了新知識是值得高興的,比如了解了溫度傳感器 DS18B20 的功能,如何編寫單片機AT89C51的程序來實現(xiàn)數(shù)碼管直接顯示環(huán)境溫度等等知識,與此同時還鞏固了以前學過的知識。最值得一說的收獲我覺得還是通過課程設(shè)計我能利用硬件和軟件的結(jié)合,完成一個產(chǎn)品的設(shè)計和制作!在這個課程設(shè)計完成的過程中,我感覺是對單片機課程的重溫以及相關(guān)知識的拓展,讓我知道如何有計劃、有條理地去完成一項任務(wù)。同時,讓我覺得自己所掌握的只是其實是很少量的,完全談不上專業(yè)人才。這對自己大學有限的未來的發(fā)展是一個啟發(fā)。我做的這個溫度傳感器設(shè)計并不是最佳的,還有很多功能等待去完善和開發(fā),比

17、如如何提高溫度測量的范圍,如何設(shè)置溫度警告等等。參考文獻:1李全利.單片機原理及接口技術(shù)M.2版.北京:高等教育出版社,2009.2楊居義.單片機課程設(shè)計指導(dǎo)M.北京:清華大學出版社,2009.3閻石.數(shù)字電子技術(shù)基礎(chǔ)M.3版.北京:電子工業(yè)出版社,2009.4馬忠梅,劉濱.單片機 C 語言 Windows 環(huán)境編程寶典M.北京:北京航空航天大學出版社,2003.5歐陽文.ATMEL89系列單片機的原理與開發(fā)實踐M.北京:中國電力大學出版社,2006.6楊欣,王玉鳳,劉湘黔,張延強.51單片機應(yīng)用從零開始M.北京:清華大學出版社,2008.附錄1 元件清單如表1所示。表1 數(shù)字式溫度計設(shè)計元件

18、清單元件名規(guī)格標號數(shù)目單片機AT89C511電阻10kR2,R3,R43電容20pFC1,C22電容47uFC31電位計RP11傳感器DS18B201顯示屏LM016LLCD1按鈕2附錄2 系統(tǒng)程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P32;sbit RS=P10;sbit RW=P11;sbit EN=P12;sbit sw0=P37;sbit led=P20;unsigned char code str1= "H: "unsigned cha

19、r code str2= "temp: "uchar data disdata5;uchar data disdata15;uchar data disdata25;uint tvalue, tvalueh;uchar tflag;void delay1ms(unsigned int ms) unsigned int i,j; for(i=0;i<ms;i+) for(j=0;j<100;j+);void wr_com(unsigned char com) delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); E

20、N=1; delay1ms(1); EN=0;void wr_dat(unsigned char dat) delay1ms(1); RS=1; RW=0; EN=0; P0=dat; delay1ms(1); EN=1; delay1ms(1); EN=0;void lcd_init()delay1ms(15); wr_com(0x38); delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5);void displa

21、y(unsigned char *p) while(*p!='0') wr_dat(*p); p+; delay1ms(1); void init_play() lcd_init(); wr_com(0x80); display(str1); wr_com(0xc0); display(str2); void delay_18B20(unsigned int i) while(i-); void ds1820rst() unsigned char x=0; DQ = 1; delay_18B20(4); DQ = 0; delay_18B20(100); DQ = 1; del

22、ay_18B20(40); uchar ds1820rd() unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i-) DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr(uchar wdata) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata&g

23、t;>=1; read_temp() uchar a,b; ds1820rst(); ds1820wr(0xcc); ds1820wr(0x44); ds1820rst(); ds1820wr(0xcc); ds1820wr(0xbe); a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(6.25); return(tvalue); /*/vo

24、id writebsg(uchar add,uchar date) uchar bai,shi,ge; bai=date/100; shi=date%100/10; ge=date%10; wr_com(0x80+add);wr_dat(0x30+bai);wr_dat(0x30+shi);wr_dat(0x30+ge); void ds1820disp() uchar flagdat; disdata0=tvalue/10000+0x30; disdata1=tvalue%10000/1000+0x30; disdata2=tvalue%1000/100+0x30; disdata3=tvalue%100/10+0x30; disdata4=tvalue%10+0x30; if(tflag=0) flagdat=0x20; else flagdat=0x2d; if(disdata0=0x30) disdata0=0x20; if(disdata1=0x30) disdata1=0x20; wr_com(0x80+0x40+8); wr_dat(flagdat); wr_com(0x80+0x40+9); wr_dat(disdata0); wr_com(0x80+0x40+10); wr_dat(disdata1); wr_com(0x80+0x40+1

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論