《單片機(jī)應(yīng)用實(shí)訓(xùn)教程》課件第2章_第1頁(yè)
《單片機(jī)應(yīng)用實(shí)訓(xùn)教程》課件第2章_第2頁(yè)
《單片機(jī)應(yīng)用實(shí)訓(xùn)教程》課件第2章_第3頁(yè)
《單片機(jī)應(yīng)用實(shí)訓(xùn)教程》課件第2章_第4頁(yè)
《單片機(jī)應(yīng)用實(shí)訓(xùn)教程》課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩225頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章MCS-51單片機(jī)綜合應(yīng)用實(shí)訓(xùn)實(shí)訓(xùn)2.1單片機(jī)多功能實(shí)訓(xùn)電路的設(shè)計(jì)與測(cè)試實(shí)訓(xùn)2.2單片機(jī)溫度控制器的設(shè)計(jì)與調(diào)試實(shí)訓(xùn)2.3單片機(jī)步進(jìn)電機(jī)控制器的設(shè)計(jì)與調(diào)試

實(shí)訓(xùn)2.4接觸式IC卡讀寫器的設(shè)計(jì)與調(diào)試

實(shí)訓(xùn)2.1單片機(jī)多功能實(shí)訓(xùn)電路的設(shè)計(jì)與測(cè)試

1.實(shí)訓(xùn)目的

(1)了解單片機(jī)應(yīng)用系統(tǒng)的基本組成,通過(guò)分析多功能實(shí)訓(xùn)電路的組成,熟練掌握單片機(jī)實(shí)訓(xùn)電路的工作原理、各部分的連接方式與完成功能。

(2)掌握對(duì)硬件電路進(jìn)行測(cè)試的基本方法,掌握測(cè)試程序的設(shè)計(jì)要領(lǐng)。

2.實(shí)訓(xùn)設(shè)備與器件實(shí)訓(xùn)設(shè)備:?jiǎn)纹瑱C(jī)集成開(kāi)發(fā)環(huán)境、多功能實(shí)訓(xùn)電路板。

3.項(xiàng)目設(shè)計(jì)要求完成基于MCS-51單片機(jī)的多功能實(shí)訓(xùn)電路,包括8個(gè)發(fā)光二極管模擬信號(hào)燈的顯示、RAM/ROM擴(kuò)展電路、LED數(shù)碼顯示、鍵盤電路、模/數(shù)轉(zhuǎn)換電路以及與PC機(jī)的接口電路。

4.實(shí)訓(xùn)內(nèi)容

1)硬件設(shè)計(jì)單片機(jī)實(shí)訓(xùn)電路主要為教學(xué)配套使用,因此在電路設(shè)計(jì)上盡量全面,基本包括了單片機(jī)系統(tǒng)的所有部分,以完成各個(gè)實(shí)訓(xùn)項(xiàng)目。在該電路板中,核心器件是8031單片機(jī)芯片,外部擴(kuò)展了一片EPROM2764、一片RAM6264、一片EEPROM2864A、一片8155、一片ADC0809和MAX232等,這些主要芯片的功能如下所述。

(1)EPROM2764:紫外線可擦除、電可編程的只讀存儲(chǔ)器,通常用于存放編制好的程序和常數(shù)表格。(2)RAM6264:靜態(tài)隨機(jī)存儲(chǔ)器,通常用于存放采集到的原始數(shù)據(jù)、處理中的數(shù)據(jù)及最后的結(jié)果。

(3)EEPROM2864A:電可擦除、電可編程的只讀存儲(chǔ)器。它是近年來(lái)被廣泛使用的一種只讀存儲(chǔ)器。其主要優(yōu)點(diǎn)是能在應(yīng)用系統(tǒng)中進(jìn)行在線改寫,并能在斷電情況下保存數(shù)據(jù)而不需要保護(hù)電源。它兼有程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器的特點(diǎn)。

(4)8155A:一種可編程的RAM和I/O接口芯片,本實(shí)訓(xùn)系統(tǒng)主要用它來(lái)作擴(kuò)展鍵盤和數(shù)碼管顯示的接口。(5)ADC0809:一種8路模擬輸入的8位逐次逼近式A/D轉(zhuǎn)換器件。

(6)MAX232:標(biāo)準(zhǔn)的串行口電平轉(zhuǎn)換器,用來(lái)將單片機(jī)和PC機(jī)聯(lián)系起來(lái)。為了方便實(shí)訓(xùn),在單片機(jī)P1口連接了8個(gè)發(fā)光二極管,同時(shí)將常用的I/O口、外部中斷、定時(shí)器輸入脈沖等引出,具體電路連接參見(jiàn)書末附圖。圖2.1.1多功能實(shí)訓(xùn)電路板2)測(cè)試程序

(1)電路制作完成后,要通過(guò)程序測(cè)試系統(tǒng)各部分是否正常工作。要求本實(shí)訓(xùn)電路的測(cè)試程序運(yùn)行后,首先點(diǎn)亮P1口連接的8個(gè)二極管,以確定電路能否正常工作;再運(yùn)行鍵盤程序以按鍵查詢。每個(gè)按鍵完成相應(yīng)電路的檢測(cè),具體分配如下:

0#~B#鍵:檢測(cè)對(duì)應(yīng)按鍵是否連接正常,P1口的8個(gè)發(fā)光二極管顯示鍵號(hào)。

C#鍵:檢測(cè)6264的連接,低4位的4個(gè)二極管點(diǎn)亮。

D#鍵:檢測(cè)2864的連接,高4位的4個(gè)二極管點(diǎn)亮。

E#鍵:檢測(cè)8155連接的LED,8個(gè)LED全部顯示8。

F#鍵:檢測(cè)ADC0809的連接,改變電阻R25,LED顯示結(jié)果連續(xù)變化。(2)測(cè)試程序流程圖如圖2.1.2所示。圖2.1.2測(cè)試程序流程圖(3)源程序。根據(jù)上述思路,編寫源程序如下:

ORG 0000H AJMP MAIN PORT EQU 4400H PORTA EQU 4401H PORTB EQU 4402H PORTC EQU 4403H BUFFO EQU 20H BUFF1 EQU 21H;*************************主程序*******************************

ORG 0100HMAIN:MOV SP,#50H MOV DPTR,#PORT ;8155初始化

MOV A,#03H MOVX @DPTR,A MOV P1,#00H ;點(diǎn)亮8個(gè)二極管START:LCALL KEYTEST ;調(diào)用鍵入測(cè)試程序

JNZ RETEST SJMP START ;無(wú)鍵按下,返回測(cè)試,鍵入KEYRETEST:LCALL DELAYLCALL KEYTESTJNZ KEDATA ;若無(wú)抖動(dòng)則查鍵號(hào),否則返回KEYSJMP STARTKEDATA:LCALL SERCH ;調(diào)用鍵號(hào)測(cè)試程序TEST: CJNE A,#0CH,PR01 AJMP KEY0CPR01: CJNE A,#0DH,PR02 AJMP KEY0DPR02: CJNE A,#0EH,PR03 AJMP KEY0EPR03: CJNE A,#0FH,KEY0toB AJMP KEY0F KEY0toB:MOVP1,A ;0#~B#鍵,鍵號(hào)直接送P1口顯示

AJMP STARTKEY0C: MOV A,#0F0H ;C#鍵,檢測(cè)6264 MOV DPTR,#1000H MOVX @DPTR,A MOV A,@DPTR ;對(duì)1000H單元傳送數(shù)據(jù)

MOV P1,A ;點(diǎn)亮低4位二極管

AJMP START KEY0D: MOV A,#0FH ;D#鍵,檢測(cè)2864 MOV DPTR,#3000H MOVX @DPTR,A LCALL DELAY ;調(diào)用延時(shí),等待2864寫入數(shù)據(jù)

MOV A,@DPTR ;對(duì)3000H單元傳送數(shù)據(jù)

MOV P1,A ;點(diǎn)亮高4位二極管

AJMP STARTKEY0E:MOV DPTR,#PORTA ;E#鍵,檢測(cè)8155連接的LED MOV A,#00H MOVX @DPTR,A ;8個(gè)LED全部選中

INC DPTR MOV A,#0FFH MOVX @DPTR,A ;所有段顯示

AJMP STARTKEY0F: ;F#鍵檢測(cè)A/D轉(zhuǎn)換芯片

MOV BUFF0,#00H ;顯示緩沖區(qū)清0 MOV BUFF1,#00HSTAR:MOV DPTR,#6000H ;選中0809通道0 MOV A,#00H MOVX @DPTR,A ;啟動(dòng)A/D轉(zhuǎn)換WAIT:JB P3.3,WAIT ;查詢轉(zhuǎn)換是否結(jié)束

MOVX A,@DPTR ;取轉(zhuǎn)換結(jié)果到A累加器

LCALL SEPR ;調(diào)用拆字子程序

LCALL DISP ;調(diào)用顯示子程序

AJMP STAR ;重新啟動(dòng)轉(zhuǎn)換;*************************拆字子程序SEPR****************************;功能:將一個(gè)8位二進(jìn)制數(shù)的高、低4位拆開(kāi),分別存入兩個(gè)單元;入口參數(shù):A累加器存放待拆分?jǐn)?shù)據(jù);出口參數(shù):內(nèi)部RAM的BUFF0單元存放低4位數(shù)據(jù);BUFF1單元存放高4位數(shù)據(jù)SEPR: ;略,詳見(jiàn)第1章實(shí)訓(xùn)1.5…RET;************************顯示子程序DISP**************************;功能:在最后兩位數(shù)碼管顯示數(shù)字(十六進(jìn)制);入口參數(shù):內(nèi)部RAM的BUFF0、BUFF1單元,分別存放待顯示的兩個(gè)數(shù)字DISP: ;略,詳見(jiàn)第1章實(shí)訓(xùn)1.5 RET;************************鍵入測(cè)試子程序KEYTEST******************;功能:掃描鍵盤,查詢有無(wú)鍵按下;出口參數(shù):累加器A,A=0表示無(wú)鍵按下,A≠0表示有鍵按下KEYTEST:;略,詳見(jiàn)第1章實(shí)訓(xùn)1.2RET……;************************鍵號(hào)測(cè)試程序SEARCH*********************;功能:求按鍵的鍵號(hào);出口參數(shù):累加器A中存放鍵號(hào)00H~0FHSEARCH: ;略,詳見(jiàn)第1章實(shí)訓(xùn)1.2

RET;***********************延時(shí)子程序DELAY**********************DELAY:MOV R4,#0FDH ;延時(shí)子程序TM0: MOV R5,#0AHTM1: NOP NOP DJNZ R5,TM1 DJNZ R4,TM0 RET END…

5.調(diào)試步驟

(1)與仿真器連接好,加電,觀察電路板電源指示燈是否正常。

(2)輸入源程序,匯編糾錯(cuò)。

(3)全速運(yùn)行程序,觀察8個(gè)二極管是否點(diǎn)亮,以確定電路能否工作。

(4)依次按下16個(gè)鍵,觀察是否顯示正確,有問(wèn)題時(shí)檢查對(duì)應(yīng)硬件電路,排除電路故障。

6.實(shí)訓(xùn)分析與總結(jié)

1)時(shí)鐘和復(fù)位電路時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),單片機(jī)本身就如一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在惟一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。在MCS-51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,這就是單片機(jī)的時(shí)鐘電路,如圖2.1.3所示。圖2.1.3時(shí)鐘振蕩電路

一般電容C1和C2取30pF左右,晶體的振蕩頻率范圍是1.2~12MHz,若晶體振蕩頻率高,則系統(tǒng)的時(shí)鐘頻率也高,單片機(jī)運(yùn)行速度也就快。MCS-51在通常應(yīng)用的情況下,使用振蕩頻率為6MHz、11.0592MHz或12MHz。在本電路中選用11.0592MHz的晶振。單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,sPC=0000H,使單片機(jī)從第一個(gè)單元取指令。無(wú)論是在單片機(jī)剛開(kāi)始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。復(fù)位信號(hào)通過(guò)單片機(jī)的第9個(gè)引腳RESET接入,常見(jiàn)的是上電復(fù)位和按鍵復(fù)位電路,如圖2.1.4所示。圖2.1.4單片機(jī)復(fù)位電路(a)上電復(fù)位電路;(b)按鍵復(fù)位電路2)P1口的應(yīng)用在實(shí)訓(xùn)電路中,P1通過(guò)反相器74LS240連接了8個(gè)發(fā)光二極管,此時(shí)P1口作為輸出口,可以用8個(gè)二極管來(lái)模擬各種信號(hào),以完成各種應(yīng)用程序,例如第1章實(shí)訓(xùn)1.2中的交通燈控制器。在測(cè)試程序中,首先對(duì)這部分進(jìn)行了試驗(yàn)。3)片外存儲(chǔ)器的擴(kuò)展片外存儲(chǔ)器的擴(kuò)展主要分為數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器。當(dāng)單片機(jī)片內(nèi)RAM容量不夠時(shí),需要擴(kuò)展數(shù)據(jù)存儲(chǔ)器,往往采用RAM或電可擦除的EEPROM芯片來(lái)完成;當(dāng)單片機(jī)程序容量較大,片內(nèi)ROM容量不夠或片內(nèi)無(wú)ROM時(shí),需要擴(kuò)展程序存儲(chǔ)器,往往采用EPROM等芯片來(lái)完成。二者擴(kuò)展的最大容量都為64K。無(wú)論RAM還是ROM擴(kuò)展,在與MCS-51單片機(jī)連接時(shí)都要接好3個(gè)總線:

(1)地址總線AB:由單片機(jī)的P0口和P2口提供,P0口通過(guò)鎖存器(一般采用74LS373)連接到存儲(chǔ)器芯片的低8位地址,P2口直接一一對(duì)應(yīng)地連接高8位地址。(2)數(shù)據(jù)總線DB:MCS-51系列單片機(jī)是8位機(jī),所以數(shù)據(jù)線只有8根,片外存儲(chǔ)器也只能使用8位存儲(chǔ)器。單片機(jī)P0口的8根口線作為擴(kuò)展時(shí)的數(shù)據(jù)總線,直接連接到所擴(kuò)展芯片的數(shù)據(jù)線上。

(3)控制總線CB:對(duì)于RAM和ROM,控制線是不同的。對(duì)于ROM擴(kuò)展,將單片機(jī)的PSEN信號(hào)接到ROM的讀選通信號(hào)OE上;對(duì)于片外RAM擴(kuò)展,需分別將單片機(jī)的和WR信號(hào)分別連接到RAM的讀、寫控制信號(hào)上。除此以外,存儲(chǔ)器芯片片選信號(hào)的連接也至關(guān)重要,它決定了擴(kuò)展芯片的地址范圍,片選信號(hào)一般都由P2口剩余的口線通過(guò)譯碼器輸出而得。根據(jù)上述幾個(gè)關(guān)鍵點(diǎn),在實(shí)訓(xùn)板中,我們這樣設(shè)計(jì)了數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器的擴(kuò)展,如圖2.1.5所示。圖2.1.5RAM和ROM擴(kuò)展

在擴(kuò)展電路中,作為數(shù)據(jù)存儲(chǔ)器的是RAM6264和EEPROM2864,擴(kuò)展容量一共是16K。作為程序存儲(chǔ)器的是EPROM2764,擴(kuò)展容量是8K。3個(gè)芯片的片選線CE由譯碼器74LS138的輸出決定,74LS138在整個(gè)實(shí)訓(xùn)電路中的作用都是選通地址,在8155、ADC0809中也用到了74LS138的輸出,請(qǐng)讀者注意分析。根據(jù)圖2.1.5的連接關(guān)系,可確定各芯片的地址范圍如下:因此,數(shù)據(jù)存儲(chǔ)器的地址范圍為6264:0000H~1FFFH2864:2000H~3FFFH程序存儲(chǔ)器的地址范圍為

2764:0000H~1FFFH

在測(cè)試程序中,通過(guò)對(duì)6264的1000H單元以及2864的3000H單元傳送數(shù)據(jù)并顯示,以確定這部分電路是否正常。4)可編程接口芯片8155的擴(kuò)展

51系列單片機(jī)內(nèi)部有4個(gè)雙向的并行I/O端口P0~P3,在無(wú)片外存儲(chǔ)器擴(kuò)展的系統(tǒng)中,這4個(gè)端口都可以作為準(zhǔn)雙向通用I/O口使用。在具有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,通過(guò)上述分析我們知道,P0口分時(shí)地作為低8位地址線和數(shù)據(jù)線,P2口作為高8位地址線,這時(shí),P0口和部分或全部的P2口無(wú)法再作通用I/O口了。P3口具有第二功能,在應(yīng)用系統(tǒng)中也常被使用。因此在大多數(shù)的應(yīng)用系統(tǒng)中,真正能夠提供給用戶使用的只有P1口和部分P2、P3口。所以,MCS-51單片機(jī)的I/O端口通常需要擴(kuò)充,以便和更多的外設(shè)(如顯示器、鍵盤)進(jìn)行聯(lián)系。表2.1.1地址分配圖2.1.68155接口電路根據(jù)圖2.1.6中的的連接關(guān)系,可以確定地址如下:

此時(shí),8155內(nèi)部RAM的地址范圍為4000H~40FFH,8155各端口的地址為(設(shè)無(wú)關(guān)位為0,這些地址都不是惟一的):命令/狀態(tài)口 4400HA口 4401HB口 4402HC口 4403H定時(shí)器低字節(jié) 4404H定時(shí)器高字節(jié) 4405H5)顯示和鍵盤電路在單片機(jī)應(yīng)用系統(tǒng)中,常見(jiàn)的顯示器有LED和LCD,關(guān)于LCD的應(yīng)用在實(shí)訓(xùn)1.3中已有介紹。這里只介紹LED和單片機(jī)的接口方法,LED在單片機(jī)應(yīng)用中有兩種顯示方式:靜態(tài)顯示和動(dòng)態(tài)顯示。由于動(dòng)態(tài)顯示占用的資源少,所以被廣泛使用。鍵盤常見(jiàn)的有獨(dú)立鍵盤和行列式鍵盤,當(dāng)按鍵數(shù)量少時(shí),通常采用獨(dú)立鍵盤;當(dāng)按鍵數(shù)較多時(shí),獨(dú)立鍵盤占用的I/O口線多,因此采用行列式鍵盤電路。在實(shí)際應(yīng)用中,常常把鍵盤和顯示電路做在一起,構(gòu)成實(shí)用的顯示鍵盤電路,圖2.1.7即為通過(guò)8155連接實(shí)現(xiàn)的一種顯示和鍵盤接口電路。圖2.1.7顯示和鍵盤電路

圖2.1.7接有8個(gè)共陰極數(shù)碼管、16個(gè)按鍵。8個(gè)數(shù)碼管的各相同段分別連接在一起,點(diǎn)亮各段的段選碼由8155的PB口輸出提供,每個(gè)數(shù)碼管的位選碼由8155的PA口輸出提供。同時(shí),PA口的輸出又作為行列式鍵盤的列線,供鍵盤逐列掃描時(shí)使用,鍵盤的行線由8155的PC口輸入電平。因此,可以看出,可編程I/O口芯片81553個(gè)端口的功能應(yīng)為:A、B口輸出,C口輸入,在對(duì)8155進(jìn)行初始化時(shí)一定要注意。實(shí)訓(xùn)中的初始化語(yǔ)句為:MOV DPTR,#4400H ;選中8155命令寄存器MOV A,#03HMOVX@DPTR,A ;寫入命令字6)A/D轉(zhuǎn)換接口電路

A/D轉(zhuǎn)換器用于實(shí)現(xiàn)模擬量→數(shù)字量的轉(zhuǎn)換,在本實(shí)訓(xùn)電路中連接了A/D轉(zhuǎn)換芯片ADC0809,該芯片可實(shí)現(xiàn)8路模擬信號(hào)的分時(shí)采集。電路板中ADC0809與8051單片機(jī)的連接關(guān)系以及分析使用在第1章的實(shí)訓(xùn)1.5中已介紹,此處不再贅述。

7)串行通信接口在實(shí)際應(yīng)用領(lǐng)域,通常需要PC機(jī)和單片機(jī)之間進(jìn)行通信,關(guān)于二者之間的通信原理、電路設(shè)計(jì)和應(yīng)用編程,在第1章的實(shí)訓(xùn)1.6中作者已進(jìn)行了詳細(xì)的分析,讀者可參考使用。該多功能實(shí)訓(xùn)電路板直接引用其連接方法。

7.思考題

(1)單片機(jī)時(shí)鐘電路和復(fù)位電路的作用是什么?

(2)74LS138的作用是什么?

(3)請(qǐng)仔細(xì)查看電路原理圖分析單片機(jī)、的連接,總結(jié)哪些外部器件需連接這些信號(hào)。

(4)在電路中,信號(hào)和ALE的作用是什么?

(5)若在電路中連接液晶LCD,需怎樣實(shí)現(xiàn)?請(qǐng)畫出示意圖。

(6)如果在電路中增加D/A轉(zhuǎn)換器件,如何實(shí)現(xiàn)?請(qǐng)選擇器件并畫出與單片機(jī)的連接原理圖。實(shí)訓(xùn)2.2單片機(jī)溫度控制器的設(shè)計(jì)與調(diào)試

1.實(shí)訓(xùn)目的

(1)掌握單線數(shù)字溫度傳感器DS18B20的測(cè)量原理、特性以及在溫度測(cè)量中的硬件和軟件設(shè)計(jì)。

(2)掌握運(yùn)用開(kāi)發(fā)系統(tǒng)調(diào)試溫控系統(tǒng)應(yīng)用程序的基本方法。

2.實(shí)訓(xùn)設(shè)備與器件實(shí)訓(xùn)設(shè)備:?jiǎn)纹瑱C(jī)集成開(kāi)發(fā)環(huán)境、綜合實(shí)訓(xùn)板、溫控接口板。

3.項(xiàng)目設(shè)計(jì)要求用MCS-51單片機(jī)設(shè)計(jì)一個(gè)溫控系統(tǒng)。要求具有對(duì)環(huán)境溫度進(jìn)行實(shí)時(shí)測(cè)量,當(dāng)外界溫度高于設(shè)定最高溫度時(shí),啟動(dòng)風(fēng)扇降溫;當(dāng)外界溫度低于指定最低溫度時(shí),將發(fā)出報(bào)警聲。

4.實(shí)訓(xùn)內(nèi)容設(shè)計(jì)要求:設(shè)計(jì)一個(gè)溫控系統(tǒng),用二位LED數(shù)碼管顯示測(cè)量的實(shí)時(shí)溫度,可以設(shè)定最高限報(bào)警溫度值和最低限報(bào)警溫度值。1)硬件設(shè)計(jì)溫度測(cè)量采用最新的單線數(shù)字溫度傳感器DS18B20,DS18B20是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來(lái)源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無(wú)需額外電源。因而,使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。降溫控制系統(tǒng)采用低壓直流電風(fēng)扇。當(dāng)溫度高于設(shè)定最高限溫度時(shí),啟動(dòng)風(fēng)扇降溫,當(dāng)溫度降到指定最高限溫度以下后,風(fēng)扇自動(dòng)停止運(yùn)轉(zhuǎn)。

溫控系統(tǒng)的溫度顯示和溫度的設(shè)定直接采用綜合實(shí)訓(xùn)板上的顯示和鍵盤。當(dāng)環(huán)境溫度低于設(shè)定的最低限溫度值時(shí),也采用綜合實(shí)訓(xùn)板上的蜂鳴器進(jìn)行報(bào)警。用0#、1#鍵作為溫度最高限、最低限的設(shè)定功能鍵;2#、3#鍵作為溫度值設(shè)定的增加和減小功能鍵。

0#鍵:作為最高限溫度的設(shè)定功能鍵。按一次進(jìn)入最高限溫度設(shè)定狀態(tài),選擇最高限溫度值后,再按一次確認(rèn)設(shè)定完成。

1#鍵:作為最低限溫度的設(shè)定功能鍵。按一次進(jìn)入最低限溫度設(shè)定狀態(tài),選擇最低限溫度值后,再按一次確認(rèn)設(shè)定完成。

2#鍵:+1功能鍵,每按一次將溫度值加1,范圍為1~99℃。

3#鍵:-1功能鍵,每按一次將溫度值減1,范圍為99~1℃。圖2.2.1溫控系統(tǒng)硬件接線原理圖2)軟件設(shè)計(jì)

(1)溫控系統(tǒng)采用模塊化程序結(jié)構(gòu),可以分成以下程序模塊:①系統(tǒng)初始化程序:首先完成變量的設(shè)定、中斷入口的設(shè)定、堆棧、輸入輸出口及外部部件的初始化工作。②主程序MAIN:完成鍵盤掃描、溫度值采集及轉(zhuǎn)換、溫度值的顯示。當(dāng)溫度值高于設(shè)定最高限時(shí),驅(qū)動(dòng)風(fēng)扇工作;當(dāng)溫度值低于設(shè)定最低限時(shí),驅(qū)動(dòng)蜂鳴器報(bào)警。③鍵盤掃描程序KEYSCAN:完成鍵盤的掃描并根據(jù)確定的鍵值執(zhí)行相應(yīng)的功能,主要完成最高溫度、最低溫度的設(shè)定。④溫度采集程序GET_TEMPER:完成DS18B20的初始化并發(fā)出溫度轉(zhuǎn)換命令,經(jīng)過(guò)指定時(shí)間后讀取轉(zhuǎn)換的溫度值。根據(jù)DS18B20的通信協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求CPU將數(shù)據(jù)線下拉500μs,然后釋放。DS18B20收到信號(hào)后等待16~60μs左右,后發(fā)出60~240μs的存在低脈沖,CPU收到此信號(hào)表示復(fù)位成功。⑤溫度轉(zhuǎn)換程序TEMPER_COV:根據(jù)精度要求對(duì)采集到的溫度值進(jìn)行處理并轉(zhuǎn)換成便于顯示的BCD碼值。⑥顯示子程序DISPLAY:顯示實(shí)時(shí)溫度及設(shè)定溫度值。⑦DS18B20初始化子程序INIT_1820:DS18B20在工作之前必須按照指定的要求完成初始化工作,否則無(wú)法正常工作。⑧DS18B20讀寫子程序WRITE_1820、READ_1820、READ_1820T完成對(duì)18B20的讀寫功能,其中,READ_1820從DS18B20中讀出一個(gè)字節(jié)的數(shù)據(jù),READ_1820T從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù)。⑨延時(shí)程序DELAY、DELAY1滿足18B20要求的延時(shí)間隔及程序中的延時(shí)功能。(2)軟件流程框圖分別如圖2.2.2、2.2.3、2.2.4、2.2.5和2.2.6所示。圖2.2.2主程序流程圖圖2.2.3DS18B20初始化程序流程圖圖2.2.4鍵盤掃描子程序圖2.2.5DS18B20寫入子程序圖2.2.6DS18B20讀取子程序(3)下面給出參考程序。;晶振:12MHz;HIG_TMP EQU 32H ;設(shè)定的最高溫度值LOW_TMP EQU 33H ;設(shè)定的最低溫度值NUB_VAL EQU 34H ;加1、減1的暫存值TEMPER_H EQU 36H ;采集到溫度值的低位TEMPER_L EQU 35H ;采集到溫度值的高位TEMPER_NUM EQU 30H;PORT EQU 4400H ;8155口地址PORTA EQU 4401H ;8155A口地址PORTB EQU 4402H ;8155B口地址PORTC EQU 4403H ;8155C口地址;FLAG1 BIT 00H ;18B20初始化完成標(biāo)志KEY_MK BIT 08H ;鍵盤按下標(biāo)志KEY_HMK BIT 09H ;S1鍵按下標(biāo)志KEY_LMK BIT 0AH ;S2鍵按下標(biāo)志DISP_MK BIT 0BH;溫度設(shè)定狀態(tài)標(biāo)志DQ BIT P1.1;

ORG 0000H AJMP START

ORG 0030HSTART:

MOV SP,#60H ;設(shè)置堆棧值

MOV IE,#00H MOV TCON,#00H MOV TMOD,#10H MOV DPTR,#PORT ;初始化8155口,A、B輸出C輸入

MOV A,#43H MOVX @DPTR,A SETB DQ SETB P1.2 MOV R0,#20H MOV R1,#20H MOV A,#00HSTART_1:

MOV @R0,A INC R0 DJNZ R1,START_1START_2:

CLR P1.0 CLR P1.2 MOV HIG_TMP,#30H ;初始高溫限值設(shè)為30℃ MOV LOW_TMP,#20H ;初始低溫限值設(shè)為20℃

;

ACALL RE_CONFIG NOP ACALL INIT_1820 JNB FLAG1,START_2MAIN:

ACALL KEY_SCAN JB KEY_LMK,MAIN1 JB KEY_HMK,MAIN1 ACALL GET_TEMPER ;采集溫度值

ACALL TEMPER_COV ;溫度值轉(zhuǎn)換MAIN1:

ACALL DISPLAY MOV A,TEMPER_NUM CJNE A,HIG_TMP,MAIN2 CLR CMAIN2:

JC MAIN3 SETB P1.2 ;啟動(dòng)風(fēng)扇

AJMP MAINMAIN3:

CJNE A,LOW_TMP,MAIN4 CLR CMAIN4:

JNC MAIN5 SETB P1.0 ;啟動(dòng)報(bào)警器

AJMP MAINMAIN5:

CLR P1.0 CLR P1.2 AJMP MAIN NOP;讀出轉(zhuǎn)換后的溫度值GET_TEMPER:

SETB DQ ;定時(shí)入口GET_TMP1:

LCALLINIT_1820 ;第一步,完成對(duì)18B20初始化

JB FLAG1,GET_TMP2 LJMP GET_TMP1 ;若DS18B20不存在,則繼續(xù)初始化GET_TMP2:

LCALLDELAY1 ;延時(shí)80μs MOV A,#0CCH ;第二步,ROM命令,跳過(guò)ROM匹配——0CC LCALLWRITE_1820

;

MOV A,#44H ;第三步,功能命令,發(fā)出溫度轉(zhuǎn)換命令

LCALLWRITE_1820GET_TMP5:

NOP LCALLDISP3 CLR DQ NOP NOP SETB DQ ;釋放數(shù)據(jù)線

MOV R3,#4 ;延時(shí)14μs DJNZ R3,$ CLR C MOV C,DQ JNC GET_TMP5GET_TMP3:

LCALL INIT_1820 ;第一步,對(duì)18B20初始化

JB FLAG1,GET_TMP4 LJMP GET_TMP3GET_TMP4:

LCALLDELAY1 MOV A,#0CCH ;第二步,ROM命令,跳過(guò)ROM匹配

LCALLWRITE_1820 MOV A,#0BEH ;第三步,功能命令,發(fā)出讀溫度命令

LCALLWRITE_1820

LCALLREAD_1820;READ_1820 RET;寫DS18B20的程序WRITE_1820:

MOV R2,#8 CLR CWRITE1: CLR DQ MOV R3,#7 ;延時(shí)14μs DJNZ R3,$ RRC A MOV DQ,C MOV R3,#21 ;延時(shí)45μs DJNZ R3,$ SETB DQ NOP DJNZ R2,WRITE1 SETB DQ RET;讀DS18B20的程序,從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù)READ_1820:

MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出

MOV R1,#35H ;低位存入35H,高位存入36HREAD0:

MOV R2,#8 MOV A,#00HREAD1:

CLR C ;讀取一位數(shù)需要70μs SETB DQ NOP NOP CLR DQ ;保持1μs以上的低電平

NOP NOP SETB DQ ;釋放數(shù)據(jù)線

MOV R3,#3 ;延時(shí)7μs,必須在15μs內(nèi)讀取數(shù)據(jù)DJNZ R3,$ MOV C,DQ RRC A MOV R3,#26 ;延時(shí)53μs DJNZ R3,$ DJNZ R2,READ1 MOV @R1,A INC R1 DJNZ R4,READ0 SETB DQ ;用RESET來(lái)終止數(shù)據(jù)讀取

NOP NOP CLR DQ ACALL DELAY1 ;延時(shí)80μs SETB DQ RET;將從DS18B20中讀出的溫度數(shù)據(jù)進(jìn)行轉(zhuǎn)換TEMPER_COV:

MOV A,TEMPER_H CJNE A,#0F8H,TEMPER_COV1 CLR CTEMPER_COV1:

JC TEMPER_COV2 CPL A MOV TEMPER_H,A MOV A,TEMPER_L CPL A ADD A,#01H MOV TEMPER_L,ATEMPER_COV2:

MOV A,TEMPER_L;舍去溫度低位中小數(shù)點(diǎn)后的四位溫度數(shù)值

ANL A,#0F0H SWAP A MOV TEMPER_NUM,ATEMPER_COV3:

MOV A,TEMPER_H ANL A,#07H SWAP A ORL A,TEMPER_NUM MOV TEMPER_NUM,A;保存變換后的溫度數(shù)據(jù)

LCALL BIN_BCD RET;將十六進(jìn)制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼BIN_BCD:

MOV DPTR,#TEMP_TAB MOV A,TEMPER_NUM MOVC A,@A+DPTR MOV TEMPER_NUM,A RETTEMP_TAB:

DB 00H,01H,02H,03H,04H,05H,06H,07H DB 08H,09H,10H,11H,12H,13H,14H,15H DB 16H,17H,18H,19H,20H,21H,22H,23H DB 24H,25H,26H,27H,28H,29H,30H,31H DB 32H,33H,34H,35H,36H,37H,38H,39H DB 40H,41H,42H,43H,44H,45H,46H,47H DB 48H,49H,50H,51H,52H,53H,54H,55H DB 56H,57H,58H,59H,60H,61H,62H,63H DB 64H,65H,66H,67H,68H,69H,70H,71H DB 72H,73H,74H,75H,76H,77H,78H,79H DB 80H,81H,82H,83H,84H,85H,86H,87H DB 88H,89H,90H,91H,92H,93H,94H,95H DB 96H,97H,98H,99H;鍵盤掃描程序KEY_SCAN:

MOV DPTR,#PORTB MOV A,#00H MOVX @DPTR,A

; MOV DPTR,#PORTA ;第一列為低電平

MOV A,#0FEH MOVX @DPTR,A NOP MOV DPTR,#PORTC MOVX A,@DPTR CPL A ANL A,#0FH ;屏蔽高4位

CJNE A,#00H,KEY_0 CLR KEY_MKKEY_E:

RETKEY_0:

JB KEY_MK,KEY_E SETB KEY_MK MOV R6,#4FH ACALL DEL1

;

JNB ACC.0,KEY_1 ;S1是否被按下

JB KEY_LMK,KEY_E ;

JB KEY_HMK,KEY_0_1 ;S1是否已經(jīng)執(zhí)行過(guò)

SETB KEY_HMK ;沒(méi)有,則設(shè)置已經(jīng)執(zhí)行過(guò)標(biāo)志

SETB DISP_MK MOV NUB_VAL,HIG_TMP ACALLDISPLAY AJMP KEY_4KEY_0_1:

CLR KEY_HMK CLR DISP_MK MOV HIG_TMP,NUB_VAL AJMP KEY_1_2KEY_1:

JNB ACC.1,KEY_2 ;S2是否被按下

JB KEY_HMK,KEY_E JB KEY_LMK,KEY_1_1 ;S2是否已經(jīng)執(zhí)行過(guò)

SETB KEY_LMK ;沒(méi)有,則設(shè)置已經(jīng)執(zhí)行過(guò)標(biāo)志

SETB DISP_MK MOV NUB_VAL,LOW_TMP ACALLDISPLAY AJMP KEY_4KEY_1_1:

CLR KEY_LMK CLR DISP_MK MOV LOW_TMP,NUB_VALKEY_1_2:

;ACALLINIT_1820 ;JNB FLAG1,KEY_1_2 ACALL RE_CONFIG AJMP KEY_4KEY_2:

JNB ACC.2,KEY_3 JB KEY_LMK,KEY_2_1 JB KEY_HMK,KEY_2_1 AJMP KEY_4KEY_2_1:

CLR DISP_MK MOV A,NUB_VAL CJNE A,#63H,KEY_2_2 AJMP KEY_4KEY_2_2:

INC A MOV NUB_VAL,A ACALL DISPLAY AJMP KEY_4KEY_3:

JNB ACC.3,KEY_4 JB KEY_LMK,KEY_3_1 JB KEY_HMK,KEY_3_1 AJMP KEY_4KEY_3_1:

CLR DISP_MK MOV A,NUB_VAL JZ KEY_4 DEC A MOV NUB_VAL,A ACALL DISPLAYKEY_4:

RET;顯示子程序DISPLAY:

JB KEY_HMK,DISP0 JB KEY_LMK,DISP1 AJMP DISP3DISP0:

JNB DISP_MK,DISP2 MOV R0,#0BFH ;高位地址

MOV A,#0AH ;高位顯示“H” ACALL SCAN_TAB MOV R0,#7FH ;低位地址

MOV A,#0BH ;低位顯示“-” ACALL SCAN_TAB RETDISP1:

JNB DISP_MK,DISP2 MOV R0,#0BFH MOV A,#0CH ;高位顯示“L” ACALL SCAN_TAB MOV R0,#7FH MOV A,#0DH ;低位顯示“-” ACALL SCAN_TAB RETDISP2:

MOV TEMPER_NUM,NUB_VALACALL BIN_BCD

;MOVR1,ADISP3:

JB KEY_HMK,DISP3_1 ;個(gè)位顯示的地址送R0 JB KEY_LMK,DISP3_1 MOV R0,#0BFH AJMP DISP3_2DISP3_1:

MOV R0,#7FHDISP3_2:

MOV A,TEMPER_NUM ;取顯示單元內(nèi)容

ANL A,#0FH ACALL SCAN_TAB

;

JB KEY_HMK,DISP3_3 ;十位顯示地址送R0 JB KEY_LMK,DISP3_3 MOV R0,#0DFH AJMP DISP3_4DISP3_3:

MOV R0,#0BFHDISP3_4:

MOV A,TEMPER_NUM ;取顯示單元內(nèi)容

SWAP A ;高4位與低4位互換

ANL A,#0FH ;取顯示內(nèi)容十位

ACALLSCAN_TAB

;

JB KEY_HMK,DISP6 ;取小數(shù)點(diǎn)顯示

JB KEY_LMK,DISP6 MOV R0,#7FH MOV A,TEMPER_L JB ACC.3,DISP4 MOV A,#00H AJMP DISP5DISP4:

MOV A,#05HDISP5:

ACALL SCAN_TABDISP6:

RETSCAN_TAB:

MOV DPTR,#TAB MOVC A,@A+DPTR ;查表,取顯示字符

MOV DPTR,#PORTB JB KEY_HMK,SCAN_1 JB KEY_LMK,SCAN_1 CJNE R0,#0BFH,SCAN_1 ORL A,#80HSCAN_1:

MOVX @DPTR,A;顯示字符送B口

MOV DPTR,#PORTA MOV A,R0 MOVX@DPTR,A ;顯示位送A口,顯示數(shù)據(jù)個(gè)位

MOV R6,#0FH ACALL DEL1 RETTAB:

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;共陰極字型碼表

DB 7FH,6FH,36H,40H,38H,40H;DS18B20初始化程序INIT_1820:

SETB DQ NOP NOP CLR DQ ;將數(shù)據(jù)線下拉500μs

;

ACALLYS500 ;500μs延時(shí)子程序 ;

SETB DQ ;釋放數(shù)據(jù)線 ;ORL P1,#02H ;P1.1轉(zhuǎn)為輸入 ;

ACALL DELAY1 ;80μs延時(shí)子程序 ;

JNB DQ,TSR3 ;判斷DS18B20是否存在

AJMP TSR4 ;不存在,轉(zhuǎn)TSR4TSR3:

SETB FLAG1 ;置標(biāo)志位,表示DS1820存在

AJMP TSR5TSR4:

CLR FLAG1 ;清標(biāo)志位,表示DS1820不存在

AJMP TSR7TSR5:

MOV R0,#6BH ;200μsTSR6:

DJNZ R0,TSR6 ;延時(shí)TSR7:

SETB DQ RET;重新寫DS18B20暫存存儲(chǔ)器設(shè)定值RE_CONFIG:

MOV A,#0CCH ;發(fā)SKIPROM命令

LCALL WRITE_1820 MOV A,#4EH ;發(fā)寫暫存存儲(chǔ)器命令

LCALL WRITE_1820 MOV A,HIG_TMP ;TH(報(bào)警上限)中寫入指定值

LCALL WRITE_1820 MOV A,LOW_TMP ;TL(報(bào)警下限)中寫入指定值

LCALL WRITE_1820 MOV A,#1FH ;選擇9位溫度分辨率

LCALL WRITE_1820 RET;延時(shí)子程序DELAY:

MOV R6,#0FFH ;延時(shí)130msDEL1:

MOV R7,#0FFHDEL2:

DJNZ R7,DEL2 DJNZ R6,DEL1 RETDELAY1:

MOV R7,#27H ;延時(shí)80μs DJNZ R7,$ RETYS500:

MOV R7,#0F9H ;延時(shí)500μsYS500_1:

DJNZ R7,YS500_1 RET

;

END

5.實(shí)訓(xùn)分析與總結(jié)

(1)該實(shí)訓(xùn)項(xiàng)目主要是以DS18B20為例,訓(xùn)練單片機(jī)應(yīng)用系統(tǒng)與外圍應(yīng)用系統(tǒng)或部件組合的綜合設(shè)計(jì)、分析與調(diào)試方法。學(xué)會(huì)分析和掌握專用芯片或器件的功能、控制方法和編程技巧,能根據(jù)專用芯片或部件的技術(shù)資料、讀寫時(shí)序要求設(shè)計(jì)硬件接口及軟件編程,完成單片機(jī)應(yīng)用系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程。

(2)實(shí)訓(xùn)項(xiàng)目中的難點(diǎn)是理解和掌握DS18B20的專用特性和功能,能根據(jù)廠商提供的技術(shù)資料,編制出相應(yīng)的初始化程序、讀寫程序。

(3)程序仍采用模塊化結(jié)構(gòu),鍵盤、顯示、延時(shí)子程序可以采用原有子程序,本程序是在原有的子程序基礎(chǔ)上進(jìn)行簡(jiǎn)化而成的。(4)運(yùn)行狀態(tài)采用標(biāo)志化管理可使程序結(jié)構(gòu)更加簡(jiǎn)化。在上述程序中,對(duì)各按鍵的操作過(guò)程和狀態(tài)都采用標(biāo)識(shí)位來(lái)描述,對(duì)于不應(yīng)具有連動(dòng)功能的按鍵采用標(biāo)志位限制,只有在鍵盤掃描程序確定沒(méi)有任何按鍵按下時(shí)才清除按鍵標(biāo)志。這樣既可以起到按鍵防抖動(dòng)的作用,同時(shí)還可防止由于誤操作或按鍵習(xí)慣問(wèn)題導(dǎo)致的按鍵被多次執(zhí)行的情況。

(5)調(diào)試程序時(shí),重點(diǎn)分析和調(diào)試DS18B20的初始化及讀寫程序,嚴(yán)格按照技術(shù)資料提供的時(shí)序要求,檢查時(shí)序的前后次序和延時(shí)時(shí)間,要結(jié)合能反映故障存在與否的參數(shù)變化、運(yùn)行路徑變化、顯示內(nèi)容變化等選擇合適的觀測(cè)點(diǎn)和觀測(cè)對(duì)象,再運(yùn)用適當(dāng)?shù)恼{(diào)試方法,快速地檢驗(yàn)調(diào)試結(jié)果,由此分析和判斷出故障點(diǎn)。(6)為了能在實(shí)訓(xùn)室對(duì)溫度測(cè)量進(jìn)行測(cè)試,可分別設(shè)定溫度的最高位和最低位分別為36℃和32℃(當(dāng)時(shí)的室溫)。由于人體的體溫一般高于36℃,用手指接觸測(cè)溫點(diǎn),會(huì)導(dǎo)致高溫報(bào)警,從而啟動(dòng)風(fēng)扇降溫,拿開(kāi)手之后,測(cè)溫點(diǎn)的溫度會(huì)逐步下降。如果此時(shí)的室溫低于設(shè)定的最低溫度,系統(tǒng)會(huì)啟動(dòng)蜂鳴器報(bào)警。調(diào)試程序時(shí),如果顯示的溫度值與實(shí)際不符或沒(méi)有顯示,可以首先檢查DS18B20的初始化過(guò)程是否成功,然后在讀取溫度值的操作完成后檢查所讀到的值是否正常,確信沒(méi)有問(wèn)題的情況下,檢查數(shù)據(jù)轉(zhuǎn)換和顯示程序是否存在問(wèn)題。6.參考資料

1)DS18B20簡(jiǎn)介

(1)獨(dú)特的單線接口方式:當(dāng)DS18B20與微處理器連接時(shí),僅需要一條數(shù)據(jù)線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通信。

(2)使用中不需要任何外圍元件。

(3)可用數(shù)據(jù)線供電,電壓范圍為+3.0~+5.5V。

(4)測(cè)溫范圍為-55~+125℃。固有測(cè)溫分辨率為0.5℃。

(5)通過(guò)編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報(bào)警上下限值。

(7)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的數(shù)據(jù)線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。

(8)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。2)DS18B20的內(nèi)部結(jié)構(gòu)圖2.2.7DS18B20內(nèi)部結(jié)構(gòu)圖(1)64位光刻ROM的結(jié)構(gòu)如下:MSB LSB MSB LSB MSB LSB

開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。(2)非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入用戶報(bào)警上下限。

(3)高速暫存存儲(chǔ)器。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存SRAM和一個(gè)非易失性的可電擦除的E2PROM。后者用于存儲(chǔ)TH,TL值。數(shù)據(jù)先寫入SRAM,經(jīng)校驗(yàn)后再傳給E2PROM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),其內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如下:

低5位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即設(shè)置分辨率,如表2.2.1所示(DS18B20出廠時(shí)被設(shè)置為12位)。表2.2.1R1和R0模式表

由表2.2.1可見(jiàn),設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間之間權(quán)衡考慮。高速暫存存儲(chǔ)器除了配置寄存器外,還有其他8個(gè)寄存器,其分配如下所示。其中,第1、2個(gè)寄存器存儲(chǔ)溫度信息,第3、4個(gè)寄存器存儲(chǔ)TH和TL值,第6~8個(gè)寄存器未用,表現(xiàn)為全邏輯1;第9個(gè)寄存器存儲(chǔ)的是前面所有8個(gè)寄存器內(nèi)容的CRC碼,可用來(lái)保證通信正確。

當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2個(gè)寄存器。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。溫度值格式如下:

對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。表2.2.2所示為對(duì)應(yīng)的一部分溫度值。表2.22部分溫度值

(4)CRC的產(chǎn)生。在64bROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。3)DS18B20的測(cè)溫原理

DS18B20的測(cè)溫原理如圖2.2.8所示。圖中低溫度系數(shù)振蕩器晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)振蕩器晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,在每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。圖2.2.8DS18B20的內(nèi)部測(cè)溫電路框圖4)DS18B20與單片機(jī)的典型接口設(shè)計(jì)以MCS51單片機(jī)為例,圖2.2.9為典型接口設(shè)計(jì),P1.1口接單線總線。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,需要在數(shù)據(jù)線上加一個(gè)4.7kΩ的上拉電阻,另外兩個(gè)腳分別接電源和地。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12MHz,根據(jù)DS18B20的初始化時(shí)序、寫時(shí)序和讀時(shí)序,分別編寫3個(gè)子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開(kāi)始。圖2.2.9DS18B20與微處理器的典型連接

7.思考題

(1)DS18B20單線通信功能是按照什么方式完成的?它的操作協(xié)議是什么?

(2)DS18B20與MCU連接時(shí)為什么在數(shù)據(jù)線上要加一個(gè)4.7kΩ的上拉電阻?

(3)如果顯示器件采用LCM162液晶顯示模塊,請(qǐng)編寫一段程序?qū)y(cè)得的溫

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論