版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 成績 信息工程學(xué)院課程設(shè)計說明書(論文)題 目: 溫度測量 課 程 名 稱: 單片機(jī)課程設(shè)計 專 業(yè): 電子信息工程 班 級: 電信0901 學(xué) 生 姓 名: 學(xué) 號: 31 16 10 設(shè) 計 地 點(diǎn): 3#北603 指 導(dǎo) 教 師: 設(shè)計起止時間:2012年5月2日至2012年5月22日目 錄一、設(shè)計功能要求:3二、 系統(tǒng)總體設(shè)計方案:51、基本設(shè)計思想:52、實施方案論述:6三、 系統(tǒng)分析與設(shè)計:61、程序流程圖及說明62、溫度計的的電路設(shè)計9四、 源碼清單:12五、 改進(jìn)意見與收獲體會:18六、 主要參考資料:19一、設(shè)計功能要求: 本次的設(shè)計主要是利用了數(shù)字溫度傳感器ds18b20
2、測量溫度信號,計算后可以在lcd數(shù)碼管上顯示相應(yīng)的溫度值。其溫度測量范圍為-55125,精確到0.5。 本溫度計屬于多功能溫度計,可以設(shè)置上下報警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時,可以報警。數(shù)字溫度計所測量的溫度采用數(shù)字顯示,控制器使用單片機(jī)89c51,測溫傳感器使用ds18b20,用lcd1602實現(xiàn)溫度顯示。從溫度傳感器ds18b20可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換即滿足設(shè)計要求。本次使用的單片機(jī)89c51和mcs-51是完全兼容的,是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的
3、低電壓、高性能cmos8位微處理器。其主要特點(diǎn)如下: 8位cpu。 工作頻率最高為24m。 128b數(shù)據(jù)存儲器。 4kb程序存儲器。 程序存儲器的尋址空間為64kb。 片外數(shù)據(jù)存儲器的尋址空間為64kb。 128個用戶位尋址空間。 21個字節(jié)特殊功能寄存器。 4個8位的并行i/o接口:p0、p1、p2、p3。 兩個16位定時/計數(shù)器。 兩個優(yōu)先級別的5個中斷源。 1個全雙工的串行i/o接口,可多機(jī)通信。 111條指令,喊乘法指令和除法指令。 較強(qiáng)的位處理能力 。 采用單一+5v電源。 對于89c52而言,不同之處在于:有256b的數(shù)據(jù)存儲器、8k的程序存儲器、全雙工串行i/o接口、6個中斷源、
4、3個16位定時/計數(shù)器,工作頻率可升直33mhz。比51擁有更高的性能。 單片機(jī)要對ds18b20進(jìn)行讀寫,主要通過如下子程序進(jìn)行驅(qū)動。(1)復(fù)位:在使用ds18b20時,首先需要對單片機(jī)進(jìn)行復(fù)位。復(fù)位時,單片機(jī)給ds18b20的單總線至少480us的低電平信號。當(dāng)ds18b20檢測到此復(fù)位信號后會在15-60us內(nèi)給出一個一個存在脈沖。該存在脈沖是是一個60-240us的低電平信號。為了能夠接收到此低電平,需要單片機(jī)在復(fù)位電平結(jié)束之后將總線拉高。(2)rom指令:包括讀rom指令,指定匹配芯片、跳躍rom、芯片搜索、報警芯片搜索。rom指令為8位長度,功能是對片內(nèi)的64位光刻rom進(jìn)行操作。
5、其主要目的是為了分辨總線上的多個器件。不過,在本系統(tǒng)中由于只有一個ds18b20,所以不需要進(jìn)行id辨識,所以可以采用一條特殊的跳過指令。具體指令可以參看其datasheet。(3)發(fā)送存儲器操作指令:在rom指令發(fā)送給ds18b20后,緊接著需要向它發(fā)送存儲器操作指令,操作指令同樣為8位,共六條,分別是寫ram數(shù)據(jù)、讀ram數(shù)據(jù)、將ram數(shù)據(jù)復(fù)制到eeprom、溫度轉(zhuǎn)換、將eeprom中的報警值復(fù)制到ram、工作方式切換。(4)執(zhí)行和讀寫操作:一個存儲器操作指令結(jié)束后則將進(jìn)行指令執(zhí)行或數(shù)據(jù)讀寫。如果是進(jìn)行溫度轉(zhuǎn)換,需要等待ds18b20執(zhí)行其指令,轉(zhuǎn)換時間一般為500us。ds18b20溫度
6、值格式默認(rèn)的12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18b20的兩個8比特的ram中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。 如圖:ds18b20常用rom指令:約定代碼功 能讀rom33h讀ds1820溫度傳感器rom中的編碼(即64位地址 符合 rom 55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問單總線上與該編碼相對應(yīng)的 ds1820 使之作出響應(yīng),為下一步對該 ds1820 的讀寫作準(zhǔn)備。 搜索 rom 0foh用于確
7、定掛接在同一總線上 ds1820 的個數(shù)和識別 64 位 rom 地址。為操作各器件作好準(zhǔn)備。 跳過 rom 0cch忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令。適用于單片工作。 告警搜索命令 0ech執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。 二、系統(tǒng)總體設(shè)計方案1、基本設(shè)計思想 基本設(shè)計方案:根據(jù)ds18b20的通訊協(xié)議,單片機(jī)控制ds18b20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對ds18b20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對ds18b20進(jìn)行預(yù)定的操作。復(fù)位要求主cpu將數(shù)據(jù)線下拉500微秒,然后釋
8、放,當(dāng)ds18b20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號表示復(fù)位成功。 于是,給ds18b20不同的時序,可以讀取溫度傳感器的值,根據(jù)溫度算法算出當(dāng)時的溫度值,在給顯示部分,通過lcd顯示出來。2、實施方案論述這個課題主要實現(xiàn)溫度的檢測以及通過數(shù)碼管顯示這兩個大功能,以及讀取這個相對較為容易的功能。因此在溫度檢測這一模塊上,利用ds18b20這一目前比較先進(jìn)的溫度傳感器,可以很精確地感測實時溫度,對于ds18b20的通訊協(xié)議的控制,讀取測量的溫度值,經(jīng)過一定的算法,可以把溫度轉(zhuǎn)化為十進(jìn)制,分別為高位和低位,先暫存起來。經(jīng)顯示模塊調(diào)用,最終在lcd
9、上顯示。時鐘電路c51主控電路ds18b20復(fù)位電路 顯示電路 電路方框圖2、 系統(tǒng)分析與設(shè)計1、程序流程圖及說明主函數(shù)完成對ds18b20的初始化,讀取溫度的轉(zhuǎn)換值,調(diào)用數(shù)據(jù)處理的子程序然后再生成顯示代碼,再將溫度顯示出來,然后根據(jù)溫度顯示的代碼判斷溫度值可以判斷它的值是否超出了預(yù)設(shè)的范圍。然后返回到主函數(shù)開始的位置,無論溫度值是否超出預(yù)設(shè)值,程序都會返回開始的位置,重復(fù)循環(huán)。開始始初始化、設(shè)置常量調(diào)用ds18b20初始化子程序讀溫度轉(zhuǎn)換值調(diào)用數(shù)據(jù)處理子程序生成顯示碼顯示溫度值主函數(shù)流程圖dq置1ds18b20復(fù)位flag=?1發(fā)送occh 命令,跳過rom匹配發(fā)送溫度轉(zhuǎn)換命令44h延時75
10、0us以上ds18b20初始化跳過rom匹配發(fā)送溫度命令obeh調(diào)用讀數(shù)據(jù)子程序返回ds18b20復(fù)位子程序dq置1dq置0延時至少573msdq置1短延時等待ds18b20回應(yīng)dq=?0flag置1flag置0延時dq置1 溫度值子程序2、溫度計的的電路設(shè)計溫度計采用at89c51單片機(jī)作為微處理器,溫度計系統(tǒng)的外圍接口電路由晶振、lcd顯示電路、復(fù)位電路、溫度檢測電路、lcd驅(qū)動電路。溫度計系統(tǒng)的的硬件電路圖如下圖所示。溫度計的工作過程是:初始化其接收需要檢測的溫度,并一直處于檢測狀態(tài),并將檢測到的溫度值讀取,并轉(zhuǎn)化為十進(jìn)制數(shù)值,通過lcd顯示出來,再顯示溫度,方便用戶來讀數(shù)使用記錄數(shù)據(jù)。
11、具體實現(xiàn)方法是:單片機(jī)將從p2.2管腳讀進(jìn)來的數(shù)據(jù)進(jìn)行處理,p0.1到p0.7為數(shù)碼管的段選端口,通過rp1的驅(qū)動對lcd進(jìn)行驅(qū)動。硬件電路原理圖時鐘電路復(fù)位電路顯示電路溫度檢測電路3、 源碼清單#include #include #define uint unsigned int#define uchar unsigned char#define delaynop() _nop_();_nop_();_nop_();_nop_();sbit dq = p33;sbit lcd_rs = p20;sbit lcd_rw = p21;sbit lcd_en = p22;uchar code te
12、mp_disp_title=current temp : ;uchar current_temp_display_buffer= temp: ;uchar code temperature_char8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;uchar code df_table= 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar currentt = 0;uchar temp_value=0x00,0x00;uchar display_digit=0,0,0,0;bit ds18b20_is_ok = 1;void del
13、ayxus(uint x) uchar i;while(x-) for(i=0;i200;i+);bit lcd_busy_check() bit result;lcd_rs = 0;lcd_rw = 1;lcd_en = 1;delaynop();result = (bit)(p0&0x80);lcd_en=0;return result;void write_lcd_command(uchar cmd)while(lcd_busy_check();lcd_rs = 0;lcd_rw = 0;lcd_en = 0;_nop_();_nop_();p0 = cmd;delaynop();lcd
14、_en = 1;delaynop();lcd_en = 0;void write_lcd_data(uchar dat)while(lcd_busy_check();lcd_rs = 1;lcd_rw = 0;lcd_en = 0;p0 = dat;delaynop();lcd_en = 1;delaynop();lcd_en = 0;void lcd_initialise() write_lcd_command(0x01);delayxus(5);write_lcd_command(0x38);delayxus(5);write_lcd_command(0x0c);delayxus(5);w
15、rite_lcd_command(0x06);delayxus(5);void set_lcd_pos(uchar pos) write_lcd_command(pos|0x80);void delay(uint x) while(-x);uchar init_ds18b20() uchar status;dq = 1;delay(8);dq = 0;delay(90);dq = 1;delay(8);dq = 1;return status;uchar readonebyte() uchar i,dat=0;dq = 1;_nop_();for(i=0;i= 1;dq = 1;_nop_()
16、;_nop_();if(dq)dat |= 0x80;delay(30);dq = 1;return dat;void writeonebyte(uchar dat) uchar i;for(i=0;i= 1;void read_temperature() if(init_ds18b20()=1)ds18b20_is_ok=0;elsewriteonebyte(0xcc);writeonebyte(0x44);init_ds18b20();writeonebyte(0xcc);writeonebyte(0xbe);temp_value0 = readonebyte(); temp_value1
17、 = readonebyte();ds18b20_is_ok=1;void display_temperature() uchar i;uchar t = 150, ng = 0;if(temp_value1&0xf8)=0xf8) temp_value1 = temp_value1;temp_value0 = temp_value0+1;if(temp_value0=0x00)temp_value1+;ng = 1;display_digit0 = df_tabletemp_value0&0x0f;currentt = (temp_value0&0xf0)4) | (temp_value1&
18、0x07)4);display_digit3 = currentt/100;display_digit2 = currentt%100/10;display_digit1 = currentt%10;current_temp_display_buffer11 = display_digit0 + 0;current_temp_display_buffer10 = .;current_temp_display_buffer9 = display_digit1 + 0;current_temp_display_buffer8 = display_digit2 + 0;current_temp_display_buffer7 = display_digit3 + 0;if(display_digit3 = 0)current_temp_display_buffer7 = ;if(display_digit2 = 0&display_digit3=0)current_temp_display_buffer8 = ;if(ng) if(current_temp_display_buffer8 = )current_temp_display_buffer8 = -;else if(current_temp_display_buffer7 = )current_temp_display_b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)業(yè)科研草種試驗與推廣合同3篇
- 二零二五版辦公場地租賃與餐飲服務(wù)合同范本3篇
- 二零二五版鍋爐設(shè)備買賣合同附環(huán)保設(shè)備安裝及調(diào)試3篇
- 二零二五版科技成果轉(zhuǎn)化居間合同模板與科技成果評價3篇
- 2025年度龍門吊拆除工程安全技術(shù)交底及操作規(guī)程合同3篇
- 二零二五版精裝修辦公場所帶物業(yè)維護(hù)租賃合同2篇
- 二零二五年度水利項目借款合同終止與防洪抗旱協(xié)議3篇
- 2025年水箱環(huán)保技術(shù)合作與購銷合同范本3篇
- 2025年旅游度假地產(chǎn)委托居間房產(chǎn)租賃合同范本3篇
- 年度基礎(chǔ)地質(zhì)勘查服務(wù)競爭策略分析報告
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 2024年安徽省公務(wù)員錄用考試《行測》真題及解析
- 你比我猜題庫課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險評估報告
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 2024年山東省青島市中考語文試卷(附答案)
- 職業(yè)技術(shù)學(xué)?!犊缇畴娮由虅?wù)物流與倉儲》課程標(biāo)準(zhǔn)
評論
0/150
提交評論