2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本 科 生 畢 業(yè) 論 文</p><p>  學(xué) 院 電氣信息工程學(xué)院 </p><p>  專 業(yè) 通信工程 </p><p>  屆 別 </p><p>  

2、題 目基于80C51單片機(jī)與DS18B20的溫度檢測(cè)軟件設(shè)計(jì) </p><p>  學(xué)生姓名 </p><p>  學(xué) 號(hào) </p><p>  指導(dǎo)教師 </p><p>

3、;  基于80C51單片機(jī)與DS18B20的溫度檢測(cè)軟件設(shè)計(jì)</p><p>  摘要:本次畢業(yè)設(shè)計(jì)是基于80C51單片機(jī)與DS18B20的溫度檢測(cè)軟件設(shè)計(jì)。以80C51單片機(jī)為核心,使用單總線溫度轉(zhuǎn)換芯片DS18B20實(shí)現(xiàn)溫度采集。我們的設(shè)計(jì)實(shí)驗(yàn)?zāi)康氖菍?duì)DS18B20進(jìn)行編程,了解其性能特點(diǎn),通過所學(xué)的C語言知識(shí)和相關(guān)資料提供的指令代碼完成單片機(jī)與DS18B20的溫度檢測(cè)。DS18B20 是一種智能溫度傳感器。

4、它能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。 使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。</p><p>  關(guān)鍵詞:溫度測(cè)量;微處理器控制;C語言</p><p>  Based on 80C51 microprocessor with DS18B20 </p><p>  temperature measure

5、ment </p><p>  Abstract:The graduation project is based on 80C51 microprocessor with DS18B20 temperature measurement .80C51 microprocessor as the core of it, the use of single-chip bus temperature

6、conversion temperature DS18B20 real-time acquisition. Our experimental purpose is programming to DS18B20 and understand its performance characteristics .The instruction code through the C language knowledge and relevant

7、information to complete the DS18B20 temperature measurements .DS18B20 is a smart temperature sens</p><p>  Key words: temperature measurement; microprocessor ;C language</p><p><b>  前 言

8、</b></p><p>  這次的畢業(yè)設(shè)計(jì)以虛擬環(huán)境下通過80C51單片機(jī)實(shí)現(xiàn)DS18B20芯片溫度測(cè)量為目標(biāo)。DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以連接很多這樣設(shè)備實(shí)現(xiàn)多路溫度測(cè)量和溫度報(bào)警。由于DS18B20采用的是1-Wire總線通信協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙

9、向傳輸,而對(duì)80C51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將80C51單片機(jī)作為主設(shè)備,單總線器件DS18B20作為從設(shè)備。而每一次命

10、令和數(shù)據(jù)的傳輸都是從主設(shè)備主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),則在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。可以說對(duì)DS18B20的編譯即是一個(gè)寫讀時(shí)隙的過程。</p><p>  我們的畢業(yè)設(shè)計(jì)目的是通過80C51單片機(jī)對(duì)DS18B20進(jìn)行編程,同時(shí)了解DS18B20的性能特點(diǎn),通過所學(xué)的C語言知識(shí)和相關(guān)資料提供的指令代碼完成基于80C51單片機(jī)與DS18B20的溫度檢測(cè)軟件設(shè)計(jì)。</p&g

11、t;<p><b>  目錄</b></p><p><b>  前 言1</b></p><p>  第一章 單片機(jī)介紹1</p><p>  1. 1 80C51 單片機(jī)的邏輯原理結(jié)構(gòu)1</p><p>  1.2 80C51單片機(jī)內(nèi)部結(jié)構(gòu)2</p>&l

12、t;p>  1.3 80C51引腳介紹3</p><p>  1.4 設(shè)計(jì)中所編譯的相關(guān)程序及系統(tǒng)框圖5</p><p>  第二章 DS18B20芯片介紹7</p><p>  2.1 DS18B20芯片特征7</p><p>  2.2 DS18B20內(nèi)部結(jié)構(gòu)7</p><p><b> 

13、 2.3硬件構(gòu)造8</b></p><p>  2.4 DS18B20引腳排列9</p><p>  2.5 DS18B20芯片各部分介紹9</p><p>  第三章 DS18B20代碼指令介紹及程序設(shè)計(jì)12</p><p>  3.1 DS18B20初始化13</p><p>  3.2 DS

14、18B20讀寫操作14</p><p>  3.3 ROM指令代碼17</p><p>  3.4 DS18B20功能指令18</p><p><b>  總 結(jié)21</b></p><p><b>  附錄23</b></p><p><b>  致

15、謝29</b></p><p><b>  第一章 單片機(jī)介紹</b></p><p>  本次畢業(yè)設(shè)計(jì)要使用到80C51單片機(jī)以及DS18B20溫度測(cè)量芯片。通過對(duì)80C51單片機(jī)進(jìn)行編程,從而控制DS18B20進(jìn)行溫度測(cè)量和溫度轉(zhuǎn)換。</p><p>  單片機(jī),亦稱單片微電腦或單片微型計(jì)算機(jī)。它是把中央處理器(CPU)、隨機(jī)

16、存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、輸入/輸出端口(I/0)等主要計(jì)算機(jī)功能部件都集成在一塊集成電路芯片上的微型計(jì)算機(jī)“【1】”。</p><p>  1. 1 80C51 單片機(jī)的邏輯原理結(jié)構(gòu)</p><p>  80C51單片機(jī)采用的是馮.諾伊曼提出的經(jīng)典計(jì)算機(jī)體系結(jié)構(gòu)框架,即一臺(tái)計(jì)算機(jī)是由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備共五個(gè)基本部分組成。MCS-51單片機(jī)在一塊芯

17、片上集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O口等。</p><p>  圖1.1 單片機(jī)的系統(tǒng)結(jié)構(gòu)框圖“[1]”</p><p>  由圖看出,單片機(jī)內(nèi)部主要包含下列幾個(gè)部件:</p><p>  ?       一個(gè)8位CPU; </p><p>  ? 

18、;      一個(gè)時(shí)鐘電路; </p><p>  ?       4KB程序存儲(chǔ)器; </p><p>  ?       128KB數(shù)據(jù)存儲(chǔ)器; </p><p>  ?  

19、     兩個(gè)16位定時(shí)/計(jì)數(shù)器; </p><p>  ?       64KB擴(kuò)展總線控制電路; </p><p>  ?       四個(gè)8-bit并行I/O端口; </p><p>  ? 

20、      一個(gè)可編程串行接口; </p><p>  ?       五個(gè)中斷源,其中包括兩個(gè)優(yōu)先級(jí)嵌套中斷。</p><p>  1.2 80C51單片機(jī)內(nèi)部結(jié)構(gòu) </p><p>  圖1.2 80C51內(nèi)部結(jié)構(gòu)圖“[2]”</p>&l

21、t;p><b>  1. CPU </b></p><p>  CPU即中央處理器的簡(jiǎn)稱,是單片機(jī)的核心部件,它完成各種運(yùn)算和控制操作,CPU由運(yùn)算器和控制器兩部分電路組成。 </p><p><b> ?。?)運(yùn)算器電路 </b></p><p>  運(yùn)算器電路包括ALU(算術(shù)邏輯單元)、ACC(累加器)、B寄存器

22、、狀態(tài)寄存器、暫存器1和暫存器2等部件,運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。運(yùn)算電路以ALU為核心單元,可以完成半字節(jié)、單字節(jié)以及多字節(jié)數(shù)據(jù)的運(yùn)算操作,其中包括加、減、乘、除等算術(shù)運(yùn)算以及與、或、異或、求補(bǔ)和循環(huán)等邏輯操作,運(yùn)算結(jié)果的狀態(tài)由狀態(tài)寄存器保存。 </p><p><b>  (2)控制器電路 </b></p><p>  控制器電路包括程序計(jì)數(shù)器PC、P

23、C加1寄存器、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、堆棧指針SP、緩沖器以及定時(shí)與控制電路等??刂齐娐吠瓿芍笓]控制工作,協(xié)調(diào)單片機(jī)各部分正常工作。程序計(jì)數(shù)器PC用來存放即將要執(zhí)行的指令地址,它可以完成64K的外部存儲(chǔ)器尋址,執(zhí)行指令時(shí),PC內(nèi)容的高8位經(jīng)P2口輸出,低8位經(jīng)P0口輸出。數(shù)據(jù)指針DPTR為16位數(shù)據(jù)指針,它可以對(duì)64K的外部數(shù)據(jù)存儲(chǔ)器和I/O口進(jìn)行尋址,它的低8位為DPL(地址82H),高8位為DPH(地址為83H)。

24、堆棧指針SP在片內(nèi)RAM(128字節(jié))中開辟棧區(qū),并隨時(shí)跟蹤棧頂?shù)刂?,它按先進(jìn)后出的原則存取數(shù)據(jù),上電復(fù)位后,SP指向07H。 </p><p>  1. 定時(shí)器/計(jì)數(shù)器 </p><p>  80C51單片機(jī)片內(nèi)有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,即定時(shí)器0和定時(shí)器1。它們可以用于定時(shí)控制、延時(shí)以及對(duì)外部事件的計(jì)數(shù)和檢測(cè)等。 </p><p><b>  2.

25、存儲(chǔ)器 </b></p><p>  80C51系列單片機(jī)的存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,其主要特點(diǎn)是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的尋址空間是相互獨(dú)立的,物理結(jié)構(gòu)也不相同。80C51有4個(gè)物理上相互獨(dú)立的存儲(chǔ)器空間:即內(nèi)、外程序存儲(chǔ)器和內(nèi)、外數(shù)據(jù)存儲(chǔ)器。對(duì)于8051其芯片中共有256個(gè)RAM單元,其中后128個(gè)單元被專用寄存器占用,只有前128個(gè)單元供用戶使用。 </p><p>

26、;  3. 并行I/O口 </p><p>  80C51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2和P3),每一條I/O線都能獨(dú)立地用作輸入或輸出。P0口為三態(tài)雙向口,能帶8個(gè)TTL門電路,P1、P2和P3口為準(zhǔn)雙向口,負(fù)載能力為4個(gè)TTL門電路。 </p><p>  4. 串行I/O口 </p><p>  80C51單片機(jī)具有一個(gè)采用通用異步工作方式的全

27、雙工串行通信接口,可以同時(shí)發(fā)送和接收數(shù)據(jù)。它具有兩個(gè)相互獨(dú)立的接收、發(fā)送數(shù)據(jù)緩沖器,兩個(gè)緩沖器共用一個(gè)地址(99H),發(fā)送緩沖器只能寫入,不能讀出,接收緩沖器只能讀出,不能寫入。 </p><p>  5. 中斷控制系統(tǒng) </p><p>  80C51單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。80C51共有5個(gè)中斷源,即外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè)。所有中斷分為高級(jí)和低

28、級(jí)兩個(gè)中斷優(yōu)先級(jí)。 </p><p><b>  6. 時(shí)鐘電路 </b></p><p>  80C51芯片內(nèi)部有時(shí)鐘電路,但晶體振蕩器和微調(diào)電容必須外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,振蕩器的頻率范圍為1.2MHz~12MHz,典型取值為6MHz。</p><p><b>  7. 總線 </b></p>

29、;<p>  以上所有組成部分都是通過總線連接起來,從而構(gòu)成一個(gè)完整的單片機(jī)。系統(tǒng)的地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)都是通過總線傳送的,總線結(jié)構(gòu)減少了單片機(jī)的連線和引腳,提高了集成度和可靠性。 </p><p>  1.3 80C51引腳介紹</p><p>  圖1.3 80C51引腳圖“[3]”</p><p><b>  VCC:供電電壓&

30、lt;/b></p><p><b>  GND:接地</b></p><p>  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在編程時(shí),P0 口作為原碼輸入口,當(dāng)進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</

31、p><p>  P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p>  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1

32、”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。</p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TT

33、L門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)當(dāng)8051通電,時(shí)鐘電路開始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧

34、指鐘寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài)。</p><p>  ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的

35、脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩

36、次有效的/PSEN信號(hào)將不出現(xiàn)。     EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在編程期間,此引腳也用于施加12V編程電源(VPP)。    </p><p>  

37、XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。    </p><p>  XTAL2:來自反向振蕩器的輸出。</p><p>  振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻

38、觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。</p><p>  芯片擦除:整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。</p><p>  此外,80C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏

39、輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止“[4]”。</p><p>  1.4 設(shè)計(jì)中所編譯的相關(guān)程序及系統(tǒng)框圖</p><p><b>  延時(shí)子程序:</b></p><p> 

40、 //---------------------------------------------------------</p><p>  //延時(shí)子程序 (Delay(2)約為延時(shí)1us)</p><p>  //---------------------------------------------------------</p><p>  void D

41、elay(long int milliseconds)</p><p><b>  {</b></p><p>  long int i;</p><p>  long int j;</p><p>  j =milliseconds;</p><p>  for(i = 0; i< j;

42、i ++)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  系統(tǒng)時(shí)鐘初始化設(shè)置:<

43、/p><p>  //---------------------------------------------------------</p><p>  //系統(tǒng)時(shí)鐘初始化設(shè)置</p><p>  //---------------------------------------------------------</p><p>  voi

44、d SYSCLK_Init (void) </p><p><b>  {</b></p><p>  int i; // Delay counter</p><p>  OSCXCN = 0x27; // start external oscillator with

45、 22.1184MHz crystal</p><p>  for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)</p><p>  OSCICN = 0x88;</p><p>  // select external oscillator as SYSCLK s

46、ource and enable missing clock detector</p><p><b>  return;</b></p><p><b>  }</b></p><p>  //---------------------------------------------------------</p&

47、gt;<p>  //看門狗初始化設(shè)置</p><p>  //---------------------------------------------------------</p><p>  void WATCH_Dog ()</p><p><b>  {</b></p><p>  WDTCN

48、= 0xde;</p><p>  WDTCN = 0xad;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  單片機(jī)I/O口初始化設(shè)置:</p><p>  //------------------------

49、---------------------------------</p><p>  //單片機(jī)I/O口初始化設(shè)置</p><p>  //---------------------------------------------------------</p><p>  void PORT_Init ()</p><p><b&g

50、t;  { </b></p><p>  XBR0 = 0x04; //TX0和RX0連到P0.0和P0.1</p><p>  XBR1 = 0x00;</p><p>  XBR2 = 0x40;</p><p>  P0MDOUT|=0xff; </p><p>  P1MDOU

51、T|=0xfd;//設(shè)置P1.1為輸入</p><p>  P2MDOUT|=0xff; </p><p>  P3MDOUT|=0xff;</p><p>  P74OUT|=0xff;</p><p><b>  return; </b></p><p><b>  }</

52、b></p><p><b>  ACC位定義:</b></p><p>  //--------------------------------------------------</p><p><b>  //ACC位定義</b></p><p>  //----------------

53、----------------------------------</p><p>  sbit ACC_0=ACC^0;//數(shù)據(jù)位</p><p>  sbit ACC_1=ACC^1;//數(shù)據(jù)位</p><p>  sbit ACC_2=ACC^2;//數(shù)據(jù)位</p><p>  sbit ACC_3=ACC^3;

54、//數(shù)據(jù)位</p><p>  sbit ACC_4=ACC^4;//數(shù)據(jù)位</p><p>  sbit ACC_5=ACC^5;//數(shù)據(jù)位</p><p>  sbit ACC_6=ACC^6;//數(shù)據(jù)位</p><p>  sbit ACC_7=ACC^7;//數(shù)據(jù)位</p><p> 

55、 第二章 DS18B20芯片介紹</p><p>  DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫(kù)測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝

56、形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域“[5]”。 </p><p>  2.1 DS18B20芯片特征</p><p>  DS18B20 單線數(shù)字溫度傳感器,即“一線器件”,其具有獨(dú)特的優(yōu)點(diǎn):</p><p> ?。?1 )采用單總線的接口方式 與微處理器連接時(shí) 僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通訊。 單總線具有經(jīng)濟(jì)性好,抗干

57、擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,使用方便等優(yōu)點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。</p><p> ?。?2 )測(cè)量溫度范圍寬,測(cè)量精度高 DS18B20 的測(cè)量范圍為 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范圍內(nèi),精度為 ± 0.5°C 。</p><p>  ( 3 )在使用中不需要任何外圍元件。&

58、lt;/p><p> ?。?4 )持多點(diǎn)組網(wǎng)功能 多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。</p><p>  ( 5 )供電方式靈活 DS18B20 可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源,從而 使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。</p><p> ?。?6 )測(cè)量參數(shù)可配置 DS18B20

59、的測(cè)量分辨率可通過程序設(shè)定 9~12 位。</p><p> ?。?7 )負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。</p><p> ?。?8 )掉電保護(hù)功能 DS18B20 內(nèi)部含有 EEPROM ,在系統(tǒng)掉電以后,它仍可保存分辨率及報(bào)警溫度的設(shè)定值。</p><p>  DS18B20 具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方

60、式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng),因此也就被設(shè)計(jì)者們所青睞。</p><p>  注:?jiǎn)慰偩€特點(diǎn)——單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。</p><p>  單總線通常要求外接一個(gè)約為 4.7K—10K 的上拉電阻,這樣,當(dāng)總線閑置時(shí)其狀態(tài)為高電平“[6]”。</p><p>  2.2 DS18B20內(nèi)部結(jié)構(gòu)<

61、/p><p>  主要由4部分組成:64 位ROM、溫度寄存器、溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作 是該DS18B20的地址序列碼,每個(gè)DS18B20的64位序列號(hào)均不相同。64位ROM的排的循環(huán)冗余校驗(yàn)碼(CRC=X^8+X^5+X^4+1)。 ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。</p&

62、gt;<p>  圖2.1 DS18B20內(nèi)部結(jié)構(gòu)圖</p><p><b>  2.3硬件構(gòu)造</b></p><p>  單總線系統(tǒng)只有一條定義的信號(hào)線。每一個(gè)總線上的器件必須是漏極開路或三態(tài)輸出。這樣的系統(tǒng)允許每一個(gè)掛在總線上的區(qū)間都能在適當(dāng)?shù)臅r(shí)間驅(qū)動(dòng)它。DS18B20的單總線端口(DQ引腳)是漏極開路式的,單總線需要一個(gè)約5KΩ的外部上拉電阻;單

63、總線的空閑狀態(tài)是高電平。無論任何理由需要暫停某一執(zhí)行過程時(shí),如果還想恢復(fù)執(zhí)行的畫,總線必須停留在空閑狀態(tài)。在恢復(fù)期間,如果單總線處于非活動(dòng)(高電平)狀態(tài),位與位間的恢復(fù)時(shí)間可以無限長(zhǎng)。如果總線停留在低電平超過480us,總線上的所有器件都將被復(fù)位。</p><p>  圖2.2 DS18B20硬件構(gòu)造圖“[7]”</p><p>  2.4 DS18B20引腳排列</p>&

64、lt;p>  圖2.3 DS18B20引腳排列圖“[8]”</p><p>  1. GND為電源 地;</p><p>  2. DQ為數(shù)字信號(hào)輸入/輸出端;</p><p>  3. VDD為外接供電電源輸入口;</p><p>  2.5 DS18B20芯片各部分介紹</p><p>  (1) 64

65、-BIT ROM AND 1-wire PORT</p><p>  每個(gè)DS18B20都有一個(gè)唯一儲(chǔ)存在ROM中的64位編碼。最前面8位是單線系列編碼:28h。接著的48位是一個(gè)唯一的序列號(hào)。最后8位是以上56位的CRC編碼。64位ROM和ROM操作控制區(qū)允許DS18B20作為單總線器件并按照單總線協(xié)議工作。</p><p>  64-BIT ROM AND 1-wire PORT<

66、;/p><p>  (2) SCRATCHPAD </p><p>  SCRATCHPAD有一個(gè)溫度寄存器,高低溫報(bào)警觸發(fā)器以及配置寄存器組成。當(dāng)報(bào)警功能不使用時(shí),TH和TL 寄存器可以被當(dāng)作普通寄存器使用。字節(jié)0和字節(jié)1為測(cè)得溫度信息的LSB和MSB。這兩個(gè)字節(jié)是只讀的。第2和第3字節(jié)是TH和TL的拷貝。位4 包含配置寄存器數(shù)據(jù),其被詳述于配置寄存器節(jié)。字節(jié)第5,6 和7位被器件保留,禁止

67、寫入;這些數(shù)據(jù)在讀回時(shí)全部表現(xiàn)為邏輯1。高速暫存器的位8是只讀的,包含以上八個(gè)字節(jié)的CRC碼,CRC的執(zhí)行方式如CRC發(fā)生器節(jié)所述。數(shù)據(jù)通過寫暫存器指令[4Eh]寫入高速暫存器的2,3和4位;數(shù)據(jù)必須以位2為最低有效位開始傳送。為了完整的驗(yàn)證數(shù)據(jù),高速暫存器能夠在數(shù)據(jù)寫入后被讀?。ㄊ褂米x暫存器指令[BEh])。在讀暫存器時(shí),數(shù)據(jù)以字節(jié)0為最低有效位從單總線移出??偩€控制器傳遞從暫存器到EEPROMTH,TL和配置數(shù)據(jù)必須發(fā)出拷貝暫存器指

68、令[48h]。EEPROM 寄存器中的數(shù)據(jù)在器件掉電時(shí)仍然保存;上電時(shí),數(shù)據(jù)被載入暫存器。數(shù)據(jù)也可以通過召回EEPROM命令從暫存器載入EEPROM。總線控制器在發(fā)出這條命令后發(fā)出讀時(shí)序,DS18B20返回0表示正在召回中,返回1表示操</p><p>  圖2.4 存儲(chǔ)器圖“[9]”</p><p><b>  (3) 配置寄存器</b></p>&l

69、t;p>  存儲(chǔ)器的第4位為配置寄存器。用戶可以通過按下圖所示設(shè)置R0和R1位來設(shè)定DS18B20的精度。上電默認(rèn)設(shè)置:R0=1,R1=1(12位精度)。</p><p>  注意:精度和轉(zhuǎn)換時(shí)間之間有直接的關(guān)系。暫存器的位7和位0-4被器件保留,禁止寫</p><p>  入;在讀回?cái)?shù)據(jù)時(shí),它們?nèi)勘憩F(xiàn)為邏輯1。</p><p>  圖2.5 配置寄存器組成

70、圖</p><p>  圖2.6 溫度計(jì)精確度配置圖</p><p><b> ?。?)CRC發(fā)生器</b></p><p>  CRC字節(jié)作為DS18B2064 位ROM的一部分存儲(chǔ)在存儲(chǔ)器中。CRC碼由ROM的前56</p><p>  位計(jì)算得到,被包含在ROM的重要字節(jié)當(dāng)中。CRC由存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)計(jì)算得到,

71、因此當(dāng)存儲(chǔ)器中的數(shù)據(jù)發(fā)生改變時(shí),CRC的值也隨之改變。CRC能夠在總線控制器讀DS18B20時(shí)進(jìn)行數(shù)據(jù)校驗(yàn)。為校驗(yàn)數(shù)據(jù)是否被正確讀取,總線控制器必須用接受到的數(shù)據(jù)計(jì)算出一個(gè)CRC 值,和存儲(chǔ)在DS18B20 的64 位ROM 中的值(讀ROM 時(shí))或DS18B20 內(nèi)部計(jì)算出的8 位CRC 值(讀存儲(chǔ)器時(shí))進(jìn)行比較。如果計(jì)算得到的CRC值和讀取出來的CRC值相吻合,數(shù)據(jù)被無錯(cuò)傳輸。CRC 值的比較以及是否進(jìn)行下一步操作完全由總線控制器決

72、定。</p><p>  DS18B20代碼指令介紹及程序設(shè)計(jì)</p><p>  通過單線總線端口訪問DS18B20的協(xié)議如下:</p><p><b>  步驟1. 初始化</b></p><p>  步驟2. ROM操作指令</p><p>  步驟3. DS18B20功能指令</p&

73、gt;<p>  每一次DS18B20的操作都必須滿足以上步驟,若是缺少步驟或是順序混亂,器件將不會(huì)返回值。</p><p><b>  程序設(shè)計(jì)流程圖:</b></p><p>  3.1 DS18B20初始化</p><p>  通過單總線的所有執(zhí)行操作處理都從一個(gè)初始化序列開始。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和

74、其后由從機(jī)發(fā)出的存在脈沖。存在脈沖讓總線控制器知道DS18B20在總線上且已準(zhǔn)備好操作。</p><p>  圖3.1 初始化時(shí)序圖“[10]”</p><p>  本次實(shí)驗(yàn)設(shè)計(jì)的初始化程序:</p><p>  //------------------------------------------------------------------------<

75、;/p><p><b>  //空操作</b></p><p>  //-------------------------------------------------------------------------</p><p>  void NOP(void)</p><p><b>  {</b&g

76、t;</p><p><b>  }</b></p><p>  //---------------------------------------------------------</p><p>  //向DS18B20發(fā)送RESET脈沖(低脈沖)</p><p>  //主機(jī)通過把TX拉低至少480us來發(fā)送RE

77、SET脈沖。</p><p>  //---------------------------------------------------------</p><p>  void DS18B20_RESET(void)</p><p><b>  {</b></p><p><b>  DQ=0;</

78、b></p><p>  Delay(1000); //拉低保持500us</p><p><b>  DQ=1;</b></p><p>  //發(fā)送完RESET脈沖后,主機(jī)等待15us至60us的時(shí)間以等待DS18B20回復(fù)PRESENCE信號(hào)。</p><p>  Delay(40);//等待約20us<

79、;/p><p><b>  return;</b></p><p><b>  }</b></p><p>  //---------------------------------------------------------</p><p>  //檢測(cè)DS18B20回應(yīng)的PRESENCE脈沖&l

80、t;/p><p>  //該低脈沖持續(xù)60us至240us的時(shí)間。</p><p>  //---------------------------------------------------------</p><p>  void DS18B20_PRESENCE(void)</p><p><b>  {</b>&l

81、t;/p><p>  while(DQ==1)//DS18B20仍然沒回應(yīng)PRESENCE信號(hào)</p><p><b>  {</b></p><p><b>  NOP();</b></p><p><b>  }</b></p><p>  while(

82、DQ==0)//DS18B20發(fā)送了PRESENCE信號(hào),該信號(hào)持續(xù)60us~240us</p><p><b>  {</b></p><p><b>  NOP();</b></p><p><b>  }</b></p><p><b>  return;<

83、;/b></p><p><b>  }</b></p><p>  3.2 DS18B20讀寫操作</p><p>  主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。</p><p

84、>  寫操作:寫周期最少為60微秒,最長(zhǎng)不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0“

85、[11]”。</p><p>  圖3.2 寫操作圖“[12]”</p><p><b>  寫操作程序:</b></p><p>  //---------------------------------------------------------</p><p>  //write "0" s

86、lot:每次調(diào)用后向DS18B20寫一次‘0’</p><p>  //---------------------------------------------------------</p><p>  void write_0(void)</p><p><b>  {</b></p><p>  DQ=0; /

87、/寫0時(shí)隙,必須拉低持續(xù)至少60us</p><p>  Delay(120); //維持60us</p><p>  DQ=1;//發(fā)送結(jié)束,單總線復(fù)位'1'</p><p><b>  NOP();</b></p><p><b>  NOP();</b></p>

88、<p><b>  NOP();</b></p><p><b>  NOP();</b></p><p><b>  NOP();</b></p><p><b>  NOP();</b></p><p><b>  return;&

89、lt;/b></p><p><b>  }</b></p><p>  //---------------------------------------------------------</p><p>  //write "1" slot:每次調(diào)用后向DS18B20寫一次‘1’</p><p

90、>  //---------------------------------------------------------</p><p>  void write_1(void)</p><p><b>  {</b></p><p>  DQ=0; //寫1時(shí)隙,拉低至少一個(gè)1us,然后必須于15us內(nèi)釋放</p>

91、<p>  Delay(2); //維持至少1us</p><p><b>  NOP();</b></p><p><b>  NOP();</b></p><p><b>  NOP();</b></p><p><b>  NOP();</b&g

92、t;</p><p><b>  NOP();</b></p><p><b>  NOP();</b></p><p>  DQ=1;//釋放總線為'1'</p><p>  Delay(120); //每個(gè)wirte/read時(shí)隙至少維持60us,寫1時(shí)隙中釋放總線后時(shí)間應(yīng)延遲(

93、60 - 1)uS以上</p><p><b>  return;</b></p><p><b>  }</b></p><p>  //---------------------------------------------------------</p><p>  //向DS18B20寫一

94、個(gè)字節(jié)的指令</p><p>  //---------------------------------------------------------</p><p>  void write_DS18B20(unsigned char Command) //該程序判斷發(fā)送每位時(shí),寫0還是寫1,然后調(diào)用相應(yīng)子程序</p><p><b>  {<

95、/b></p><p>  bit Write_Lsb=0;</p><p>  unsigned int i=0;</p><p>  //寫字節(jié)時(shí),從LSB位開始寫</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p>

96、<p>  Write_Lsb=Command^i;</p><p>  if(Write_Lsb==0)</p><p><b>  {</b></p><p>  write_0();</p><p><b>  }</b></p><p><b> 

97、 else</b></p><p><b>  {</b></p><p>  write_1();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return;<

98、/b></p><p><b>  }</b></p><p>  讀操作:讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平

99、。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過程,至少需要60us才能完成“[13]”。</p><p>  圖3.3 讀時(shí)隙圖“[14]”</p><p><b>  讀操作程序:</b></p>&l

100、t;p>  //---------------------------------------------------------</p><p>  //讀DS18B20:READ TIME SLOTS:每次調(diào)用后讀出一位</p><p>  //讀scratchpad時(shí),讀出的順序從字節(jié)0的LSB位開始</p><p>  //--------------

101、-------------------------------------------</p><p>  read_DS18B20_bit(void) </p><p><b>  {</b></p><p>  bit value;</p><p>  DQ=0; //讀時(shí)隙由主機(jī)拉低總線開始,持續(xù)至少1us并釋放

102、,然后在在之后的(15-1)us內(nèi)讀DS18B20的值</p><p>  Delay(2);//維持1us</p><p><b>  DQ=1;</b></p><p>  Delay(18);//延時(shí)9us,最佳讀數(shù)時(shí)間為"10~13uS"左右</p><p><b>  value=

103、DQ;</b></p><p>  Delay(120);//延時(shí)60us。每讀一位數(shù),需要延時(shí)一段時(shí)間,使整個(gè)read slot保證維持至少60us才能開始讀下一位信息</p><p>  return(value);</p><p><b>  }</b></p><p>  //------------

104、---------------------------------------------</p><p>  //讀DS18B20,每調(diào)用一次,讀出一個(gè)字節(jié)內(nèi)容</p><p>  //讀scratchpad時(shí),讀出的順序從字節(jié)0的LSB位開始</p><p>  //------------------------------------------------

105、---------</p><p>  read_DS18B20(void) </p><p><b>  {</b></p><p>  bit Read_Bit=0;</p><p>  unsigned int i=0;</p><p>  unsigned char Read_Byte=0

106、;</p><p>  unsigned char Temp_Byte=0;</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  Read_Bit=read_DS18B20_bit();</p><p>  Temp_Byte=T

107、emp_Byte|Read_Bit;</p><p>  Temp_Byte=Temp_Byte<<i; //右移</p><p>  Read_Byte=Read_Byte|Temp_Byte;//實(shí)現(xiàn)lsb到msb位順序讀出到一個(gè)字節(jié)</p><p><b>  }</b></p><p>  retu

108、rn(Read_Byte);</p><p><b>  }</b></p><p>  3.3 ROM指令代碼</p><p>  一旦總線控制器探測(cè)到一個(gè)存在脈沖,它就發(fā)出一條ROM指令。如果總線上掛有多只DS18B20,這些指令將基于器件獨(dú)有的64 位ROM 片序列碼使得總線控制器選出特定要進(jìn)行操作的器件。這些指令同樣也可以使總線控制器識(shí)

109、別有多少個(gè)什么型號(hào)的器件掛在總線上,同樣,它們也可以識(shí)別哪些器件已經(jīng)符合報(bào)警條件。ROM指令有5條,都是8 位長(zhǎng)度??偩€控制器在發(fā)起一條DS18B20功能指令之前必須先發(fā)出一條ROM指令。</p><p>  圖3.4 ROM功能指令圖</p><p>  3.4 DS18B20功能指令</p><p>  在總線控制器發(fā)給欲連接的DS18B20一條ROM命令后,跟

110、著可以發(fā)送一條DS18B20</p><p>  功能指令。這些命令允許總線控制器讀寫DS18B20的暫存器,發(fā)起溫度轉(zhuǎn)換和識(shí)別電源模式。</p><p>  其中溫度轉(zhuǎn)換:DS18B20中的溫度傳感器完成對(duì)溫度的測(cè)量,用16位二進(jìn)制形式提供,形式表達(dá),其中S為符號(hào)位。</p><p>  圖3.5 DS18B20溫度轉(zhuǎn)換圖</p><p>

111、  例如:+125℃的數(shù)字輸出為07D0H (正溫度 直接吧16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制即得到溫度值 )</p><p>  - 55℃的數(shù)字輸出為 FC90H。 (負(fù)溫度 把得到的16進(jìn)制數(shù) 取反后 加1 再轉(zhuǎn)成10進(jìn)制數(shù))</p><p>  設(shè)計(jì)中關(guān)于溫度轉(zhuǎn)換的程序:</p><p>  //------------------------------------

112、---------------------</p><p>  //第二次訪問DS18B20————讀取溫度值</p><p>  //---------------------------------------------------------</p><p>  DS18B20_RESET();</p><p>  DS18B20_P

113、RESENCE();</p><p>  //發(fā)送ROM指令:CCh:Skip ROM Command.</p><p>  Command=0xcc;</p><p>  write_DS18B20(Command);</p><p>  //發(fā)送功能指令:BEh:Read Scratchpad Command.</p>&

114、lt;p>  Command=0xbe;</p><p>  write_DS18B20(Command);</p><p>  //讀DS18B20返回的EEPROM中的內(nèi)容,順序從字節(jié)0的LSB位開始。(字節(jié)0和字節(jié)1中分別存儲(chǔ)了數(shù)字溫度值的低8位和高8位)</p><p>  //發(fā)送功能指令BEh后,DS18B20將連續(xù)送出9個(gè)字節(jié)的內(nèi)容,從字節(jié)0的L

115、SB位開始,</p><p>  //依次為Temperature LSB,Temperature MSB(P10),TH,TL,Config,FFh,OCh,10h,CRC。</p><p>  //在此,我們只需要讀兩次,即讀出數(shù)字溫度值的高低兩字節(jié)即可</p><p>  //主機(jī)可以在獲取了所需字節(jié)后,隨時(shí)以發(fā)送RESET脈沖來中止并開始下一次訪問。<

116、/p><p>  Temperature_Low=read_DS18B20();//讀出的為數(shù)字溫度的低字節(jié)內(nèi)容</p><p>  //存儲(chǔ)低字節(jié)的內(nèi)容</p><p>  Temperature_High=read_DS18B20();//讀出的為高字節(jié)的內(nèi)容</p><p>  //存儲(chǔ)高字節(jié)的內(nèi)容</p><p>

117、  //---------------------------------------------------------</p><p>  //將二進(jìn)制溫度轉(zhuǎn)換為十進(jìn)制溫度</p><p>  //忽略低字節(jié)的最后四位(小數(shù)部分),取整數(shù)部分的7位(不含符號(hào)位)至ACC各位中,以實(shí)現(xiàn)轉(zhuǎn)換</p><p>  //-------------------------

118、--------------------------------</p><p>  sign=Temperature_High^3;//取溫度符號(hào)位</p><p><b>  //溫度為正</b></p><p>  if(sign==0)</p><p><b>  {</b></p&g

119、t;<p>  ACC_0=Temperature_Low^4;</p><p>  ACC_1=Temperature_Low^5;</p><p>  ACC_2=Temperature_Low^6;</p><p>  ACC_3=Temperature_Low^7;</p><p>  ACC_4=Temperature

120、_High^0;</p><p>  ACC_5=Temperature_High^1;</p><p>  ACC_6=Temperature_High^2;</p><p>  ACC_7=0; //符號(hào)位為0</p><p>  Absolute_Temperature=ACC;</p><p><b>

121、;  }</b></p><p><b>  總 結(jié)</b></p><p>  經(jīng)過了兩個(gè)多月的學(xué)習(xí)和工作,我終于完成了《基于80C51單片機(jī)與DS18B20的溫度檢測(cè)軟件設(shè)計(jì)》的論文。從開始接到論文題目到系統(tǒng)的實(shí)現(xiàn),再到論文文章的完成,每走一步對(duì)我來說都是新的嘗試與挑戰(zhàn),這也是我在大學(xué)期間獨(dú)立完成的最大的項(xiàng)目。在這段時(shí)間里,我學(xué)到了很多知識(shí)也有很多感

122、受,從對(duì)DS18B20芯片的一無所知,溫度檢測(cè)等相關(guān)技術(shù)的不了解,我開始了獨(dú)立的學(xué)習(xí)和試驗(yàn),查看相關(guān)的資料和書籍,讓自己頭腦中模糊的概念逐漸清晰,使自己非常稚嫩作品一步步完善起來,每一次改進(jìn)都是我學(xué)習(xí)的收獲,每一次試驗(yàn)的成功都會(huì)讓我興奮好一段時(shí)間。通過這次的畢業(yè)設(shè)計(jì)我了解了DS18B20溫度控制芯片的工作原理和性能特點(diǎn),同時(shí)在運(yùn)用所學(xué)的C語言知識(shí)進(jìn)行實(shí)際編程的過程中也遇到許多問題,不過在老師及時(shí)幫助下最終克服了所有的困難。這次畢業(yè)設(shè)計(jì)于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論