版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、河南理工大學電子設計綜合訓練報告數(shù)字溫度計姓 名: -學 號: 310708010323 /26 專業(yè)班級: 電氣07-3班 指導老師: 楊凌霄 所在學院:電氣工程與自動化學院2010年6月9日摘要本設計是對一個數(shù)字溫度計功能的實現(xiàn),其主要功能是:1)基本范圍-50110,2)精度誤差小于0.5,3)led數(shù)碼直讀顯示,4)擴展功能,5)可以任意設定溫度的上下限報警功能。本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機at89s51,測溫傳感器使用ds18b20,用4位
2、共陰極led數(shù)碼管,實現(xiàn)溫度顯示,能準確達到以上要求。溫度計電路設計控制器采用單片機at89s51,具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產品的設計使用系統(tǒng)可用二節(jié)電池供電。溫度傳感器采用ds18b20,ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式,僅需要一個端口引腳進行通信,內部存儲器還包括一個高速暫存和一個非易失性的可電擦除的eeram。顯示電路采用4位共陰極led數(shù)碼管,采用led動
3、態(tài)顯示方式,從p1口輸出段碼,p2.0p2.3作為位選控制端。目錄1 概述 (4) 1.1 課程設計的要求 (4) 1.2課程設計的目的(4) 1.3 系統(tǒng)組成及工作原理(4)2 系統(tǒng)總體方案及硬件設計(5) 2.1設計思路及描述(5) 2.2硬件構成(5) 1主控模塊at89c51單片機(5) 2ds18b20介紹 (5) 2.3顯示模塊(9) 2.4開關控制電路模塊 (10)3 軟件設計 (11) 3.1主程序 (11) 3.2讀取溫度子程序 (11) 3.3溫度轉換命令子程序 (12)3.4計算溫度子程序(12)3.5溫度比較子程序(13)4 proteus軟件仿真(14)5 課程設計體
4、會 (17)參考文獻(17)附1:源程序代碼(18)附2:系統(tǒng)原理圖(33)1 概述1.1課程設計的要求1)基本范圍-501102)精度誤差小于0.53)led數(shù)碼直讀顯示4)擴展功能5)可以任意設定溫度的上下限報警功能1.2課程設計的目(1) 通過本次課程設計加深對單片機課程的全面認識復習和掌握,對單片機課程的應用進一步的了解。(2)掌握按鍵消抖的方法,led的動態(tài)顯示,ds18b20的使用和編程原理。(3)通過此次課程設計能夠將單片機軟硬件結合起來,對程序進行編輯,校驗。(4)掌握wave及proteus仿真軟件的使用方法。1.3 系統(tǒng)組成及工作原理本系統(tǒng)功能是由硬件和軟件兩大部分協(xié)調完成
5、的,硬件部分主要完成各種新號的采集和各種信息的顯示的;軟件主要完成信號的處理及控功能等?;诠ぷ髟硎?9c51單片機對按鈕的輸入信號的查詢和檢測,然后對輸入信號進行相應處理后通過led數(shù)碼管輸出。2 系統(tǒng)總體方案及硬件設計2.1設計思路及描述本實驗設計4個開關按鍵k1,k2,k3,k4:其中k2按鍵按下去時,進入報警上下限設置,按動k2,k3分別對報警上限和下限進行設置,增減由k1進行控制,當設置完畢后,按k4保存并退出。該實驗要求對環(huán)境溫度進行測量并在led上顯示數(shù)據(jù),則可利用at89c51芯片的p0.7-p0.0管腳對應了接數(shù)碼管的a,b,c,d,e,f,g和小數(shù)點位,p2.0p2.3接
6、顯示數(shù)據(jù)的小數(shù)位、個位、十位、百位(符號位),p3.4端口與ds18b20進行數(shù)據(jù)傳遞和通信端口,p3.7端口輸出報警信號。 2.2硬件構成 1主控模塊at89c51單片機功能特性描述 at89c51是一種低功耗、高性能cmos8位微控制器,具有8k 在系統(tǒng)可編程 flash存儲器。使用atmel公司高密度非易失性存儲器技術制造,與工業(yè)80c51 產品指令和引腳完全兼容。片上flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位cpu和在系統(tǒng)可編程flash,使得at89s52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 at89c51具有以下標準功能:
7、8k字節(jié)flash,256字節(jié)ram,32位i/o口線,看門狗定時器2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,at89s52可降至 0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。 p0口:p0口是一個8位漏極開路的雙向i/o口。作為輸出口,每位能驅動8個ttl邏輯電平。對p0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,p0口也被作為低8
8、位地址/數(shù)據(jù)復用。在這種模式下,p0具有內部上拉電阻。在flash編程時,p0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 p1口:p1口是一個具有內部上拉電阻的8位雙向i/o口,p1輸出緩沖器能驅動4個ttl邏輯電平。對p1端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(iil)。 p2口:p2口是一個具有內部上拉電阻的8位雙向 i/o口,p2 輸出緩沖器能驅動4個ttl邏輯電平。對p2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的
9、引腳由于內部電阻的原因,將輸出電流(iil)。 2ds18b20介紹 ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。ds18b20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個ds18b20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5v;零待機功耗;溫度以9或12位數(shù)字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性
10、接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;64位rom的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的crc檢驗碼,這也是多個ds18b20可以采用一線進行通信的原因。溫度報警觸發(fā)器th和tl,可通過軟件寫入戶報警上下限。ds18b20溫度傳感器的內部存儲器還包括一個高速暫存ram和一個非易失性的可電擦除的eeram。高速暫存ram的結構為8字節(jié)的存儲器,結構如圖3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)th和tl的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數(shù)字轉換分辨率。ds18b20
11、工作時寄存器中的分辨率轉換為相應精度的溫度數(shù)值。該字節(jié)各位的定義如圖1所示。低5位一直為1,tm是工作模式位,用于設置ds18b20在工作模式還是在測試模式,ds18b20出廠時該位被設置為0,用戶要去改動,r1和r0決定溫度轉換的精度位數(shù),來設置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crc 圖1 ds18b20字節(jié)定義高速暫存ram的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的crc碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當ds18b20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進
12、制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當符號位s0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位s1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表1是一部分溫度值對應的二進制溫度數(shù)據(jù)。ds18b20完成溫度轉換后,就把測得的溫度值與ram中的th、tl字節(jié)內容作比較。若th或ttl,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只ds18b20同時測量溫度并進行報警搜索。在64位rom的最高有效字節(jié)中存儲有循環(huán)冗
13、余檢驗碼(crc)。主機rom的前56位來計算crc值,并和存入ds18b20的crc值作比較,以判斷主機收到的rom數(shù)據(jù)是否正確。ds18b20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,ds18b20就對低溫度系數(shù)振蕩器產生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預置在
14、55所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。表1一部分溫度對應值表溫度/二進制表示十六進制表示+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250
15、000 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單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對ds18b20的各種操作按協(xié)議進行。操作協(xié)議為:初使化
16、ds18b20(發(fā)復位脈沖)發(fā)rom功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。rom操作命令指令說明讀rom命令(33h)讀18b20的序行號搜索rom命令(f0h)識別總線上各器件的編碼匹配rom命令(55h)用于多個ds18b20的定位跳過rom命令(cch)此命令執(zhí)行后,存儲器操作將針對總線上的所有操作報警搜索rom命令(ech)僅溫度超限的器件對此命令做出響應ram操作命令指令說明溫度轉換(44h)啟動溫度轉換讀暫存器(beh)讀全部暫存器內容,包括crc字節(jié)寫暫存器(4eh)寫暫存器第2,3和4個字節(jié)的數(shù)據(jù)復制暫存器(48eh)將暫存器中的th,tl和配置寄存器內容復制到eeprom中讀ee
17、prom(b8h)將th,tl和配置寄存器內容從eeprom中回讀至暫存器ds18b20的通信協(xié)議:ds18b20器件要求采用嚴格的通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號類型:復位脈沖,應答脈沖時隙;寫0,寫1時隙;讀0,讀1時隙。與ds18b20的通信,是通過操作時隙完成單總線上的數(shù)據(jù)傳輸。發(fā)送所有的命令和數(shù)據(jù)時,都是字節(jié)的低位在前,高位在后。復位和應答脈沖時隙每個通信周期起始于微控制器發(fā)出的復位脈沖,其后緊跟ds18b20發(fā)出的應答脈沖,在寫時隙期間,主機向ds18b20器件寫入數(shù)據(jù),而在讀時隙期間,主機讀入來自ds18b20的數(shù)據(jù)。在每一個時隙,總線只能傳輸一位數(shù)據(jù)。寫時隙當
18、主機將單總線dq從邏輯高拉為邏輯低時,即啟動一個寫時隙,所有的寫時隙必須在60120us完成,且在每個循環(huán)之間至少需要1us的恢復時間。寫0和寫1時隙如圖所示。在寫0時隙期間,微控制器在整個時隙中將總線拉低;而寫1時隙期間,微控制器將總線拉低,然后在時隙起始后15us之釋放總線。讀時隙 ds18b20器件僅在主機發(fā)出讀時隙時,才向主機傳輸數(shù)據(jù)。所以在主機發(fā)出讀數(shù)據(jù)命令后,必須馬上產生讀時隙,以便ds18b20能夠傳輸數(shù)據(jù)。所有的讀時隙至少需要60us,且在兩次獨立的讀時隙之間,至少需要1us的恢復時間。每個讀時隙都由主機發(fā)起,至少拉低總線1us。在主機發(fā)起讀時隙之后,ds18b20器件才開始在
19、總線上發(fā)送0或1,若ds18b20發(fā)送1,則保持總線為高電平。若發(fā)送為0,則拉低總線當發(fā)送0時,ds18b20在該時隙結束后,釋放總線,由上拉電阻將總線拉回至高電平狀態(tài)。ds18b20發(fā)出的數(shù)據(jù),在起始時隙之后保持有效時間為15us。因而主機在讀時隙期間,必須釋放總線。并且在時隙起始后的15us之內采樣總線的狀態(tài)。 2.3顯示模塊 顯示電路采用4位共陰極led數(shù)碼管,采用led動態(tài)顯示方式,從p1口輸出段碼,p2.0p2.3作為位選控制端。其中p1做輸出口時需要加上拉電阻。2.4開關控制電路模塊本模塊有四個按鍵來實現(xiàn)報警溫度的設置功能,當k2 鍵按下時,系統(tǒng)進入 報警溫度上下限調整程序,按動k
20、2可以實現(xiàn)對報警溫度上限th增一或減一,按動k3可以實現(xiàn)對報警溫度下限tl增一或減一,其加減由按動k1來控制,同時led顯示當前在調的報警溫度值,當調整完畢后,按k4鍵退出調整程序。3 軟件設計3.1主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理ds18b20的測量的當前溫度值,并與溫度報警上下限設定值進行比較,同時查詢k2是否按下進行報警溫度的設置,然后循環(huán)執(zhí)行。其程序流程見圖2所示。y發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗9字節(jié)完?crc校驗正?確?移入溫度暫存器結束nny 調用顯示子程序讀取溫度轉換溫度溫度顯示溫度比較按鍵檢測初始化圖2主程序流
21、程圖 圖3 讀取溫度流程圖 3.2讀取溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需進行crc校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3所示。3.3溫度轉換命令子程序溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如圖4所示發(fā)ds18b20復位命令發(fā)跳過rom命令發(fā)溫度轉換開始命令 結束圖4 溫度轉換流程圖3.4 計算溫度子程序計算溫度子程序將ram中讀取值進行bcd碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如下圖所示。 開始溫度零下?
22、溫度值取補碼置“”標志計算小數(shù)位溫度bcd值 計算整數(shù)位溫度bcd值 結束置“+”標志ny 3.5溫度比較 此程序是將實際溫度與設置的報警上下限比較,決定是否發(fā)出報警信號。由于t為實際溫度的絕對值,th、tl也是溫度的絕對值,因此判斷大小關系時要通過其正負符號來確定。4 proteus軟件仿真(1)在正常工作模式下,led顯示當前所測的實際溫度。如果所測溫度沒有超出報警溫度的上下限時,報警指示燈d1和蜂鳴器不動作;若超出所設置的報警上下限溫度,報警指示燈d1閃爍同時蜂鳴器發(fā)出報警聲響。(2)當k2 鍵按下時,系統(tǒng)進入 報警溫度上下限調整程序,按動k2可以實現(xiàn)對報警溫度th上限增一或減一,其加減
23、由按動k1來控制,同時led顯示當前的報警溫度上限值。(3)當系統(tǒng)進入報警上下限設置后,按k3鍵可以實現(xiàn)對報警溫度下限tl的增一或減一,其加減同樣由按動k1鍵來控制,同時led顯示當前的報警溫度下限值。5 課程設計體會經過一個學期的學習,我們對單片機已經有了初步的認識,對于它的基本組成和結構已經有了簡單的了解,這一周的課程設計讓我體會到很多東西,不僅僅是有關單片機基本知識的,更多的是自己動手能力和邏輯思維能力的鍛煉,同時,我更是知道了自己的不足,有好多東西是需要好好學習的。其實要做出來做好這個課程設計是不容易的,是要付出很多心思的。一開始我根本摸不著頭腦,也沒有什么想法,對四個題目都沒感覺,用
24、匯編根本編不出大程序,后來我還是決定做相對熟悉的c語言來編寫。于是,我就開始上網(wǎng),去學校圖書館查詢有關單片機的各種資料,每天一起來就是看書、查資料、編程、修改,寫程序用了幾天,還參考了好多參考書里設計實例的程序,加加減減的,還找同學指點,最后弄好了,可就是調試不出想要的結果,怎么找都找不到原因,最后還是與同學一起討論、查找,在他們的幫助和積極引導下,才找出問題,做出很大的修改解決了問題。還有就是畫圖和調試,真是一個很令人頭疼的事情,要照顧好多方面的,需要細心才行。 在社會工程實踐應用中,單片機開發(fā)系統(tǒng)的研制仍是一個熱門話題,所以我想還是有必要再好好學習以下單片機的,這對我們以后的工作應是有好處
25、的??傊@次課程設計讓我學會了很多,也收獲了很多,我想我是滿意的。從中我知道了任何事情都是從不懂到懂、從不熟練到熟練的過程,有問題并不可怕,關鍵是要找到方法去解決問題,思考、查資料、修改并勤于動手。最后,非常感謝在設計中給予過我?guī)椭睦蠋熀屯瑢W。參考文獻 1 余發(fā)山.單片機原理及應用技術.徐州:中國礦業(yè)大學出版社,20032 譚浩強.單片機課程設計. 北京:清華大學出版社,19893 何立民.單片機應用技術大全.北京:北京航空航天大學出版社, 19944 楊凌霄,微型計算機原理及應用.江蘇:中國礦業(yè)大學出版社,20045 張毅剛. 單片機原理及接口技術.哈爾濱:哈爾濱工業(yè)大學出版社,1990
26、6 李廣弟.單片機基礎.北京:北京航空航天大學出版社,1992附1:源程序代碼 temp_zh data 24h ;實時溫度值整合后存放單元 templ data 25h temph data 26h temp_th data 27h ;高溫報警值存放單元 temp_tl data 28h ;低溫報警值存放單元 temphh data 29h ;百位數(shù)bcd碼存放單元 temphl data 2ah ;十位數(shù)bcd碼存放單元 templh data 2bh ;個位數(shù)bcd碼存放單元 templl data 2ch ;小位數(shù)bcd碼存放單元 sign equ 20h.3 ;1=溫度為負,0=溫度
27、為正 k1 equ p1.4 k2 equ p1.5 k3 equ p1.6 k4 equ p1.7 beep equ p3.7 flag1 equ 20h.0 ;ds18b20是否存在/1存在,0不存在 dq equ p3.4;= org 0000h jmp mainmain: mov sp,#60h mov a,#00h mov r0,#20h ;將 20h-2fh 單元清零 mov r1,#10hclear: mov r0,a inc r0 djnz r1,clear lcall thtl_disp mov r1,#250mmm1: lcall delay djnz r1,mmm1sta
28、rt: call reset ;18b20復位子程序 jnb flag1,start1 ;ds1820不存在 call read_e2 ;從eerom拷貝thtl到暫存器 jmp start2start1: jmp $start2: clr beep call reset jnb flag1,start1 ;ds1820不存在 mov a,#0cch ; 跳過rom匹配 call write mov a,#44h ; 發(fā)出溫度轉換命令 call write call reset mov a,#0cch ; 跳過rom匹配 call write mov a,#0beh ; 發(fā)出讀溫度命令 cal
29、l write call read call conv_temp call led_disp call temp_comp call proc_k2 jmp start2;-;=;檢測是否有鍵按下;=proc_k2: ; 按鍵k2處理 jb k2,proc_end call delay jb k2,proc_end jnb k2,$ call bz55_127 mov 29h,#0bh ;h的bcd碼送百位 mov r4,temp_th lcall thtl_bcd lcall thtl_disp call set_alarm call re_18b20 ;將設定的th,tl值寫入ds18b2
30、0內 call write_e2proc_end: ret;-;變不在 -55-127 內的 th. tl 的為0;-bz55_127: mov r1,#temp_th mov r2,#2 bz1: clr c mov a,r1 subb a,#0b7h jc bz2 mov r1,#00h inc r1 djnz r2,bz1 bz2: ret;=;設定報警值 th、tl;=set_alarm: nopas_k1: jb k1,as0_k1 call delay jb k1,as0_k1 jnb k1,$ cpl 20h.1 ;up/down 標記as0_k1: jb 20h.1,up_th
31、 ;20h.1=1,up jmp down_th ;20h.1=0,downas_k4: lcall thtl_disp jb k4,as_k1 ;確定調整 ok call delay jb k4,as_k1 jnb k4,$ retup_th: jb k2,up_tl ;th值調整(增加) call delay jb k2,up_tl jnb k2,$ mov a,temp_th anl a,#80h jnz up_th1 inc temp_th mov a,temp_th cjne a,#128,th_disp ;th大于127轉零 mov temp_th,#0b7h jmp th_dis
32、pup_th1: dec temp_th mov a,temp_th cjne a,#128,th_disp ;th大于127轉零 mov temp_th,#00hth_disp: mov 29h,#0bh ;h的bcd碼送百位 mov r4,temp_th lcall thtl_bcd lcall thtl_disp jmp up_thup_tl : jb k3,as_k4 ;tl值調整(增加) call delay jb k3,as_k4 jnb k3,$ mov a,temp_tl anl a,#80h jnz up_tl01 inc temp_tl mov a,temp_tl cjne
33、 a,#128,tl_disp ;tl大于127轉零 mov temp_tl,#0b7h jmp tl_dispup_tl01: dec temp_tl mov a,temp_tl cjne a,#128,tl_disp mov temp_tl,#00htl_disp: mov 29h,#0ch ;l的bcd碼送百位 mov r4,temp_tl lcall thtl_bcd lcall thtl_disp jmp up_tldown_th: jb k2,asj02 ;th值調整 (減少) call delay jb k2,asj02 jnb k2,$ mov a,temp_th ;th為0,
34、應變?yōu)?1 anl a,#80h jnz down_th01 dec temp_th mov a,temp_th cjne a,#0ffh,asj011 mov a,#81h mov temp_th,a jmp asj011down_th01: inc temp_th mov a,temp_th cjne a,#0b8h,asj011 mov temp_th,#127asj011: mov 29h,#0bh ;h的bcd碼送百位 mov r4,temp_th lcall thtl_bcd lcall thtl_disp jmp down_thasj02: jb k3,asj03 ;tl值調整(
35、減少) call delay jb k3,asj03 jnb k3,$ mov a,temp_tl anl a,#80h jnz asj022 dec temp_tl mov a,temp_tl cjne a,#0ffh,asj021 mov temp_tl,#81h jmp asj021asj022: inc temp_tl mov a,temp_tl cjne a,#0b8h,asj021 mov temp_tl,#127asj021: mov 29h,#0ch ;l的bcd碼送百位 mov r4,temp_tl lcall thtl_bcd lcall thtl_disp jmp asj
36、02asj03: jmp as_k4 ret;=;th/tl分離bcd碼;=thtl_bcd: clr 20h.2 mov a,r4 ;十六進制- bcd anl a,#80h jz thtl_01 setb 20h.2 mov 2ah,#0ah ;負號的bcd碼 mov a,r4 anl a,#7fh mov b,#10 jmp thtl_02thtl_01: mov a,r4 mov b,#100 div ab mov 2ah,a ;百位數(shù)的bcd碼 mov a,#10 xch a,bthtl_02: div ab mov 2bh,a ;templh = 十位數(shù) bcd mov 2ch,b
37、 ;templl = 個位數(shù) bcd ret;=;將設定的th,tl值寫入ds18b20內;=re_18b20: jb flag1,re_18b20a retre_18b20a: call reset mov a,#0cch ;跳過rom匹配 lcall write mov a,#4eh ;寫暫存寄存器 lcall write mov a,temp_th ;th(報警上限) lcall write mov a,temp_tl ;tl(報警下限) lcall write mov a,#7fh ;12位精確度 lcall write ret;-write_e2: call reset mov a,#0cch ;跳過rom匹配 lcall write mov a,#48h ;把暫存器里的溫度報警值拷貝到eerom lcall write ret;-read_e2: call reset mov a,#0cch ;跳過rom匹配 lcall write mov a,#0b8h ;把eerom里的溫度報警值拷貝回暫存器 call write ret;=;實際溫度值與報警溫度比較;=temp_comp: jb sign,arm2 mov a,temp_th anl a,#80h jnz
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024門面施工現(xiàn)場管理及應急預案合同3篇
- 2024年貨物出口合同標的及出口規(guī)格
- 2024年社區(qū)羽毛球館租賃協(xié)議3篇
- 2024汽車租賃公司新能源車輛推廣合同
- 2024年限定版房產市場調研與營銷策劃服務協(xié)議版B版
- 2024年跨界合作居間協(xié)議書
- 2024年鐵路軌道焊接分包商協(xié)議
- 2025年度餐廳與旅行社聯(lián)合運營美食旅游項目合同3篇
- 2024版鐵路安全協(xié)議書
- 職業(yè)學院工會評優(yōu)評先實施辦法
- 2025年度愛讀書學長策劃的讀書講座系列合同2篇
- 廣東省深圳市寶安區(qū)2024-2025學年八年級英語上學期1月期末英語試卷(含答案)
- 《招標投標法》考試題庫200題(含答案)
- 《交通運輸行業(yè)安全生產監(jiān)督檢查工作指南 第2部分:道路運輸》
- 初二生物期末質量分析及整改措施
- 公交車站臺服務規(guī)范與安全意識
- 云南省楚雄彝族自治州2024屆高三上學期期末考試數(shù)學試題(解析版)
- 蘇州工業(yè)園區(qū)ESG發(fā)展白皮書
- 《安防攝像機智能化指標要求和評估方法》
- 慢阻肺護理個案病例范文
- 遼寧省工程咨詢集團有限責任公司 筆試 題庫
評論
0/150
提交評論