單片機課程設計報告數(shù)字溫度計_第1頁
單片機課程設計報告數(shù)字溫度計_第2頁
單片機課程設計報告數(shù)字溫度計_第3頁
單片機課程設計報告數(shù)字溫度計_第4頁
單片機課程設計報告數(shù)字溫度計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計報告數(shù)字溫度計專業(yè)班級 姓名 時 間 周 周指導教師 年 月 日1 設計要求基本范圍-50-110精度誤差小于0.5led數(shù)碼直讀顯示2 擴展功能實現(xiàn)語音報數(shù)可以任意設定溫度的上下限報警功能數(shù)字溫度計 摘要:隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活,工作,科研,各個領域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機控制的數(shù)字溫度計,本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內(nèi)時,可以報警。 關(guān)鍵詞:單片機,數(shù)字控制,溫度計, ds18b20,stc89c511 引言隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶

2、來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機stc89c51,測溫傳感器使用ds18b20,用3位共陽極led數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求。2 總體設計方案2.1數(shù)字溫度計設計方案論證2.1.1方案一由于本設計是測溫電路,可以使用熱敏電阻之類的

3、器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行a/d轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到a/d轉(zhuǎn)換電路,感溫電路比較麻煩。2.1.2 方案二 進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器ds18b20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,就可以滿足設計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。2.2方案二的總體設計框圖溫度計電路設計總體設計方框圖如圖1所示,控制器采用單片機at89s

4、51,溫度傳感器采用ds18b20,用3位led數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。主 控 制 器led顯 示溫 度 傳 感 器單片機復位時鐘振蕩報警點按鍵調(diào)整 圖1總體設計方框圖2.2.1 主控制器單片機at89s51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產(chǎn)品的設計使用系統(tǒng)可用二節(jié)電池供電。2.2.2 顯示電路顯示電路采用3位共陽led數(shù)碼管,從p3口rxd,txd串口輸出段碼。2.2.3溫度傳感器ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,

5、并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。ds18b20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個ds18b20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機功耗;溫度以或位數(shù)字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; ds18b20采用腳pr35封裝或腳soic封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2所示。c64 位rom和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器th低溫觸發(fā)器tl配置寄存器8

6、位crc發(fā)生器vdd i/o圖2 ds18b20內(nèi)部結(jié)構(gòu)64位rom的結(jié)構(gòu)開始位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后位是前面56位的crc檢驗碼,這也是多個ds18b20可以采用一線進行通信的原因。溫度報警觸發(fā)器和,可通過軟件寫入戶報警上下限。ds18b20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存和一個非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲器,結(jié)構(gòu)如圖3所示。頭個字節(jié)包含測得的溫度信息,第和第字節(jié)和的拷貝,是易失的,每次上電復位時被刷新。第個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時寄存器中的分辨率轉(zhuǎn)換為

7、相應精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低位一直為,是工作模式位,用于設置ds18b20在工作模式還是在測試模式,ds18b20出廠時該位被設置為,用戶要去改動,r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來設置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crc圖3 ds18b20字節(jié)定義由表1可見,ds18b20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。高速暫存的第、字節(jié)保留未用,表現(xiàn)為全邏輯。第字節(jié)讀出前面所有字節(jié)的crc碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當ds18b20

8、接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第、字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當符號位時,表示測得的溫度值為正值,可以直接將二進制位轉(zhuǎn)換為十進制;當符號位時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表2是一部分溫度值對應的二進制溫度數(shù)據(jù)。表1 ds18b20溫度轉(zhuǎn)換時間表 ds18b20完成溫度轉(zhuǎn)換后,就把測得的溫度值與ram中的th、t字節(jié)內(nèi)容作比較。若th或ttl,則將該器件內(nèi)的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響

9、應。因此,可用多只ds18b20同時測量溫度并進行報警搜索。在64位rom的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(crc)。主機rom的前56位來計算crc值,并和存入ds18b20的crc值作比較,以判斷主機收到的rom數(shù)據(jù)是否正確。ds18b20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,ds18b20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次

10、測量前,首先將55所對應的一個基數(shù)分別置入減法計數(shù)器、溫度寄存器中,計數(shù)器和溫度寄存器被預置在55所對應的一個基數(shù)值。減法計數(shù)器對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器的預置值減到時,溫度寄存器的值將加,減法計數(shù)器的預置將重新被裝入,減法計數(shù)器重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)器門仍未關(guān)閉就重復上述過程,直到溫度寄存器值大致被測溫度值。表2一部分溫度對應值表溫度/二進制表示十六進制表示+1250000 0111 1101 00000

11、7d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90h另外,由于ds18b20單線通信功能是分時完成的,它有嚴格的時隙概念,

12、因此讀寫時序很重要。系統(tǒng)對ds18b20的各種操作按協(xié)議進行。操作協(xié)議為:初使化ds18b20(發(fā)復位脈沖)發(fā)rom功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。圖4 ds18b20與單片機的接口電路2.3 ds18b20溫度傳感器與單片機的接口電路ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時ds18b20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖4 所示單片機端口接單線總線,為保證在有效的ds18b20時鐘周期內(nèi)提供足夠的電流,可用一個mosfet管來完成對總線的上拉。當ds18b20處于寫存儲器操作和溫度a/d轉(zhuǎn)換操作時,總線上必須有強的上拉,上拉開啟時

13、間最大為10us。采用寄生電源供電方式時vdd端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。2.4 系統(tǒng)整體硬件電路2.4.1 主板電路系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報警調(diào)整電路,單片機主板電路等,如圖5 所示。圖5中有三個獨立式按鍵可以分別調(diào)整溫度計的上下限報警設置,圖中蜂鳴器可以在被測溫度不在上下限范圍內(nèi)時,發(fā)出報警鳴叫聲音,同時led數(shù)碼管將沒有被測溫度值顯示,這時可以調(diào)整報警上下限,從而測出被測的溫度值。圖5 中的按健復位電路是上電復位加手動復位,使用比較方便,在程序跑飛時,可以手動復位,這樣就不用在重起單片機電源,就可以實現(xiàn)復位。2.4.2

14、顯示電路顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點就是使用口資源比較少,只用p3口的rxd,和txd,串口的發(fā)送和接收,四只數(shù)碼管采用74ls164右移寄存器驅(qū)動,顯示比較清晰。 圖5 單片機主板電路圖6 溫度顯示電路3系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.1主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理ds18b20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖7所示。y發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗9字節(jié)完?c

15、rc校驗正?確?移入溫度暫存器結(jié)束nny初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令nyny圖7 主程序流程圖圖8讀溫度流程圖 3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需進行crc校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖9 溫度轉(zhuǎn)換流程圖3.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖

16、9所示3.4 計算溫度子程序計算溫度子程序?qū)am中讀取值進行bcd碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖10所示。 開始溫度零下?溫度值取補碼置“”標志計算小數(shù)位溫度bcd值 計算整數(shù)位溫度bcd值 結(jié)束置“+”標志ny溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束nnyy 圖10計算溫度流程圖 圖11顯示數(shù)據(jù)刷新流程圖3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖11。4總結(jié)與體會 經(jīng)過將近三周的單片機課程設計,終于完成了

17、我的數(shù)字溫度計的設計,雖然沒有完全達到設計要求,但從心底里說,還是高興的,畢竟這次設計把實物都做了出來,高興之余不得不深思呀!在本次設計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,舉個例子,以前寫的那幾次,數(shù)據(jù)加減時,我用的都是bcd碼,這一次,我全部用的都是16進制的數(shù)直接加減,顯示處理時在用除法去刪分,感覺效果比較好,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。從這次的課程設計

18、中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。參考文獻1李朝青.單片機原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學出版社,19982李廣弟.單片機基礎.北京:北京航空航天大學出版社,19943閻石.數(shù)字電子技術(shù)基礎(第三版). 北京:高等教育出版社,19894廖常初.現(xiàn)場總線概述j.電工技術(shù),1999.基于proteus的單總線溫度監(jiān)測網(wǎng)絡的設計與仿真實現(xiàn)發(fā)布者:韓曉春發(fā)布時間:2007-12-4 10:47:00 內(nèi)容摘要以單總線技術(shù)為基礎,

19、采用12片單總線數(shù)字化溫度傳感器ds18b20、液晶顯示模塊lcd1602和at89c51單片機設計了小型單總線溫度監(jiān)測網(wǎng)絡。應用專門用于單片機開發(fā)的eda工具軟件proteus進行系統(tǒng)硬件電路設計,單片機開發(fā)軟件keiluvision3進行軟件調(diào)試,完成單總線溫度監(jiān)測網(wǎng)絡系統(tǒng)設計并實現(xiàn)動態(tài)實時仿真。介紹了支持單片機的優(yōu)秀eda工具軟件proteus的特點、使用方法,具體闡述其在單片機系統(tǒng)硬、軟件開發(fā)過程中的能有效提高工作效率、顯著減少開發(fā)周期和降低開發(fā)成本等諸多優(yōu)點。正文文字大小:大 中 小 隨著單片機性能不斷提高而價格卻不斷下降,單片機控制在越來越多的領域得以應用。單片機系統(tǒng)設計包括硬件電

20、路設計和軟件編程設計兩個方面,其調(diào)試過程一般分為硬件測試、軟件調(diào)試、系統(tǒng)調(diào)試 3 個過程。傳統(tǒng)的模式的硬件電路測試和系統(tǒng)調(diào)試既復雜又低效率,因為要進行這兩個過程必須在設計原理圖,繪制電路板設計制作完成、元器件焊接完畢,然后通過仿真器將調(diào)試成功的程序固化到單片機中之后進行,在軟硬件的配合中如需要修改,還要重新制板或重新調(diào)試程序并固化,在時間和資金投入上帶來很大的麻煩。英國labcenter electronics公司推出的proteus是專門用于單片機開發(fā)的eda工具軟件。proteus除了具有和其它eda工具一樣的原理編輯、印制電路板(pcb)自動或人工布線及電路仿真的功能外,最大特色是其電路

21、仿真是交互的、可視化的、支持單片機微處理器的。在不需要硬件設備投入的情況下,proteus軟件可以建立完備的電子學習設計開發(fā)環(huán)境,能夠有效縮短研發(fā)周期,顯著降低開發(fā)成本。本文運用proteus軟件設計溫度監(jiān)測網(wǎng)絡系統(tǒng),并通過實時動態(tài)仿真的實現(xiàn)驗證本設計的軟硬件開發(fā)系統(tǒng)。本文以組網(wǎng)測溫系統(tǒng)的開發(fā)過程為例, 簡單介紹了proteus在單片機的軟件開發(fā)與仿真中的應用,proteus軟件資源豐富、功能強大, 集調(diào)試、仿真、制板于一體,提供了一種虛擬直觀的軟硬件設計仿真環(huán)境,有利于節(jié)省系統(tǒng)設計時間和設計成本,極大地提高了工作效率,對于單片機實踐教學、單片機應用系統(tǒng)開發(fā)、電子電路的開發(fā)和科研工作的開展等都

22、有較大的實用價值。fpga與ds18b20型溫度傳感器通信的實現(xiàn)時間:2009-08-12 作者: 來源: 人氣: 打印本文摘要:介紹利用actel公司的apa150型現(xiàn)場可編程門陣列(fpga)實現(xiàn)對ds18b20型溫度傳感器的通信控制,使cpu可以方便地從fpga中讀取溫度測量結(jié)果和ds18b20的48位id值。1引言27n電子資料網(wǎng) ds18b20是dallas公司生產(chǎn)的一線式數(shù)字溫度傳感器,采用3引腳to-92型小體積封裝;溫度測量范圍為-55+125,可編程為9位12位a/d轉(zhuǎn)換精度,測溫分辨率可達0.0625,被測溫度用符號擴展的16位數(shù)字量方式串行輸出。27n電子資料網(wǎng) 一線式(

23、1-wire)串行總線是利用1條信號線就可以與總線上若干器件進行通信。具體應用中可以利用微處理器的i/o端口對ds18b20直接進行通信,也可以通過現(xiàn)場可編程門陣列(fpga)等可編程邏輯器件(pld)實現(xiàn)對1-wire器件的通信。27n電子資料網(wǎng) 本文介紹利用actel公司的proasicplus系列fpga實現(xiàn)與ds18b20的通信功能。fpga可以將讀出ds18b20的48位id號和12位溫度測量結(jié)果保存在內(nèi)部寄存器中,微處理器可以隨時快速地從fpga寄存器中讀取這些信息。27n電子資料網(wǎng) 一般在使用ds18b20時往往采用微處理器的i/o端口實現(xiàn)與該器件的通信,這種方法雖然比較容易和方

24、便,但是,因為ds18b20的一線式串行總線對時序要求比較嚴格,因此,為了保證與ds18b20的通信可靠性,微處理器與ds18b20通信時需要采用關(guān)閉中斷的辦法,以防止操作時序被中斷服務破壞。27n電子資料網(wǎng) 利用fpga實現(xiàn)與ds18b20通信不存在被迫關(guān)閉中斷的情況,可以滿足對實時性要求嚴格的應用要求。27n電子資料網(wǎng)2 proasicplus系列fpga簡介27n電子資料網(wǎng) proasicplus系列fpga是actel公司推出的基于flash開關(guān)編程技術(shù)的現(xiàn)場可編程門陣列,包括從75萬門的apa075型到100萬門的apal000型,具有高密度、低功耗、非易失、含有嵌入式ram及可重復

25、編程等特點。27n電子資料網(wǎng) 因為proasicplus系列fpga基于flash技術(shù),利用flash開關(guān)保存內(nèi)部邏輯,因此不需要另外的器件。由于不需要上電配置過程,因此具備上電就立即工作的特點。不用配置器件,系統(tǒng)的保密性提高。27n電子資料網(wǎng) 筆者在電力監(jiān)控的產(chǎn)品中利用apa150型fpga實現(xiàn)了邏輯控制、a/d采樣控制和fifo存儲等功能,并利用剩余的資源實現(xiàn)了ds18b20的通信功能。apa150在整個系統(tǒng)中充當協(xié)處理器,使主cpu從繁重的實時處理中解脫出來。27n電子資料網(wǎng)3 ds18b20簡介27n電子資料網(wǎng)31內(nèi)部結(jié)構(gòu)27n電子資料網(wǎng) ds18b20的內(nèi)部結(jié)構(gòu)如圖1所示,主要由以下

26、幾部分組成:64位rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th(溫度高)和tl(溫度低)、配置寄存器、暫存寄存器(scratchpad)、存儲器控制邏輯。dq為數(shù)字信號輸入/輸出端。27n電子資料網(wǎng)27n電子資料網(wǎng) rom中的64(8位產(chǎn)品家族編號、48位id號、8位crc)位序列號是出廠前刻好的,這64位序列號具有惟一性,每個ds18b20的64位序列號均不相同。27n電子資料網(wǎng) 8位crc生成器可以完成通信時的校驗。27n電子資料網(wǎng) 暫存寄存器有9個字節(jié),包含溫度測量結(jié)果、溫度報警寄存器、crc校驗碼等內(nèi)容。27n電子資料網(wǎng)27n電子資料網(wǎng)3.2操作步驟27n電子資料網(wǎng) 對ds18b20

27、的操作分為3個步驟:初始化、rom命令和ds18b20功能命令。27n電子資料網(wǎng)3.2.1初始化27n電子資料網(wǎng) fpga要與ds18b20通信,首先必須完成初始化。fpga產(chǎn)生復位信號,ds18b20返回響應脈沖。27n電子資料網(wǎng)3.2.2rom命令27n電子資料網(wǎng) 該步驟完成fpga與總線上的某一具體ds18b20建立聯(lián)系。rom命令有搜尋rom(search rom)、讀rom(read rom)、匹配rom(match rom)、忽略rom(skip rom)、報警查找等命令(alarm search)。27n電子資料網(wǎng) 這里,fpga只連接1個ds18b20,因此只使用讀rom命令,

28、來讀取ds18b20的48位id號。27n電子資料網(wǎng)3.2.3 ds18b20功能命令27n電子資料網(wǎng) fpga在該步驟中完成溫度轉(zhuǎn)換(convertt)、寫暫存寄存器(write scratchpad)、讀暫存寄存器(read scratchpad)、拷貝暫存寄存器(copyscratchpad)、裝載暫存器寄存器(recall e2)、讀供電模式命令(read power supply)。27n電子資料網(wǎng) 文中不用溫度報警功能,因此在本步驟中只需完成溫度轉(zhuǎn)換,然后通過讀暫存寄存器命令完成溫度轉(zhuǎn)化的結(jié)果。27n電子資料網(wǎng)3.3操作時序27n電子資料網(wǎng) ds18b20的一線式操作時序如圖2所示

29、。從時序圖中可以看出,對ds18b20的操作時序要求比較嚴格。利用fpga可以實現(xiàn)這些操作時序。27n電子資料網(wǎng)27n電子資料網(wǎng)4 fpga與ds18b20的通信27n電子資料網(wǎng)4.1 ds18b20的操作模塊27n電子資料網(wǎng) fpga需要完成ds18b20的初始化、讀取ds18b20的48位id號、啟動ds18b20溫度轉(zhuǎn)換、讀取溫度轉(zhuǎn)化結(jié)果。讀取48位id號和讀取溫度轉(zhuǎn)換結(jié)果過程中,fpga還要實現(xiàn)crc校驗碼的計算,保證通信數(shù)據(jù)的可靠性。27n電子資料網(wǎng) 以上操作反復進行,可以用狀態(tài)機來實現(xiàn)。狀態(tài)機的各種狀態(tài)如下:27n電子資料網(wǎng) reset1:對ds18b20進行第一次復位,然后進入d

30、elay狀態(tài),等待800s后,進入cmd33狀態(tài)。27n電子資料網(wǎng) cmd33:對ds18b20發(fā)出033命令,讀取48位id值。27n電子資料網(wǎng) get_id:從ds18b20中讀取48位id值。27n電子資料網(wǎng) reset2:對ds18b20進行第二次復位,然后進入delay狀態(tài)等待800s后,進入cmdcc狀態(tài)。27n電子資料網(wǎng) cmdcc:向ds18b20發(fā)出忽略rom命令,為進入下一狀態(tài)作準備。27n電子資料網(wǎng) cmd44:向ds18b20發(fā)出啟動溫度轉(zhuǎn)換命令,然后進入delay狀態(tài)等待900ms后進入下一狀態(tài)。27n電子資料網(wǎng) reset3:對ds18b20進行第三次復位。27n電

31、子資料網(wǎng) cmdcc2:向ds18b20發(fā)出忽略rom命令,為了進入下一狀態(tài)作準備。27n電子資料網(wǎng) get_temp:從ds18b20中讀取溫度測量數(shù)值。27n電子資料網(wǎng) delay:等待狀態(tài)。27n電子資料網(wǎng) write_bit:向ds18b20中寫入數(shù)據(jù)位狀態(tài)。27n電子資料網(wǎng) read_bit:從ds18b20中讀取數(shù)據(jù)位狀態(tài)。在該狀態(tài)中每讀取1位數(shù)據(jù),同時完成該數(shù)據(jù)位的crc校驗計算。所有數(shù)據(jù)都讀取后,還要讀取8位crc校驗位。這8位校驗位也經(jīng)過crc校驗計算,如果通信沒有錯誤,總的crc校驗結(jié)果應該是0。這時可將通信正確的數(shù)據(jù)保存到id和temp_data寄存器中。27n電子資料網(wǎng)

32、 設計中采用verilog語言建立ds18b20操作模塊”ds18b20_proc”。在該模塊中實現(xiàn)以上的狀態(tài)機功能。該模塊的定義為module ds18b20 proc(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。27n電子資料網(wǎng)27n電子資料網(wǎng) 從仿真波形可以看出,系統(tǒng)上電后的10ms左右,fpga可以讀出ds18b20的48位id值,這樣,主cpu在系統(tǒng)復位后很短的時間內(nèi)就可以讀取id值,進行相應的處理。27n電子資料網(wǎng)4.2 fpga與cpu的接口27n電子資料網(wǎng) 在fpga中,要實現(xiàn)對ds18b20的通信處理,主模塊要實現(xiàn)對ds18b20_pro

33、c模塊的調(diào)用及建立與cpu之間的接口。27n電子資料網(wǎng) 與cpu之間的接口通過建立若干寄存器實現(xiàn)。溫度測量值和48位id可以用4個16位寄存器保存。cpu通過讀取這些寄存器可以獲得溫度測量數(shù)值和48位id值。27n電子資料網(wǎng) cpu、fpga及ds18b20的連接原理如圖4所示。27n電子資料網(wǎng)27n電子資料網(wǎng)5 結(jié)束語27n電子資料網(wǎng) 在系統(tǒng)中,fpga可以分擔許多主處理器的工作,提高整體實時性,降低cpu處理的嚴格實時約束,從而降低cpu軟件處理的難度。同時,由于actel公司的proasicplus系列fpga的保密特性,可以增強產(chǎn)品知識產(chǎn)權(quán)的保護。27n電子資料網(wǎng) 本設計應用在電力監(jiān)控

34、產(chǎn)品中。測量出的裝置內(nèi)部溫度用于電量測量精度補償和報警,對保證產(chǎn)品測量精度和可靠運行具有重要意義。48位id值用于產(chǎn)品的惟一編碼標識和以太網(wǎng)mac地址,便于產(chǎn)品生產(chǎn)、維護和管理。27n電子資料網(wǎng)用protues打開ts-18b20 數(shù)字溫度傳感器,該產(chǎn)品采用美國dallas公司生產(chǎn)的 ds18b20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數(shù)字測溫和控制領域。編輯本段|回到頂部1: 技術(shù)性能描述 1.1 獨特的單線接口方式,ds18b20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通訊。1.2 測溫范圍 55

35、125,固有測溫分辨率0.5。1.31.4 工作電源: 35v/dc1.5 在使用中不需要任何外圍元件1.6 測量結(jié)果以912位數(shù)字量方式串行傳送1.7 不銹鋼保護管直徑 6 1.8 適用于dn1525, dn40dn250各種介質(zhì)工業(yè)管道和狹小空間設備測溫1.9 標準安裝螺紋 m10x1, m12x1.5, g1/2”任選1.10 pvc電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。編輯本段|回到頂部2:應用范圍 2.1 該產(chǎn)品適用于冷凍庫,糧倉,儲罐,電訊機房,電力機房,電纜線槽等測溫和控制領域2.2 軸瓦,缸體,紡機,空調(diào),等狹小空間工業(yè)設備測溫和控制。2.3 汽車空調(diào)、冰箱

36、、冷柜、以及中低溫干燥箱等。2.5 供熱/制冷管道熱量計量,中央空調(diào)分戶熱能計量和工業(yè)領域測溫和控制編輯本段|回到頂部3:產(chǎn)品型號與規(guī)格 型 號 測溫范圍 安裝螺紋 電纜長度 適用管道ts-18b20 -55125 無 1.5 m ts-18b20a -55125 m10x1 1.5m dn1525ts-18b20b -55125 1/2”g 接線盒 dn40 60編輯本段|回到頂部4:特點 獨特的一線接口,只需要一條口線通信 多點能力,簡化了分布式溫度傳感應用 無需外部元件 可用數(shù)據(jù)總線供電,電壓范圍為3.0 v至5.5 v 無需備用電源 測量溫度范圍為-55 c至+125 。華氏相當于是-

37、67 f到257華氏度 -10 c至+85 c范圍內(nèi)精度為0.5 c溫度傳感器可編程的分辨率為912位 溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒 用戶可定義的非易失性溫度報警設置 應用范圍包括恒溫控制,工業(yè)系統(tǒng),消費電子產(chǎn)品溫度計,或任何熱敏感系統(tǒng)描述該ds18b20的數(shù)字溫度計提供9至12位(可編程設備溫度讀數(shù)。信息被發(fā)送到/從ds18b20 通過1線接口,所以中央微處理器與ds18b20只有一個一條口線連接。為讀寫以及溫度轉(zhuǎn)換可以從數(shù)據(jù)線本身獲得能量,不需要外接電源。 因為每一個ds18b20的包含一個獨特的序號,多個ds18b20s可以同時存在于一條總線。這使得溫度傳感器放置在許多不同

38、的地方。它的用途很多,包括空調(diào)環(huán)境控制,感測建筑物內(nèi)溫設備或機器,并進行過程監(jiān)測和控制。8引腳封裝 to-92封裝 用途 描述 5 1 接地 接地 4 2 數(shù)字 信號輸入輸出,一線輸出:源極開路 3 3 電源 可選電源管腳。見寄生功率一節(jié)細節(jié)方面。電源必須接地,為行動中,寄生蟲功率模式。不在本表中所有管腳不須接線 。概況框圖圖1顯示的主要組成部分ds18b20的。ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器。該裝置信號線高的時候,內(nèi)部電容器 儲存能量通由1線通信線路給片子供電,而且在低電平期間為片子供電直至下一個高電平的到來

39、重新充電。 ds18b20的電源也可以從外部3v-5 .5v的電壓得到。ds18b20采用一線通信接口。因為一線通信接口,必須在先完成rom設定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一: 1 )讀rom, 2 )rom匹配, 3 )搜索rom, 4 )跳過rom, 5 )報警檢查。這些指令操作作用在沒有一個器件的64位光刻rom序列號,可以在掛在一線上多個器件選定某一個器件,同時,總線也可以知道總線上掛有有多少,什么樣的設備。若指令成功地使ds18b20完成溫度測量,數(shù)據(jù)存儲在ds18b20的存儲器。一個控制功能指揮指示ds18b20的演出測溫。測量結(jié)果將被放置在ds18b

40、20內(nèi)存中,并可以讓閱讀發(fā)出記憶功能的指揮,閱讀內(nèi)容的片上存儲器。溫度報警觸發(fā)器th和tl都有一字節(jié)eeprom 的數(shù)據(jù)。如果ds18b20不使用報警檢查指令,這些寄存器可作為一般的用戶記憶用途。在片上還載有配置字節(jié)以理想的解決溫度數(shù)字轉(zhuǎn)換。寫th,tl指令以及配置字節(jié)利用一個記憶功能的指令完成。通過緩存器讀寄存器。所有的數(shù)據(jù)都讀,寫都是從最低位開始。ds18b20有4個主要的數(shù)據(jù)部件: (1)光刻rom中的64位序列號是出廠前被光刻好的,它可以看作是該ds18b20的地址序列碼。64位光刻rom的排列是:開始8位(28h)是產(chǎn)品類型標號,接著的48位是該ds18b20自身的序列號,最后8位是

41、前面56位的循環(huán)冗余校驗碼(crc=x8+x5+x4+1)。光刻rom的作用是使每一個ds18b20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個ds18b20的目的。 (2) ds18b20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/lsb形式表達,其中s為符號位。ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom,溫度傳感器,溫度報警觸發(fā)器th和tl,配置寄存器。4.3.2存儲器ds18b20的存儲器包括高速暫存器ram和可電擦除ram,可電擦除ram又包括溫度觸發(fā)器th和tl,以及一個配置寄存器。存儲器能完整的確定一線

42、端口的通訊,數(shù)字開始用寫寄存器的命令寫進寄存器,接著也可以用讀寄存器的命令來確認這些數(shù)字。當確認以后就可以用復制寄存器的命令來將這些數(shù)字轉(zhuǎn)移到可電擦除ram中。當修改過寄存器中的數(shù)時,這個過程能確保數(shù)字的完整性。高速暫存器ram是由8個字節(jié)的存儲器組成;第一和第二個字節(jié)是溫度的顯示位。第三和第四個字節(jié)是復制th和tl,同時第三和第四個字節(jié)的數(shù)字可以更新;第五個字節(jié)是復制配置寄存器,同時第五個字節(jié)的數(shù)字可以更新;六、七、八三個字節(jié)是計算機自身使用。用讀寄存器的命令能讀出第九個字節(jié),這個字節(jié)是對前面的八個字節(jié)進行校驗。4.3.3 64-位光刻rom64位光刻rom的前8位是ds18b20的自身代碼

43、,接下來的48位為連續(xù)的數(shù)字代碼,最后的8位是對前56位的crc校驗。64-位的光刻rom又包括5個rom的功能命令:讀rom,匹配rom,跳躍rom,查找rom和報警查找。4.3.4 ds18b20外部電源的連接方式ds18b20可以使用外部電源vdd,也可以使用內(nèi)部的寄生電源。當vdd端口接3.0v5.5v的電壓時是使用外部電源;當vdd端口接地時使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電,i/o口線要接5k左右的上拉電阻。 4.3.4 ds18b20溫度處理過程4.3.4.1配置寄存器配置寄存器是配置不同的位數(shù)來確定溫度和數(shù)字的轉(zhuǎn)化。可以知道r1,r0是溫度的決定位,由r1,r

44、0的不同組合可以配置為9位,10位,11位,12位的溫度顯示。這樣就可以知道不同的溫度轉(zhuǎn)化位所對應的轉(zhuǎn)化時間,四種配置的分辨率分別為0.5,0.25,0.125和0.0625,出廠時以配置為12位。4.3.4.2 溫度的讀取ds18b20在出廠時以配置為12位,讀取溫度時共讀取16位,所以把后11位的2進制轉(zhuǎn)化為10進制后在乘以0.0625便為所測的溫度,還需要判斷正負。前5個數(shù)字為符號位,當前5位為1時,讀取的溫度為負數(shù);當前5位為0時,讀取的溫度為正數(shù)。16位數(shù)字擺放是從低位到高位。4.3.4.3ds18b20控制方法ds18b20有六條控制命令,如表4.1所示: 表4.1 為ds18b2

45、0有六條控制命令指 令 約定代碼 操 作 說 明 溫度轉(zhuǎn)換 44h 啟動ds18b20進行溫度轉(zhuǎn)換 讀暫存器 beh 讀暫存器9個字節(jié)內(nèi)容 寫暫存器 4eh 將數(shù)據(jù)寫入暫存器的th、tl字節(jié) 復制暫存器 48h 把暫存器的th、tl字節(jié)寫到e2ram中 重新調(diào)e2ram b8h 把e2ram中的th、tl字節(jié)寫到暫存器th、tl字節(jié) 讀電源供電方式 b4h 啟動ds18b20發(fā)送電源供電方式的信號給主cpu 4.3.4.4 ds18b20的初始化。(1) 先將數(shù)據(jù)線置高電平“1”。(2) 延時(該時間要求的不是很嚴格,但是盡可能的短一點)(3) 數(shù)據(jù)線拉到低電平“0”。(4) 延時750微秒(

46、該時間的時間范圍可以從480到960微秒)。(5) 數(shù)據(jù)線拉到高電平“1”。(6) 延時等待(如果初始化成功則在15到60毫秒時間之內(nèi)產(chǎn)生一個由ds18b20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制)。(7) 若cpu讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。(8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。4.3.4.5 ds18b20的寫操作(1) 數(shù)據(jù)線先置低電平“0”。(2) 延時確定的時間為15微秒。(3) 按從低位到高位的順序發(fā)送字

47、節(jié)(一次只發(fā)送一位)。(4) 延時時間為45微秒。(5) 將數(shù)據(jù)線拉到高電平。(6) 重復上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。(7) 最后將數(shù)據(jù)線拉高。4.3.4.6 ds18b20的讀操作(1)將數(shù)據(jù)線拉高“1”。(2)延時2微秒。(3)將數(shù)據(jù)線拉低“0”。(4)延時15微秒。(5)將數(shù)據(jù)線拉高“1”。(6)延時15微秒。(7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進行數(shù)據(jù)處理。(8)延時30微秒。最佳答案;這是關(guān)于ds18b20的讀寫程序,數(shù)據(jù)腳p2.2,晶振11.0592mhz;溫度傳感器18b20匯編程序,采用器件默認的12位轉(zhuǎn)化,最大轉(zhuǎn)化時間750微秒;可以將檢測到的溫度直

48、接顯示到at89c51的兩個數(shù)碼管上;顯示溫度00到99度,很準確無需校正!org 0000h;單片機內(nèi)存分配申明!temper_l equ 29h;用于保存讀出溫度的低8位temper_h equ 28h;用于保存讀出溫度的高8位flag1 equ 38h;是否檢測到ds18b20標志位a_bit equ 20h ;數(shù)碼管個位數(shù)存放內(nèi)存位置b_bit equ 21h ;數(shù)碼管十位數(shù)存放內(nèi)存位置main:lcall get_temper;調(diào)用讀溫度子程序;進行溫度顯示,這里我們考慮用網(wǎng)站提供的兩位數(shù)碼管來顯示溫度;顯示范圍00到99度,顯示精度為1度;因為12位轉(zhuǎn)化時每一位的精度為0.0625

49、度,我們不要求顯示小數(shù)所以可以拋棄29h的低4位;將28h中的低4位移入29h中的高4位,這樣獲得一個新字節(jié),這個字節(jié)就是實際測量獲得的溫度;這個轉(zhuǎn)化溫度的方法可是我想出來的哦非常簡潔無需乘于0.0625系數(shù)mov a,29hmov c,40h;將28h中的最低位移入crrc amov c,41hrrc amov c,42hrrc amov c,43hrrc amov 29h,alcall display;調(diào)用數(shù)碼管顯示子程序cpl p1.0ajmp main; 這是ds18b20復位初始化子程序init_1820:setb p2.2nopclr p2.2;主機發(fā)出延時537微秒的復位低脈沖m

50、ov r1,#3tsr1:mov r0,#107djnz r0,$djnz r1,tsr1setb p2.2;然后拉高數(shù)據(jù)線nopnopnopmov r0,#25htsr2:jnb p2.2,tsr3;等待ds18b20回應djnz r0,tsr2ljmp tsr4 ; 延時tsr3:setb flag1 ; 置標志位,表示ds1820存在clr p1.7;檢查到ds18b20就點亮p1.7ledljmp tsr5tsr4:clr flag1 ; 清標志位,表示ds1820不存在clr p1.1ljmp tsr7tsr5:mov r0,#117tsr6:djnz r0,tsr6 ; 時序要求延

51、時一段時間tsr7:setb p2.2ret; 讀出轉(zhuǎn)換后的溫度值get_temper:setb p2.2lcall init_1820;先復位ds18b20jb flag1,tss2clr p1.2ret ; 判斷ds1820是否存在?若ds18b20不存在則返回tss2:clr p1.3;ds18b20已經(jīng)被檢測到!mov a,#0cch ; 跳過rom匹配lcall write_1820mov a,#44h ; 發(fā)出溫度轉(zhuǎn)換命令lcall write_1820;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待ad轉(zhuǎn)換結(jié)束,12位的話750微秒lcall displaylcall init_1

52、820;準備讀溫度前先復位mov a,#0cch ; 跳過rom匹配lcall write_1820mov a,#0beh ; 發(fā)出讀溫度命令lcall write_1820lcall read_18200; 將讀出的溫度數(shù)據(jù)保存到35h/36hclr p1.4ret;寫ds18b20的子程序(有具體的時序要求)write_1820:mov r2,#8;一共8位數(shù)據(jù)clr cwr1:clr p2.2mov r3,#5djnz r3,$rrc amov p2.2,cmov r3,#21djnz r3,$setb p2.2nopdjnz r2,wr1setb p2.2retread_18200: ; 讀ds18b20的程序,從ds18b20中讀出兩個字節(jié)的溫度數(shù)據(jù)mov r4,#2 ; 將溫度高位和低位從ds18b20中讀出mov r1,#29h ; 低位存入29h(temper_l),高位存入28h(temper_h)re00:mov r2,#8;數(shù)據(jù)一共有8位re01:clr csetb p2.2nopnopclr p2.2nopn

溫馨提示

  • 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

提交評論