版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽(yáng)職業(yè)技術(shù)學(xué)院《塑料成型工藝及模具設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025海南省安全員-B證考試題庫(kù)及答案
- 貴陽(yáng)人文科技學(xué)院《汽車?yán)碚摗?023-2024學(xué)年第一學(xué)期期末試卷
- 2025年重慶建筑安全員考試題庫(kù)附答案
- 廣州應(yīng)用科技學(xué)院《近代材料研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《專業(yè)英語(yǔ)與文獻(xiàn)閱讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《材料科學(xué)基礎(chǔ)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年湖北建筑安全員知識(shí)題庫(kù)附答案
- 2025云南建筑安全員B證考試題庫(kù)
- 2025年山西省安全員《A證》考試題庫(kù)
- 2025年廣西旅發(fā)南國(guó)體育投資集團(tuán)限公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年銅官山區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末調(diào)研試題含解析
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之18:“7支持-7.1資源”(雷澤佳編制-2025B0)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之17:“6策劃-6.6合作”(雷澤佳編制-2025B0)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之16:“6策劃-6.5組織結(jié)構(gòu)”(雷澤佳編制-2025B0)
- 全國(guó)英語(yǔ)教師賽課一等獎(jiǎng)七年級(jí)上冊(cè)(人教2024年新編)《Unit 7 Happy Birthday》教學(xué)設(shè)計(jì)
- 2024年世界職業(yè)院校技能大賽高職組“關(guān)務(wù)實(shí)務(wù)組”賽項(xiàng)參考試題庫(kù)(含答案)
- 江西省2023-2024學(xué)年高二上學(xué)期期末教學(xué)檢測(cè)數(shù)學(xué)試題 附答案
- 超市項(xiàng)目投標(biāo)書模板
- 耐火材料行業(yè)競(jìng)爭(zhēng)格局分析(如市場(chǎng)份額、競(jìng)爭(zhēng)優(yōu)劣勢(shì)等)
- 技術(shù)服務(wù)保障措施以及保障措施服務(wù)計(jì)劃書
評(píng)論
0/150
提交評(píng)論