




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄(一)設(shè)計內(nèi)容及要求2(二)系統(tǒng)的硬件選擇及設(shè)計32.1核心處理器的設(shè)計31、AT89C51引腳圖32、AT89C51引腳功能介紹32.2溫度采集電路的設(shè)計51、單線技術(shù)52、DS18B20的簡介63、DS18B20內(nèi)部結(jié)構(gòu)84、DS18B20測溫原理115、溫度采集電路122.3溫度顯示電路的設(shè)計131、LED數(shù)碼管的操作132、溫度顯示電路13(三)系統(tǒng)的軟件設(shè)計153.1概述153.2 DS18B20的單線協(xié)議和命令15(1)初始化15(2)ROM操作命令15(3)內(nèi)存操作命令163.3溫度采集程序流程圖的設(shè)計183.4溫度顯示程序流程圖的設(shè)計19(四) 結(jié)論19(五)匯編代碼20(
2、六)參考文獻27基于DS18B20的數(shù)字溫度計設(shè)計摘 要:在本設(shè)計中選用AT89C51型單片機作為主控制器件,采用DS18B20數(shù)字溫度傳感器作為測溫元件,通過兩位共陰極LED數(shù)碼顯示管并行傳送數(shù)據(jù),實現(xiàn)溫度顯示。本設(shè)計的內(nèi)容主要分為兩部分,一是對系統(tǒng)硬件部分的設(shè)計,包括溫度采集電路和顯示電路;二是對系統(tǒng)軟件部分的設(shè)計,應(yīng)用匯編語言實現(xiàn)溫度的采集與顯示。通過DS18B20直接讀取被測溫度值,送入單片機進行數(shù)據(jù)處理,之后進行輸出顯示,最終完成了數(shù)字溫度計的總體設(shè)計。其系統(tǒng)構(gòu)成簡單,信號采集效果好,數(shù)據(jù)處理速度快,便于實際檢測使用。關(guān)鍵詞:單片機AT89C51;溫度傳感器DS18B20;LED數(shù)碼
3、管;數(shù)字溫度計(一)設(shè)計內(nèi)容及要求本設(shè)計主要介紹了用單片機和數(shù)字溫度傳感器DS18B20相結(jié)合的方法來實現(xiàn)溫度的采集,以單片機AT89C51芯片為核心,輔以溫度傳感器DS18B20和LED數(shù)碼管及必要的外圍電路,構(gòu)成了一個多功能單片機數(shù)字溫度計。本次設(shè)計的主要思路是利用51系列單片機,數(shù)字溫度傳感器DS18B20和LED數(shù)碼顯示器,構(gòu)成實現(xiàn)溫度檢測與顯示的單片機控制系統(tǒng),即數(shù)字溫度計。通過對單片機編寫相應(yīng)的程序,達到能夠?qū)崟r檢測周圍溫度的目的。通過對本課題的設(shè)計能夠熟悉數(shù)字溫度計的工作原理及過程,了解各功能器件(單片機、DS18B20、LED)的基本原理與應(yīng)用,掌握各部分電路的硬件連線與程序編
4、寫,最終完成對數(shù)字溫度計的總體設(shè)計。其具體的要求如下:1、根據(jù)設(shè)計要求,選用AT89C51單片機為核心器件;2、溫度檢測器件采用DS18B20數(shù)字式溫度傳感器,利用單總線式連接方式與單片機的P2.2引腳相連;3、顯示電路采用兩位LED數(shù)碼管以串口并行輸出方式動態(tài)顯示。(二)系統(tǒng)的硬件選擇及設(shè)計2.1核心處理器的設(shè)計1、AT89C51引腳圖芯片AT89C51的引腳排列和邏輯符號如圖2.1 所示。圖2.1 AT89C51單片機引腳圖2、AT89C51引腳功能介紹單片機芯片AT89C51為40引腳雙列直插式封裝。本設(shè)計使用的其各個引腳功能介紹如下:(1) VCC:供電電壓;(2) GND:接地;(3
5、) P0口:一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。本設(shè)計中使用P0作為兩個共陰極LED數(shù)碼管的位選和段選輸出控制口,其中用到74HC573作為輸出鎖存,將段選和位選分開控制,由P2.7,P2.8開啟。電路圖如下:(4) P1口:一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口被拉為低電平時將輸出電流。本設(shè)計中只用到P1.0管腳,當所測量溫度超過預設(shè)報警溫度時點亮LED燈,其中用到74HC573作為輸出鎖存,由2.5開啟該鎖存器。電路圖如下:(5) P2口:一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。本設(shè)
6、計中使用P2.2管腳和DS18B20的管腳相連作為通信總線,AT89C51和DS18B20都能對該線電平拉高和拉低操作來進行通信,當電平為高時總線傳輸“”,當電平為低時總線傳輸“”;P2.7,P2.8開啟數(shù)碼管的位選和段選的P0口的鎖存;2.5開啟報警LED燈的P1口的鎖存。(6) RST:復位輸入端。當振蕩器復位時,要保持RST腳兩個機器周期的高電平時間。2.2溫度采集電路的設(shè)計1、單線技術(shù)該技術(shù)采用單根信號線,即可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸時是雙向的,因而這種單線技術(shù)具有線路簡單,硬件開銷少,成本低廉。便于擴展的優(yōu)點。單線技術(shù)適用以單主機系統(tǒng),單主機能夠控制一個或多個從機設(shè)備。主
7、機可以是微控制器,從機可以是單線器件,它們之間的數(shù)據(jù)交換,控制都由這根線完成。主機或從機通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能夠釋放線,而讓其它設(shè)備使用。單線通常要求外接一個約5k的上拉電阻,這樣,當該線閑置時,器件狀態(tài)為高電平。主機和從機之間的通信主要分為3個步驟:初始化單線器件,識別單線器件和單線數(shù)據(jù)傳輸。由于只有一根線通信,所以它們必須是嚴格的主從結(jié)構(gòu),只有主機呼叫從機時,從機才能應(yīng)答,主機訪問每個單線器件都必須嚴格遵循單線命令序列,從機遵守上述三個步驟的順序。如果命令序列混亂,單線器件將不會響應(yīng)主機。所有的單線器件都有遵循嚴格的協(xié)議,以保證數(shù)據(jù)的完整性。單線
8、協(xié)議有復位脈沖,其他均由主機發(fā)起,并且所有命令和數(shù)據(jù)都是字節(jié)的低位在前。2、DS18B20的簡介DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的”一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟。溫度測量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測溫分辨率可達0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20
9、通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。DS18B20 的性能特點如下:獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條總線即可實現(xiàn)微處理器與DS18B20的雙向通訊;DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫;DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電; 測溫范圍-55125,在-10+85時
10、精度為±0.5; 零待機功耗;可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫;在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快; 用戶可定義報警設(shè)置; 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力; 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作以上特點使DS18B20非常適用與多點、遠距離溫
11、度檢測系統(tǒng)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖2.4所示。其中,DQ 為數(shù)據(jù)輸入/輸出引腳,也可用作開漏單總線接口引腳,當被用在寄生電源工作方式下,可以向器件提供電源;GND為地信號;VDD為可選擇的電源引腳,當工作于寄生電源時,此引腳必須接地。其電路圖2.5所示。圖2.4 外部封裝形式圖2.5 傳感器電路圖3、DS18B20內(nèi)部結(jié)構(gòu)圖2.6為DS1820的內(nèi)部結(jié)構(gòu)框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM)
12、,用于存儲用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分。圖2.6 DS18B20內(nèi)部結(jié)構(gòu)框圖DS18B20采用3腳PR35封裝或8腳SOIC封裝。(1)64 bit閃速ROM的結(jié)構(gòu)如下:8bit 校驗CRC48bit 序列號8bit 工廠代碼(10H)MSB LSBMSB LSBMSB LSB開始的8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48 位,最后8位是前面56 位的CRC 檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。主機操作ROM的命令有五種,在軟件設(shè)
13、計時會提到。(2)高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器結(jié)構(gòu)如圖2.7所示。圖2.7 高速暫存RAM結(jié)構(gòu)圖其中,前2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。暫存存儲器的第5個字節(jié)是配置寄存器,可以通過相應(yīng)的寫命令進行配置,其內(nèi)容如下:0R1R0111111MSB LSB其中R0和R1是溫度值分辨率位,可按表2.3進行配置。表2.3溫度值分辨率配置表R1R0分辨率最大轉(zhuǎn)換時間(ms)009位93.75ms(tconv/8)
14、0110位183.50ms(tconv/4)1011位375ms(tconv/2)1112位750ms(tconv)當DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前、高位在后,數(shù)據(jù)格式以0.0625/LSB形式表示。溫度值格式如下:低232221202-12-22-32-4高SSSSS262524MSB LSB這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測
15、到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。格式中,S表示位。對應(yīng)的溫度計算:當符號位S=0時,表示測得的溫度植為正值,直接將二進制位轉(zhuǎn)換為十進制;當S=1時,表示測得的溫度植為負值,先將補碼變換為原碼,再計算十進制值。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH,-55的數(shù)字輸出為FC90H。DS18B20溫度傳感器主要用于對溫度進行測量,數(shù)據(jù)可用16位符號擴展的二進制補碼讀數(shù)形式提供,并以0.0625/LSB形式表示。表2.4是部分溫度值
16、對應(yīng)的二進制溫度表示數(shù)據(jù)。表2.4 部分溫度的二進制數(shù)表示溫度數(shù)字輸出(二進制)數(shù)字輸出(16進制)+12500000111 1101000007D0H+8500000101 010100000550H+25.062500000001 100100010191H+10.12500000000 1010001000A2H+0.500000000 000010000008H000000000 000000000000H-0.511111111 11111000FFF8H-10.12511111111 01011110FFE5H-25.062511111110 01101111FF6FH-55111
17、11100 10010000FC90H4、DS18B20測溫原理DS18B20的測溫原理如圖2.8所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在-55所對應(yīng)的一個基數(shù)值。圖2.8 DS18B20測溫原理圖減法
18、計數(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ù)值即為所測溫度。圖3.8中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關(guān)閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時間概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作
19、必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。5、 溫度采集電路設(shè)計的溫度采集電路如圖2.9所示。圖2.9 溫度采集電路圖2.3溫度顯示電路的設(shè)計1、LED數(shù)碼管的操作LED數(shù)碼管的基本組成是半導體發(fā)光二極管,它是將若干個發(fā)光二極管,按照一定的筆段組合起來構(gòu)成的一個整體。LED數(shù)碼管能顯示09十個數(shù)字及部份英文字母。常見的八段LED數(shù)碼管結(jié)構(gòu)如圖2.10所示。圖2.10 數(shù)碼管的內(nèi)部結(jié)構(gòu)它由8個發(fā)光二極管組成,其中7個長條形的發(fā)光二極管排列成”日”字形,另一個發(fā)光二極管在整個數(shù)碼管的右下角,用來顯示小數(shù)點。本設(shè)計采用共陰極LED數(shù)碼管,
20、8個發(fā)光二極管的陰極都連在一起的。加到各筆段對應(yīng)發(fā)光二極管陽極上的代碼不同,則就能控制LED數(shù)碼管顯示不同的字符和數(shù)字,這個代碼稱為段碼。通常將這個段碼用單片機系統(tǒng)中的一個字節(jié)進行存儲,正好這個字節(jié)中的8個二進制位(D7、D6、D5、D4、D3、D2、D1、D0),依次對應(yīng)LED數(shù)碼管的8個筆段dp、g、f、e、d、c、b、a。此外,選用多個數(shù)碼管還要注意位選問題,即先將某個數(shù)碼管點亮,再賦予相應(yīng)段碼;再點亮另一個數(shù)碼管,賦予新的段碼。2、溫度顯示電路顯示電路采用兩個共陰極LED數(shù)碼管顯示所測溫度的十位和各位,從P0口并行輸出溫度段碼和位選碼,通過兩個74HC57鎖存分開控制位選和段選,P2.
21、7和P2.8控制鎖存器的開啟。其具體電路圖如圖2.11所示。圖2.11 顯示電路 由于數(shù)碼管余輝效應(yīng)和人眼的視覺延遲,當數(shù)碼管每秒點亮50次時,就會出現(xiàn)靜止顯示的溫度值。(三)系統(tǒng)的軟件設(shè)計3.1概述軟件設(shè)計關(guān)鍵在于DS18B20的使用。DS18B20屬于單線式器件,它在一根數(shù)據(jù)線上實現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議,來對讀寫數(shù)據(jù)提出嚴格的時序要求,而AT89C51單片機并不支持單線傳輸,因此必須采用軟件的方法來模擬單線的協(xié)議時序。3.2DS18B20的單線協(xié)議和命令DS18B20有嚴格的通信協(xié)議來保證各為數(shù)據(jù)傳輸?shù)恼_性和完整性。主機操作單線器件DS18B20必須遵循下面的順序。(1)初
22、始化單線總線上的所有操作都是從初始化開始的。過程如下:1、請求主機通過拉低單線480us以上,產(chǎn)生復位脈沖,然后釋放該線,進入Rx接收模式。主機釋放總線時,會產(chǎn)生一個上升沿脈沖。DQ : 1 -> 0(480us+) -> 1 2、響應(yīng)DS18B20檢測到該上升沿后,延時1560us,通過拉低總線60240us來產(chǎn)生應(yīng)答脈沖。DQ: 1(1560us) -> 0(60240us)3、接收響應(yīng)主機接收到從機的應(yīng)答脈沖后,說明有單線器件在線。至此,初始化完成。DQ: 0(2)ROM操作命令當主機檢測到應(yīng)答脈沖,便可發(fā)起ROM操作命令。共有5類ROM操作命令,如表3.1
23、所示。表3.1 ROM操作命令指令類型命令字節(jié)功能說明Read Rom讀ROM33H讀取激光ROM中的64位,只能用于總線上單個DS18B20器件情況,多掛時會發(fā)生數(shù)據(jù)沖突;Match Rom匹配ROM55H此命令后跟64位ROM序列號,尋址多掛總線上的對應(yīng)DS18B20,只有序列號完全匹配的DS18B20才能響應(yīng)后面的內(nèi)存操作命令,其他不匹配的將等待復位脈沖,可用于單掛或多掛兩種情況;Skip Rom跳過ROMCCH可無須提供64位ROM序列號即可運行內(nèi)存操作命令,只能用于單掛;Search Rom搜索ROMF0H通過一個排除法過程,識別出總線上所有器件的ROM序列號;AlarmSearch
24、報警搜索ECH命令流程與Search Rom相同,但DS18B20只有最近的一次溫度測量時滿足了報警觸發(fā)條件的,才會響應(yīng)此命令。(3)內(nèi)存操作命令在成功執(zhí)行ROM操作命令后,才可使用內(nèi)存操作命令。共有6種內(nèi)存操作命令,如表3.2所示。表3.2 內(nèi)存操作命令指令類型命令字節(jié)功能說明Write Scratchpad寫暫存器4EH寫暫存器中地址2地址4的3個字節(jié)(TH,TL和配置寄存器)在發(fā)起復位脈沖之前,3個字節(jié)都必須要寫;Read Scratchpad讀暫存器BEH讀取暫存器內(nèi)容,從字節(jié)0一直到字節(jié)8,共9個字節(jié),主機可隨時發(fā)起復位脈沖,停止此操作,通常我們只需讀前5個字節(jié);Copy Scrat
25、chpad復制暫存器48H將暫存器中的內(nèi)容復制進EERAM,以便將溫度告警觸發(fā)字節(jié)存入非易失內(nèi)存,如果此命令后主機產(chǎn)生讀時隙,那么只要器件還在進行復制都會輸出0,復制完成后輸出1;Convert T 溫度轉(zhuǎn)換44H開始溫度轉(zhuǎn)換操作,若在此命令后主機產(chǎn)生時隙,那么只要器件還在進行溫度轉(zhuǎn)換就會輸出0,轉(zhuǎn)換完成后輸出1;Recall E2 重調(diào)E2暫存器B8H將存儲在EERAM中的溫度告警觸發(fā)值和配置寄存器值重新拷貝到暫存器中,此操作在DS18B20加電時自動產(chǎn)生;Read Power Supply讀供電方式B4H主機發(fā)起此命令后每個讀數(shù)時隙內(nèi),DS18B20會發(fā)信號通知它的供電
26、方式:0寄生電源,1外部供電。3.3溫度采集程序流程圖的設(shè)計開始初始化DS18B20應(yīng)答脈沖?發(fā)起Skip Rom命令發(fā)起Convert T 命令延時1s,等待溫度轉(zhuǎn)換完成初始化DS18B20應(yīng)答脈沖?發(fā)起Read Scratchapad命令讀取第1,2字節(jié)即為溫度數(shù)值NoNo圖3.4 溫度采集流程3.4溫度顯示程序流程圖的設(shè)計開始點亮所有數(shù)碼管選中LED1顯符號延遲選中LED2顯十位延遲選LED3顯個位延遲選LED4顯小數(shù)結(jié)束圖3.5 LED顯示流程圖(四) 結(jié)論本設(shè)計介紹了基于DS18B20的數(shù)字溫度計的工作原理及實現(xiàn)過程,我在這幾天的時間內(nèi)閱讀了有關(guān)數(shù)字溫度計原理及設(shè)計的相關(guān)資料,根據(jù)系
27、統(tǒng)所需的電路原理圖設(shè)計了實現(xiàn)采集與顯示功能的軟件程序,完成了基于DS18B20的數(shù)字溫度計的設(shè)計。設(shè)計中采用最常用的單片機AT89C51作為主控模塊,單總線數(shù)字溫度傳感器DS18B20用來測量溫度,溫度數(shù)據(jù)采用數(shù)碼管LED顯示。本設(shè)計的特點是構(gòu)成系統(tǒng)的硬件器件少,操作簡單,數(shù)據(jù)處理功能強。通過這次課程設(shè)計使我學習到了很多的東西,不僅加深了對專業(yè)知識的理解,而且更好地把理論知識與實踐相結(jié)合,提高了自身的動手能力和實踐水平,增強了學習單片機系統(tǒng)開發(fā)與設(shè)計的興趣。由于本人的知識有限,在本設(shè)計中不可避免存在一些不足之處,我會在以后的學習生活中不斷加以完善。相信本次設(shè)計的經(jīng)歷一定會在我今后的學習生活中產(chǎn)
28、生巨大的推動作用。(五)匯編代碼ORG 0000H TEMPER_H EQU 21H;用于保存讀出溫度的高8位 TEMPER_L EQU 20H;用于保存讀出溫度的低8位 TEMPER EQU 30H;用于保存讀出溫度的字節(jié) TEMPER_SET EQU 31H;設(shè)定溫度比較值,測量溫度小于該值,開LED燈 FLAG1 EQU 38H;是否檢測到DS18B20標志位 FLAG2 EQU 39H;是否完成溫度測量標志位MAIN:START0: LCALL GET_TEMPER WAIT: JB FLAG2,START1 AJMP WAITSTART1: MOV 28H,A MOV 29H,B C
29、LR FLAG2START2: MOV R2,28H MOV R3,29H LCALL DISPLAY;調(diào)用數(shù)碼管顯示子程序 AJMP START0; *DS18B20應(yīng)用入口子程序*GET_TEMPER: LCALL INIT_1820; JB FLAG1,TSS2 ;檢測到設(shè)備,標志位置1,跳至TSS2 RET ; 判斷DS1820是否存在,不存在則返回; *DS18B20初始化子程序*INIT_1820: SETB P2.2;先拉高總線 NOP CLR P2.2;拉低總線等待設(shè)備回應(yīng) MOV R1,#3;主機發(fā)出延時537微秒的復位低脈沖TSR1: MOV R0,#107 DJNZ R0
30、,$ DJNZ R1,TSR1 ;延時107*3個時鐘 SETB P2.2;然后再拉高數(shù)據(jù)線,等待設(shè)備回應(yīng) NOP NOP NOP MOV R0,#25H;等待設(shè)備回應(yīng)延時TSR2: JNB P2.2,TSR3;若總線為低,有回應(yīng),跳至TSR3,否則等待 DJNZ R0,TSR2 LJMP TSR4 ; 延時后還是沒收到回應(yīng),跳至TSR4TSR3: SETB FLAG1 ; 置標志位,表示DS1820存在 LJMP TSR5TSR4: CLR FLAG1 ; 清標志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#117 ;檢測到設(shè)備TSR6: DJNZ R0,TSR6
31、 ;時序要求延時一段時間TSR7: SETB P3.5 ;未檢測到設(shè)備,拉高總線RET*初始化完畢檢測到設(shè)備,溫度測控主程序*TSS2: MOV A,#0CCH ; 跳過ROM匹配,通過總線0011_0011寫值 LCALL WRITE_1820 MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令,通過總線0010_0010寫值 LCALL WRITE_1820 LCALL INIT_1820;準備讀溫度前先復位 MOV A,#0CCH ; 跳過ROM匹配,通過總線0011_0011寫值 LCALL WRITE_1820 MOV A,#0BEH ; 發(fā)出讀溫度命令,通過總線0111_1101寫值 LC
32、ALL WRITE_1820 LCALL READ_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36H,此時A的值為0111_1100,7CH LCALL CHECK SETB FLAG2 RET;*寫DS18B20的子程序(有具體的時序要求)*WRITE_1820: MOV R2,#8;一共8位數(shù)據(jù),循環(huán)右移,C的值賦給總線 CLR CWR1: CLR P2.2 ;拉低總線 MOV R3,#6 DJNZ R3,$ RRC A ;帶上進位C循環(huán)右移,A=0CCH(跳過ROM匹配),A=44H(溫度轉(zhuǎn)換),;A=0BEH(讀溫度請求) MOV P2.2,C ;右循環(huán)將控制字從低位依次通過C賦給總
33、線 MOV R3,#23 DJNZ R3,$ SETB P2.2;重新老高總線 NOP DJNZ R2,WR1 ;循環(huán),將8位控制字通過總線寫給設(shè)備 SETB P2.2;拉高總線RET; *讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)*READ_18200: MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出 MOV R1,#20H ; 先低位存入20H(TEMPER_L),后高位存入21H(TEMPER_H)RE00: MOV R2,#8;數(shù)據(jù)一共有8位RE01: CLR C SETB P2.2 NOP NOP CLR P2.2 NOP NOP NOP SETB P2.2 ;總線先控制為1->0->1 MOV R3,#9RE10: DJNZ R3,RE10; R3的值先等待9時鐘 MOV C,P2.2;將總線值讀到C里,通過總線將8位數(shù)據(jù)通過C傳送到A里 MOV R3,#23RE20: DJNZ R3,RE20;R3的值后等待23時鐘 RRC A ;A和C右循環(huán)8次,總線將8位數(shù)據(jù)通過C傳送到A里 DJ
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30186:2025 EN Digital twin - Maturity model and guidance for a maturity assessment
- 廣東高一 上數(shù)學試卷
- 廣西第一次高考數(shù)學試卷
- 江門七年級下冊數(shù)學試卷
- 2025年中國輕質(zhì)磚行業(yè)市場運行現(xiàn)狀及投資戰(zhàn)略研究報告
- 中國復方龍膽碳酸氫鈉行業(yè)調(diào)查報告
- 中國液體硅酸鈉行業(yè)調(diào)查報告
- 農(nóng)業(yè)產(chǎn)業(yè)發(fā)展園基礎(chǔ)設(shè)施建設(shè)工程可行性研究報告
- 低空空域數(shù)字化管理前沿技術(shù)與實踐
- 健康活動賽龍舟課件視頻
- 建設(shè)項目使用林地可行性報告
- 新安全生產(chǎn)法2025全文
- 河北省2025年中考數(shù)學真題試卷(含答案)
- 感恩地球活動方案
- 福建福州金山中學2024~2025學年高一下冊期末考試數(shù)學試題含解析
- 2025年中國共產(chǎn)黨支部工作條例(試行)暨黨支部建設(shè)標準化工作知識競賽考試試題(綜合題庫)(含答案)
- 2025年廣東省高考生物真題(解析版)
- 2024年哈爾濱市道里區(qū)執(zhí)法輔助人員招聘考試真題
- 學堂在線 研究生的壓力應(yīng)對與健康心理 期末考試答案
- 2025年7月自考13811績效管理試題及答案含解析
- 2025年江蘇省揚州樹人學校七年級英語第二學期期末綜合測試試題含答案
評論
0/150
提交評論