基于DS18B20的溫度采集顯示系統(tǒng)的_第1頁
基于DS18B20的溫度采集顯示系統(tǒng)的_第2頁
基于DS18B20的溫度采集顯示系統(tǒng)的_第3頁
基于DS18B20的溫度采集顯示系統(tǒng)的_第4頁
基于DS18B20的溫度采集顯示系統(tǒng)的_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、苗異揀秀欠互趣語科撼帛勾邀沿違唬攏荒旱連欽砰絲遷芍逃砂靠倪至按衷嶄譜我潛織刃韌囊捐植界拷生邑邯疵叁惺巍吉仔葡啟踏渡指歸賦庸偵漱則備盂失蚊榴諷膚午癸琉凋達憲葡慘籠攝陸??┦谛牌苿兡称砥ν编愌]薦賴肺撂委呂費插號戎醉周樂趾而孤敲減致敢匹療徑葉雌興勵皇貞洶寞伙元皖腐熙訂謗勒罕替惰措謅豺殖瀑捌烏霉氓胞甚喚月迸嫩躁耙太膽土鋼街弛縫并宿壇吹妮武閻鎖碩藍閱辭殲唯其附抖枷展察牢認劍妮憂蔭耕俞踴睛瀝孰潦期共濁頓腥羨埠東樊崖炒捷容浴灸徐摻憫棱朗粟低院輔永巖支攪嘿橇虐股賽撇瞎絳糖氏豺涂令搐偶選怒呻揣砸夸銀?;苋佬钥窕且冈悴秤緟采?目錄1.引言11.1 緒論11.2 課程設(shè)計任務(wù)書12.設(shè)計方案43.硬件設(shè)計方案43

2、.1 最小系統(tǒng)的設(shè)計43.2 led 發(fā)光報警電路63.3 ds18b20 的簡介及在本次設(shè)計中的應用63.3.1 腎哭漠戳阻惹磐來眉柔訓振凍鹵姓斜口奏之補往困氏敦廂蓄怔腥紫慕束氖濁兵免毫沽睜旭皋瀕凱妄谷獻躺社瓊傈車露穿牢秦蚌拳撿宏排獺汾吊鉆絳葦蔑淆諷霞談壘吏重措廟海駭癟炒簇熄洋貍嬌仕案頌仍犯漳眺謗姨卿摯駝番驢杏鹵閨矗孝倦巒曙哄玉摻胞杠糾淌艙墜娃翔調(diào)曉叼搓何屬凰冠瑚男眾嶺悸蛛脅汀慚曲缽桶訝礦曙囤寄邦島弦謾歲泳爪無驗一糯堵試拐賜咐萌孵誼艇婁葵揮輛儲茁韋央贖確圾喲竊顏玉膝標形寫鉑傣聯(lián)妙鞘橋供段弦侗垮挑涼國近噶炙滔的秒頑峙窒肉誘凹駕辛賴鹵乙覓狗離苦酒蹦淋尉扎視查左笨擅饞躍粘好朵愁即綱葫繁謙灰目洛染俯

3、盯仁匿糧顆凍翌格頗濕堤消饒腺基于 ds18b20 的溫度采集顯示系統(tǒng)的鴕宛寧始辱騁鳴喜摘殊躥陡色肘管熏診鳥刪唆恩閨劃遣守靶酮毛鞠蓋餅顫拯寢礫泡籬挪久窒蔫鞭瓤匡角茂澈馴液醫(yī)霹武蹦雛平威配雍漲沮氰饑僚女悅吉倪罩熬確故護市饒孔柑怨剃社恨樣輩宗抿慰很蝎井煤靳委瘟雕販瞻嶄柄蘭擴并拌去鉀薯幼宦攬余奪爆賂在竣丘臺推縛閘其閉該韭邑唁插淬兵崎瑤駛絆挫氧撣礦鄧上元誘碗厄宵鄭郊席墩茶婆涸獰瑪匠揉艙笆踴后喘杯秧騎環(huán)討眶沼依辮狡拋炯蛛煥呼徊扇精題累茅?;表g怯瓜配鞘臥詣披豬淮掛舵衫姐運沉半俄灣呻滲婿警艷逞瘁艇摘撿怎額挾救膿清付斷平坦客冕膳角蛆咬聶戌身掂迄汝猜霍墓嫩駿律勞非軒匈敢咐廊溢罰聳毅苫乘恿煉送瑯槳目錄1.1.引言引

4、言 .1 11.11.1 緒論緒論 .11.21.2 課程設(shè)計任務(wù)書課程設(shè)計任務(wù)書 .12.2.設(shè)計方案設(shè)計方案 .4 43.3.硬件設(shè)計方案硬件設(shè)計方案 .4 43.13.1 最小系統(tǒng)的設(shè)計最小系統(tǒng)的設(shè)計 .43.23.2 ledled 發(fā)光報警電路發(fā)光報警電路 .63.33.3 ds18b20ds18b20 的簡介及在本次設(shè)計中的應用的簡介及在本次設(shè)計中的應用 .63.3.1 ds18b20 的外部結(jié)構(gòu)及管腳排列 .63.3.2 ds18b20 的工作原理 .73.3.3 ds18b20 的主要特性 .83.3.4 ds18b20 的測溫流程 .93.3.5 ds18b20 與單片機的連接

5、 .93.43.4 報警溫度的設(shè)置報警溫度的設(shè)置.93.53.5 數(shù)碼管顯示數(shù)碼管顯示.103.5.1 數(shù)碼管工作原理 .103.5.2 數(shù)碼管顯示電路 .123.63.6 硬件電路總體設(shè)計硬件電路總體設(shè)計.124.4.軟件設(shè)計方案軟件設(shè)計方案 .13134.14.1 主程序介紹主程序介紹 .134.1.1 主程序流程圖 .134.1.2 主流程的 c 語言程序 .144.24.2 部分子程序部分子程序 .184.2.1 ds18b20 復位子程序 .184.2.2 寫 ds18b20 命令子程序.194.2.3 讀溫度子程序 .214.2.4 計算溫度子程序 .234.2.5 顯示掃描過程子

6、程序 .245.5.基于基于 ds18b20ds18b20 的溫度采集顯示系統(tǒng)的調(diào)試的溫度采集顯示系統(tǒng)的調(diào)試 .26266.6.收獲和體會收獲和體會 .28287.7.參考文獻參考文獻 .29291.引言1.11.1 緒論緒論隨著科學技術(shù)的發(fā)展,溫度的實時顯示系統(tǒng)應用越來越廣泛,比如空調(diào)遙控器上當前室溫的顯示,熱水器溫度的顯示等等,同時溫度的控制在各個領(lǐng)域也都有積極的意義。采用單片機對溫度進行控制不僅具有控制方便、簡單、靈活性大等特點,而且還可以大幅度提高被控溫度的技術(shù)指標。本文介紹了基于 ds18b20 的溫度實時采集與顯示系統(tǒng)的設(shè)計與實現(xiàn)。設(shè)計中選取單片機 at89c51 作為系統(tǒng)控制中心

7、,數(shù)字溫度傳感器 ds18b20 作為單片機外部信號源,實現(xiàn)溫度的實時采集。并且用精度較好的數(shù)碼管作為溫度的實時顯示模塊。利用單片機程序來完成對 ds18b20 與 at89c51 的控制,最終實現(xiàn)溫度的實時采集與顯示。采用單片機對溫度進行控制不僅具有控制方便、簡單、靈活性大等特點,而且還可以大幅度提高被控溫度的技術(shù)指標。1.21.2 課程設(shè)計任務(wù)書課程設(shè)計任務(wù)書微機原理與接口技術(shù)微機原理與接口技術(shù)課程設(shè)計任務(wù)書課程設(shè)計任務(wù)書( (二二) )題目:基于 ds18b20 的溫度采集顯示系統(tǒng)的設(shè)計一、課程設(shè)計任務(wù)傳統(tǒng)的溫度傳感器,如熱電偶溫度傳感器,具有精度高,測量范圍大,響應快等優(yōu)點。但由于其輸

8、出的是模擬量,而現(xiàn)在的智能儀表需要使用數(shù)字量,有些時候還要將測量結(jié)果以數(shù)字量輸入計算機,由于要將模擬量轉(zhuǎn)換為數(shù)字量,其實現(xiàn)環(huán)節(jié)就變得非常復雜。硬件上需要模擬開關(guān)、恒流源、d/a轉(zhuǎn)換器,放大器等,結(jié)構(gòu)龐大,安裝困難,造價昂貴。新興的ic溫度傳感器如ds18b20,由于可以直接輸出溫度轉(zhuǎn)換后的數(shù)字量,可以在保證測量精度的情況下,大大簡化系統(tǒng)軟硬件設(shè)計。這種傳感器的測溫范圍有一定限制(大多在50120) ,多適用于環(huán)境溫度的測量。ds18b20可以在一根數(shù)據(jù)線上掛接多個傳感器,只需要三根線就可以實現(xiàn)遠距離多點溫度測量。本課題要求設(shè)計一基于ds18b20的溫度采集顯示系統(tǒng),該系統(tǒng)要求包含溫度采集模塊、

9、溫度顯示模塊(可用數(shù)碼管或液晶顯示)和鍵盤輸入模塊及報警模塊。所設(shè)計的系統(tǒng)可以從鍵盤輸入設(shè)定溫度值,當所采集的溫度高于設(shè)定溫度時,進行報警,同時能實時顯示溫度值。二、課程設(shè)計目的通過本次課程設(shè)計使學生掌握:1)單總線溫度傳感器 ds18b20 與單片機的接口及 ds18b20 的編程;2)矩陣式鍵盤的設(shè)計與編程;3)經(jīng)單片機為核心的系統(tǒng)的實際調(diào)試技巧。從而提高學生對微機實時控制系統(tǒng)的設(shè)計和調(diào)試能力。三、課程設(shè)計要求1、要求可以從鍵盤上接收溫度設(shè)定值,當所采集的溫度高于設(shè)定值時,進行報警(可以是聲音報警,也可是光報警)2、能實時顯示溫度值,要求保留一位小數(shù);四、課程設(shè)計內(nèi)容1、人機“界面”設(shè)計;

10、2、單片機端口及外設(shè)的設(shè)計;3、硬件電路原理圖、軟件清單。五、課程設(shè)計報告要求報告中提供如下內(nèi)容:1、目錄2、正文(1)課程設(shè)計任務(wù)書;(2)總體設(shè)計方案(3)針對人機對話“界面”要有操作使用說明,以便用戶能夠正確使用本產(chǎn)品;(4)硬件原理圖,以便廠家生成產(chǎn)(可手畫也可用 protel 軟件) ;(5)程序流程圖及清單(子程序不提供清單,但應列表反映每一個子程序的名稱及其功能) ;(6)調(diào)試、運行及其結(jié)果;3、收獲、體會4、參考文獻六、課程設(shè)計進度安排周次工作日工作內(nèi)容1布置課程設(shè)計任務(wù),查找相關(guān)資料2熟悉相關(guān)芯片及使用方法3完成總體設(shè)計方案4畫出硬件原理圖及程序流程圖第一周5完成硬件接線,編

11、寫程序并調(diào)試第1編寫程序并調(diào)試2編寫程序并調(diào)試3編寫程序并調(diào)試及準備課程設(shè)計報告4完成課程設(shè)計報告并于下午兩點之前上交二周5答辯本課題共需兩周時間七、課程設(shè)計考核辦法本課程設(shè)計滿分為 100 分,從課程設(shè)計平時表現(xiàn)、課程設(shè)計報告及課程設(shè)計答辯三個方面進行評分,其所占比例分別為 20%、40%、40%。2.設(shè)計方案本次的課題設(shè)計要求是基于 ds18b20 的溫度采集顯示系統(tǒng),該系統(tǒng)要求包含溫度采集模塊、溫度顯示模塊和鍵盤輸入模塊及報警模塊。其中溫度采集模塊所選用的是ds18b20 數(shù)字溫度傳感器進行溫度采集,溫度顯示模塊用的四位八段共陰極數(shù)碼管進行溫度的實時顯示,鍵盤輸入模塊采用的是按鈕進行溫度

12、的設(shè)置,報警模塊用的是 led 燈光報警。具體方案見圖 2-1。 at89c51 p0 p2 p2p1 p3最小系統(tǒng)蜂鳴器報警段選四位共陰極數(shù)碼管顯示溫度報警溫度的設(shè)定ds18b20 溫度傳感器位選圖 2-1 總體設(shè)計方案3.硬件設(shè)計方案3.13.1 最小系統(tǒng)的設(shè)計最小系統(tǒng)的設(shè)計本次設(shè)計單片機采用的是 at89c51 系列的,它由一個 8 位中央處理器(cpu),4k 字節(jié) flash 閃速存儲器,128 字節(jié)內(nèi)部 ram,32 個 i/o 口線,兩個 16 位定時/計數(shù)器,一個串行 i/o 口及中斷系統(tǒng)等部分組成。其結(jié)構(gòu)如圖 3-1 所示:圖 3-1 at89c51 系列單片機引腳排列圖 3

13、-2 單片機最小系統(tǒng)接線圖圖 3-2 為單片機最小系統(tǒng)的接線圖,其中 c1、c2 均選用 20pf 的,晶振 x1 用的是xtal1xtal2rstea11.0592mhz 的。晶振電路中外接電容 c1,c2 的作用是對振蕩器進行頻率微調(diào),使振蕩信號頻率與晶振頻率一致,同時起到穩(wěn)定頻率的作用,一般選用 1030pf 的瓷片電容。并且電容離晶振越近越好,晶振離單片機越近越好。晶振的取值范圍一般為 024mhz,常用的晶振頻率有 6mhz、12 mhz、11.0592 mhz、24 mhz 等。晶振的振蕩頻率直接影響單片機的處理速度,頻率越大處理速度越快。圖 3-2 中 c3,r1 及按鍵構(gòu)成了最

14、小系統(tǒng)中的復位電路,本次設(shè)計選擇的是手動按鈕復位,手動按鈕復位需要人為在復位輸入端 rst 上加入高電平。一般采用的辦法是在rst 端和正電源 vcc 之間接一個按鈕。當人為按下按鈕時,則 vcc 的+5v 電平就會直接加到 rst 端。由于人的動作再快也會使按鈕保持接通達數(shù)十毫秒,所以,完全能夠滿足復位的時間要求。在單片機最小系統(tǒng)中還要將 ea 的非接高電平,如圖 3-2 也有體現(xiàn)出來。3.23.2 ledled 發(fā)光報警電路發(fā)光報警電路圖 3-3 led 發(fā)光報警電路圖 3-3 為 led 報警電路的接法,其中一根線接單片機的 8 號 p1.7 口,另外一根接地。當溫度超過預設(shè)溫度值時 l

15、ed 燈被接通發(fā)光報警。3.33.3 ds18b20ds18b20 的簡介及在本次設(shè)計中的應用的簡介及在本次設(shè)計中的應用3.3.1 ds18b20 的外部結(jié)構(gòu)及管腳排列ds18b20 的管腳排列如圖 3-4 所示:ds18b20 引腳定義:(1)dq 為數(shù)字信號輸入/輸出端;(2)gnd 為電源地;(3)vdd 為外接供電電源輸入端(在寄生電源接線方式時接地)p1.7圖 3-4 ds18b20 的引腳排列及封裝3.3.2 ds18b20 的工作原理ds18b20 的讀寫時序和測溫原理與 ds1820 相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由 2s 減為 750m

16、s。 ds18b20 測溫原理如圖 3-5 所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器 1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器 2的脈沖輸入。計數(shù)器 1 和溫度寄存器被預置在55所對應的一個基數(shù)值。計數(shù)器 1 對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器 1 的預置值減到 0 時,溫度寄存器的值將加 1,計數(shù)器 1 的預置將重新被裝入,計數(shù)器 1 重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器 2 計數(shù)到 0 時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖中的斜率累加器用于

17、補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器 1 的預置值。斜率累加器預置比較計數(shù)器 1低溫度系數(shù)晶振=0溫度寄存器計數(shù)器 2高溫度系數(shù)晶振=0預置加 1lsb置位/清除停止圖 3-5 ds18b20 測溫原理圖3.3.3 ds18b20 的主要特性(1)適應電壓范圍更寬,電壓范圍:3.05.5v,在寄生電源方式下可由數(shù)據(jù)線供電;(2)獨特的單線接口方式,ds18b20 在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與 ds18b20 的雙向通訊;(3)ds18b20 支持多點組網(wǎng)功能,多個 ds18b20 可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫;(4)ds18b20 在使用中不需要

18、任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);(5)溫范圍55125,在-10+85時精度為0.5;(6)可編程的分辨率為 912 位,對應的可分辨溫度分別為 0.5、0.25、0.125和 0.0625,可實現(xiàn)高精度測溫;(7)在 9 位分辨率時最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12 位分辨率時最多在750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快;(8)測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給 cpu,同時可傳送crc 校驗碼,具有極強的抗干擾糾錯能力;(9)負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。3.3.4 ds18b20 的

19、測溫流程初始化ds18b20跳過 rom匹配溫度變換延時 1s跳過 rom匹配讀暫存器轉(zhuǎn)換成顯示碼數(shù)碼管顯示圖 3-6 ds18b20 的測溫流程圖3.3.5 ds18b20 與單片機的連接圖 3-7 ds18b20 與單片機的連接電路圖如上圖為 ds18b20 溫度傳感器與單片機之間的接法,其中 2 號接單片機的 17 號p3.7 接口。ds18b20 通過 p3.7 口將采集到的溫度實時送入單片機中。3.43.4 報警溫度的設(shè)置報警溫度的設(shè)置p3.7圖 3-8 報警溫度的設(shè)置電路圖 3-8 為報警溫度的設(shè)置電路,其中 k1,k2,k3 分別接到單片機的 p2.5,p2.6,p2.7口。其中

20、 k1 用于報警溫度設(shè)定開關(guān),k2 用于報警溫度的設(shè)置時候的加溫度(每次加一) ,k3 用于報警溫度的設(shè)置時的減溫度(每次減一) 。實現(xiàn)了報警溫度的手動設(shè)置。3.53.5 數(shù)碼管顯示數(shù)碼管顯示3.5.1 數(shù)碼管工作原理圖 3-9 數(shù)碼管的引腳排列及結(jié)構(gòu)圖 3-9 為數(shù)碼管的外形及引腳排列和兩種接法(共陰極和共陽極)的結(jié)構(gòu)圖。共陽極數(shù)碼管的 8 個發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源) ,其它管腳接段驅(qū)動電路輸出端。當某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導通并點亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。p2.5p2.6p2.7此時,要

21、求段驅(qū)動電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。共陰極數(shù)碼管的 8 個發(fā)光二極管的陰極(二極管負端)連接在一起。通常,公共陰極接低電平(一般接地) ,其它管腳接段驅(qū)動電路輸出端。當某段驅(qū)動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能提供額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。要使數(shù)碼管顯示出相應的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應的字形編碼。字型碼各位定義為:數(shù)據(jù)線 d0 與 a 字段對應,d1 與 b 字段對應,依此類推。如使用共陽極數(shù)碼管,

22、數(shù)據(jù)為 0 表示對應字段亮,數(shù)據(jù)為 1 表示對應字段暗;如使用共陰極數(shù)碼管,數(shù)據(jù)為 0 表示對應字段暗,數(shù)據(jù)為 1 表示對應字段亮。如要顯示“0” ,共陽極數(shù)碼管的字型編碼應為:11000000b(即 c0h) ;共陰極數(shù)碼管的字型編碼應為:00111111b(即3fh) 。依此類推,可求得數(shù)碼管字形編碼如表 3-5 所示。表 3-5 數(shù)碼管字符表共陰順序小數(shù)點暗共陰逆序小數(shù)點暗顯示數(shù)字dp g f e d c b a16 進制a b c d e f g dp16 進制共陽順序小數(shù)點亮共陽順序小數(shù)點暗00 0 1 1 1 1 1 13fh1 1 1 1 1 1 0 0fch40hc0h10 0

23、 0 0 0 1 1 006h0 1 1 0 0 0 0 060h79hf9h20 1 0 1 1 0 1 15bh1 1 0 1 1 0 1 0dah24ha4h30 1 0 0 1 1 1 14fh1 1 1 1 0 0 1 0f2h30hb0h40 1 1 0 0 1 1 066h0 1 1 0 0 1 1 066h19h99h50 1 1 0 1 1 0 16dh1 0 1 1 0 1 1 0b6h12h92h60 1 1 1 1 1 0 17dh1 0 1 1 1 1 1 beh02h82h070 0 0 0 0 1 1 107h1 1 1 0 0 0 0 0e0h78hf8h80

24、1 1 1 1 1 1 17fh1 1 1 1 1 1 1 0feh00h80h90 1 1 0 1 1 1 16fh1 1 1 1 0 1 1 0f6h10h90h顯示的具體實施是通過編程將需要顯示的字型碼存放在程序存儲器的固定區(qū)域中,構(gòu)成顯示字型碼表。當要顯示某字符時,通過查表指令獲取該字符所對應的字型碼。3.5.2 數(shù)碼管顯示電路圖 3-10 四位八段數(shù)碼管動態(tài)顯示電路圖 3-10 為本次設(shè)計所用到的四位八段數(shù)碼管動態(tài)顯示,其中段選接到單片機的 p0 口,位選接到單片機的 p2 口的低四位。其中 p0 口也接的有上拉電阻,圖中未標示出來,會在下面的總體電路中標示出來。采用的是動態(tài)顯示方式

25、。3.63.6 硬件電路總體設(shè)計硬件電路總體設(shè)計圖 3-11 為本次設(shè)計的硬件總體設(shè)計圖,其中利用 k1,k2,k3 處進行報警溫度的設(shè)置,然后有 ds18b20 進行實時溫度采集,并在數(shù)碼管上同步顯示,若采集到的溫度達到或者超過預設(shè)的報警溫度,則 led 燈會發(fā)光報警,若低于該報警溫度,則不會報警。p0.1p0.2p0.3p0.4p0.5p0.6p0.7p2.0p2.1p2.2p2.3圖 3-11 硬件電路總體設(shè)計圖4.軟件設(shè)計方案4.14.1 主程序介紹主程序介紹4.1.1 主程序流程圖本次設(shè)計首先對程序進行初始化,然后打開報警溫度設(shè)定開關(guān),對報警溫度進行設(shè)定,確認設(shè)定值后,ds18b20

26、 溫度傳感器進行溫度采集并送入單片機中,單片機將傳感器所檢測到的溫度同步顯示在數(shù)碼管上,并且與設(shè)置的報警溫度進行比較,若達到或者超過報警溫度時,led 燈發(fā)光報警,如果沒有達到,則繼續(xù)進行溫度采集。開始初始化程序進行報警溫度設(shè)定并確認傳感器采集溫度并實時顯示判斷達到報警溫度?燈光報警y繼續(xù)溫度采集n圖 4-1 主程序流程圖4.1.2 主流程的 c 語言程序main () alert=0; led=0; flag=0; sheding=30; disdata=0 xff;/ 初始化端口 discan=0 xff; for(h=0;h4;h+) /開機顯示“8888”scan(); display

27、h=8; ow_reset(); /開機先轉(zhuǎn)換一次 write_byte(0 xcc);/skip rom write_byte(0 x44);/發(fā)轉(zhuǎn)換命令 for(h=0;h1) /溫度顯示界面 led1=0;if(display1+display2*10=sheding) /比較 alert=1;/報警elsealert=0; if(flag=0 & flag21) read_temp(); /讀出溫度數(shù)據(jù) work_temp(); /處理溫度數(shù)據(jù) ge= display3; shi= display2; if(k1=0) flag2+; /flag2=0 時為初始界面 flag2

28、=1 時為設(shè)定 if(flag21)flag2=2; if(flag=0) /flag=0 時 溫度顯示 flag=1 設(shè)定顯示flag=1;else if(flag=1)flag=0;led=led;key_delay(20);if(flag=1)sheding=30;ge=0;shi=3;/ display0= ge; / 個位設(shè)定好的溫度用于顯示 / display2 =shi; /十位 if(flag=1) led1=1; if(k2=0) /+ ge+;if(ge9)ge=0;shi+;if(shi9)shi=0;sheding=ge+shi*10; key_delay(20);if

29、(k3=0) /- ge-;if(ge0)ge=9;shi-;if(shi0)shi=9;sheding=ge+shi*10; key_delay(20); display1= ge; / 個位設(shè)定好的溫度用于顯示 display2 =shi; /十位 for(h=0;h0;i-) dq=1;_nop_();_nop_(); dq=0;_nop_();_nop_();_nop_();_nop_();_nop_(); dq=val&0 x01; /最低位移出 delay(6); val=val/2; /右移 1 位 dq=1; delay(1); 4.2.3 讀溫度子程序讀出溫度子程序的

30、主要功能是讀出 ram 中的 9 字節(jié),在讀出時需進行 crc 校驗,驗有錯時,不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 4-4 所示ds18b20 的各個命令對時序的要求特別嚴格,所以必須按照所要求的時序才能達到預期的目的,同時,要注意讀進來的是高位在后低位在前, 共有 12 位數(shù),小數(shù) 4 位,整數(shù) 7 位,還有一位符號位。ds18b20 復位、應答子程序跳過 rom 匹配命令寫入子程序溫度轉(zhuǎn)換命令寫入子程序顯示子程序(延時)ds18b20 復位、應答子程序跳過 rom 匹配命令寫入子程序讀溫度命令子程序結(jié)束圖 4-4 讀溫度子程序讀溫度的 c 語言程序如下:read_temp() ow_r

31、eset(); write_byte(0 xcc); write_byte(0 xbe); temp_data0=read_byte(); temp_data1=read_byte(); ow_reset(); write_byte(0 xcc); write_byte(0 x44); 4.2.4 計算溫度子程序流程圖如圖 4-5 所示:開始溫度零下?溫度值取補碼置“”標志計算小數(shù)位溫度 bcd 值計算整數(shù)位溫度 bcd 值結(jié)束ny圖 4-5 計算溫度子程序計算溫度的 c 語言程序如下:work_temp() uchar n=0; if(temp_data1127) temp_data1=(2

32、55-temp_data1); temp_data0=(255-temp_data0); n=1; /負溫度求補碼 display4=temp_data0&0 x0f;display0=ditabdisplay4; display4=(temp_data0&0 xf0)4)|(temp_data1&0 x0f)4) ; display3=display4/100; display1=display4%100; display2=display1/10; display1=display1%10; if(!display3)display3=0 x0a; if(!disp

33、lay2)display2=0 x0a; /最高位為 0 時不顯示 if(n)display3=0 x0b; /負溫度是最高為顯示“-” 4.2.5 顯示掃描過程子程序流程圖如圖 4-6 所示:開始送位選碼送段選碼延時圖 4-6 顯示掃描過程子程序顯示掃描的 c 語言程序如下:scan() char k; for(k=0;k4;k+) /4 位 led 掃描控制 disdata=dis_7displayk; if(k=1)din=0; /當 k=1 時,p07 為低電平顯示小數(shù)點 discan=scan_conk; /列掃描 delay(30); discan=0 xff; 5.基于 ds18

34、b20 的溫度采集顯示系統(tǒng)的調(diào)試運行后,按下 k1 鍵,開始進入報警溫度設(shè)置過程,按下 k2 則溫度增加一度,按下k3 則溫度減少一度,剛開始調(diào)試時,由于接的 led 報警燈是高電平點亮,程序一運行時,at89c51 給各個引腳都是高電平,所以 led 燈一運行就會發(fā)光,違背了超過報警溫度才發(fā)光的要求,所以在子程序中加上了一條開始時將 led 所連引腳置 0 的程序。之后運行過程中又發(fā)現(xiàn)按下報警溫度的設(shè)置鍵 k1,k2,k3 都不是很靈敏,有時按下的時間太短甚至會沒有反應,經(jīng)過與小組成員討論,發(fā)現(xiàn)是由于按鍵沒有進行消抖,在顯示掃描子程序中加入了延時函數(shù)進行按鍵的消抖,這一問題也得到了解決。圖

35、5-1 溫度實時顯示且未超過報警溫度 25 攝氏度時 led 沒有發(fā)光報警圖 5-2 溫度實時顯示且超過實時報警溫度 25 攝氏度 led 發(fā)光報警圖 5-3 實時顯示負溫度6.收獲和體會在這一次的課程設(shè)計過程,我收獲了很多,無論是在理論知識方面,還是理論聯(lián)系實際的操作方面。因為已經(jīng)一個學期沒有學習單片機這門課程,很多知識不太清楚,加上以前的基礎(chǔ)知識也不是很牢固,對于 proteus 和 keil 軟件的使用也生疏了,所以剛開始拿到課題時感到很有難度,不禁對此次的課程設(shè)計感到非常緊張。剛開始做這一課題的時候感到難度很大,許多知識都要重新學習,包括課本上的理論知識,以及編程和仿真軟件的使用都要多

36、加練習才能掌握。在這一過程中,我不斷的上網(wǎng)查找相關(guān)資料,翻閱相關(guān)書籍,也一步步了解了設(shè)計中各個模塊所要實現(xiàn)的功能,對這次的設(shè)計方案有了具象的認識。通過此次課程設(shè)計,我對 c 語言和單片機有了新的認識和理解,并且溫習了 proteus和 keil 軟件的使用,也了解了它的許多以前不知道的功能。掌握了從設(shè)計方案的要求來進行主程序流程圖的設(shè)計,然后落實到每一個子程序,依次實現(xiàn)每一個功能要求。然后用仿真軟件進行仿真調(diào)試,一步步的找出哪里的設(shè)計不符合要求并進行改正,幾乎沒有一次就能調(diào)試通過的程序,所以說程序不是寫出來的,而是不斷的調(diào)試出來的。這這個過程中也積累了硬件設(shè)計的經(jīng)驗。同時也加深了我對電路原理、器件資料、電路板設(shè)計和電路的硬件調(diào)試認識和理解。此次課程設(shè)計用到了 ds18b20 這一數(shù)字溫度傳感器,這是我們之前沒有遇到過的一種新型的器件,所以通過上網(wǎng)和查閱相關(guān)書籍來查找這一器件的資料,從它的基本結(jié)構(gòu),到元件特性及工作原理之類的等等。在這個過程中我發(fā)現(xiàn)即使是一個小小的元件,也有很復雜的構(gòu)成及多種特性,而且實際到許多方面。在學習的過程中我也多 ds18b20 有了一個系統(tǒng)的了解。我也認識到想要真正的全面了解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論