溫度傳感器的溫度檢測(cè)系統(tǒng)_第1頁(yè)
溫度傳感器的溫度檢測(cè)系統(tǒng)_第2頁(yè)
溫度傳感器的溫度檢測(cè)系統(tǒng)_第3頁(yè)
溫度傳感器的溫度檢測(cè)系統(tǒng)_第4頁(yè)
溫度傳感器的溫度檢測(cè)系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(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)介

1、 畢業(yè)設(shè)計(jì)(論文) 第 48 頁(yè)緒 論本設(shè)計(jì)的目的是設(shè)計(jì)出一種基于單片機(jī)和智能溫度傳感器的溫度檢測(cè)系統(tǒng),應(yīng)用這樣的技術(shù)可以使溫度測(cè)量技術(shù)可以更廣泛的應(yīng)用在人們的生活當(dāng)中。溫度監(jiān)控、報(bào)警系統(tǒng)如今已經(jīng)廣泛應(yīng)用于人類生產(chǎn)、生活的各個(gè)領(lǐng)域。如家電、汽車、材料、電力電子、工業(yè)生產(chǎn)等。在半導(dǎo)體集成電路芯片和數(shù)字技術(shù)沒有廣泛運(yùn)用的過(guò)去,實(shí)現(xiàn)對(duì)溫度的測(cè)量和監(jiān)控,只能依賴于對(duì)溫敏電子元器件的模擬物理量進(jìn)行測(cè)量,進(jìn)而轉(zhuǎn)換為直觀的測(cè)量結(jié)果。從硬件電路設(shè)計(jì)方面來(lái)說(shuō),開發(fā)起來(lái)很麻煩,費(fèi)公費(fèi)時(shí)??垢蓴_的問(wèn)題也較突出。由于體積相對(duì)大一些,使用起來(lái)也不是很方便。目前,國(guó)際上的溫度傳感器正從模擬式、由集成化向智能化的方向飛速發(fā)

2、展。如今,隨著數(shù)字溫度傳感器的誕生,曾經(jīng)令人眼花繚亂的電路,密密麻麻焊接在一起的元器件,如今已經(jīng)被一個(gè)小小的毫不起眼的數(shù)字傳感器代替了。由于溫度傳感器逐漸向著數(shù)字化、只能化的方向發(fā)展,目前基于溫度探測(cè)的監(jiān)控或者報(bào)警系統(tǒng)也產(chǎn)生了深刻的變化。電路設(shè)計(jì)的更簡(jiǎn)單,也部分簡(jiǎn)化了軟件的編寫。另外,無(wú)論是響應(yīng)速度、系統(tǒng)運(yùn)行周期、抗干擾能力等等指標(biāo),都大大優(yōu)于傳統(tǒng)的、基于模擬傳感器的測(cè)溫系統(tǒng)。本設(shè)計(jì)采用DS18B20智能數(shù)字溫度傳感器實(shí)現(xiàn)并設(shè)計(jì)出一個(gè)關(guān)于溫度測(cè)量的系統(tǒng)。一、主要元器件簡(jiǎn)介 隨著大規(guī)模集成電路技術(shù)的發(fā)展,將CPU、Memory、I/O接口等計(jì)算機(jī)的主要電路部件“濃縮”在一塊集成電路芯片上,就形成

3、了芯片級(jí)的計(jì)算機(jī)系統(tǒng),因?yàn)樵撓到y(tǒng)是由單一芯片構(gòu)成,故稱之為單片微型計(jì)算機(jī)(Single ChipComputer),簡(jiǎn)稱單片機(jī)。(一) 元器件AT89C2051簡(jiǎn)介AT89C2051是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含2KB的可反復(fù)擦寫的只讀Flash程序存儲(chǔ)器和128 B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元。 AT89C2051是一個(gè)功能強(qiáng)大的單片機(jī),但它只有20個(gè)引腳,15個(gè)雙向輸入/輸出(I/O)端口,其中P1是一個(gè)完整的8位雙向I/O口,兩個(gè)

4、外中斷口,兩個(gè)16位可編程定時(shí)計(jì)數(shù)器,兩個(gè)全雙向串行通信口,一個(gè)模擬比較放大器。 同時(shí)AT89C2051的時(shí)鐘頻率可以為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時(shí)/計(jì)數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入繼續(xù)工作狀態(tài)。省電模式中,片內(nèi)RAM將被凍結(jié),時(shí)鐘停止振蕩,所有功能停止工作,直至系統(tǒng)被硬件復(fù)位方可繼續(xù)運(yùn)行。主要功能特性: · 兼容MCS51指令系統(tǒng)· 2k可反復(fù)擦寫(>1000次)Flash ROM · 15個(gè)雙向I/O口· 6個(gè)中斷源 · 兩個(gè)16位可編程定時(shí)/計(jì)數(shù)

5、器· 2.7-6.V的寬工作電壓范圍· 時(shí)鐘頻率0-24MHz· 128x8B內(nèi)部RAM · 兩個(gè)外部中斷源· 兩個(gè)串行中斷 · 可直接驅(qū)動(dòng)LED· 兩級(jí)加密位 · 低功耗睡眠功能· 內(nèi)置一個(gè)模擬比較放大器 · 可編程UARL通道· 軟件設(shè)置睡眠和喚醒功能A引腳說(shuō)明: P1口:它是8位雙向口線,即P1.0P1.7??谝_P1.0(12腳)和1.1(13腳)用于外部接口工作時(shí),要求配置外部的上拉電阻;P1.2P1.7內(nèi)部設(shè)有上拉電阻,用于外部接口工

6、作時(shí)由外部負(fù)載工作方式?jīng)Q定是否配置上拉電阻。P1口帶有輸出緩沖器,可吸收20mA的電流并能直接驅(qū)動(dòng)LED顯示。P1口的功能之一是在閃速編程和程序校驗(yàn)期間接收代碼數(shù)據(jù)(即編程的數(shù)據(jù)輸入口)。 P3口:它是帶有內(nèi)部上拉電阻的7位雙向口線,即P3.0P3.5和P3.7。P3.6因內(nèi)部功能的需要,它雖是通用的I/O口引腳但不可訪問(wèn)。P3口的其它特性與P1口相同,此外P3口還具有第二功能。 復(fù)位端RST(1腳):當(dāng)1腳加“H”高電平時(shí)芯片內(nèi)部的功能電路復(fù)位,此時(shí)I/O口引腳復(fù)位到“1”電平。 XTAL1(5腳):振蕩器外接晶振,內(nèi)部時(shí)鐘發(fā)生器輸入。 XTAL2(4腳):振蕩器外接晶振、反向放大器輸出。

7、電源端20腳(+2.76V)和10腳(地端)。B振蕩器特性:    XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。 C芯片擦除:整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89

8、C2051設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。 (二)DS18B20簡(jiǎn)介DS18B20是美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。可以分別在93.75 ms和750 ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B

9、20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來(lái)源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無(wú)需額外電源。因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。 圖1 DS18B20 內(nèi)部結(jié)構(gòu)圖獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。 獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處器與DS18B20的雙向通訊。 在使用中不需要任何外圍元件。 可用數(shù)據(jù)線供電,電壓范圍:+3.0+5.5 V。 測(cè)溫范圍:-55 +125 。固有測(cè)溫分辨率為0.5 。 通過(guò)編程可實(shí)現(xiàn)912位的數(shù)

10、字讀數(shù)方式。 用戶可自設(shè)定非易失性的報(bào)警上下限值。 支持多點(diǎn)功能,多個(gè)DS18B20可并聯(lián)在惟一的三線上實(shí)現(xiàn)多點(diǎn)測(cè)溫 負(fù)壓特性,電源極性接反時(shí)溫度計(jì)不會(huì)因發(fā)熱而燒毀,不能正常工作1DS18B20的內(nèi)部結(jié)構(gòu)DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖1所示。 4 b閃速ROM的結(jié)構(gòu)如下:CRC檢測(cè)CRC48b序列號(hào)8b工廠代號(hào)(10H) MSB LSB MSB LSB MSB LSB   開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。 

11、;    非易市失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入用戶報(bào)警上下限。  高速暫存存儲(chǔ)器    DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2RAM。后者用于存儲(chǔ)TH,TL值。數(shù)據(jù)先寫入RAM,經(jīng)校驗(yàn)后再傳給E2RAM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),他的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。 低5位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,

12、用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來(lái)設(shè)置分辨率,如表1所示(DS18B20出廠時(shí)被設(shè)置為12位)。表1 R1與R0模式表R1 R0 分辨率 溫度最大轉(zhuǎn)換時(shí)間/mm0 0 9位 93.750 1 10 187.51 0 11 275.001 1 12 750.00 由表1可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。    高速暫存存儲(chǔ)器除了配置寄存器外,還有其他8個(gè)字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第68字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀

13、出的是前面所有8個(gè)字節(jié)的CRC碼,可用來(lái)保證通信正確。溫度低位溫度高位THTL配置保留保留保留8位CR當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1,2字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0062 5 /LSB形式表示。溫度值格式如下:232221202-12-22-32-4SSSSS262524對(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是對(duì)應(yīng)的一部分溫度值。表2 部分溫度值溫度/C 二進(jìn)制表示 十六

14、進(jìn)制表示+125 00000111 11010000 07D0H+25.0625 00000001 10010001 0191H+0.5 00000000 00001000 0008H0 00000000 00000000 0000H-0.5 11111111 11111000 FFF8H-25.0625 11111110 011011111 FE6FH-55 11111100 10010000 FC90HDS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與TH,TL作比較,若T>TH或T<TL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì)主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只DS18B2

15、0同時(shí)測(cè)量溫度并進(jìn)行告警搜索。    CRC的產(chǎn)生    在64 b ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56來(lái)計(jì)算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。斜率累加器計(jì)數(shù)比較器預(yù)置減法計(jì)數(shù)器1低溫系數(shù)振蕩器預(yù)置減到0溫度寄存器減法計(jì)數(shù)器2高溫系數(shù)振蕩器減到0 圖2 DS18B20 測(cè)溫原理圖2DS18B20的測(cè)溫原理DS18B20的測(cè)溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小1,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)

16、晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55 所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),

17、停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。圖2中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是DS18B20的測(cè)溫原理。    另外,由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。各種操作的時(shí)序圖與DS1820相同。 圖3 DS18B20與微處理器的典型連接3 DS18B2

18、0與單片機(jī)的典型接口設(shè)計(jì)以MCS51單片機(jī)為例,圖3中采用寄生電源供電方式, P11口接單線總線為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管和89C51的P10來(lái)完成對(duì)總線的上拉2。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10 s。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三態(tài)的。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12 MHz,根據(jù)DS18B20的初始化時(shí)序、寫時(shí)序

19、和讀時(shí)序,分別編寫3個(gè)子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始,實(shí)際在實(shí)驗(yàn)中不用這種方式,只要在數(shù)據(jù)線上加一個(gè)上拉電阻4.7 k,另外2個(gè)腳分別接電源和地。4DS18B20的精確延時(shí)問(wèn)題雖然DS18B20有諸多優(yōu)點(diǎn),但使用起來(lái)并非易事,由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成。因此,對(duì)讀寫的操作時(shí)序要求嚴(yán)格。為保證DS18B20的嚴(yán)格I/O時(shí)序,需要做較精確的延時(shí)。在DS18B20操作中,用到的延時(shí)有15 s,90 s,270 s,540 s等。因這些延時(shí)均為15 s的整數(shù)倍,因此可編

20、寫一個(gè)DELAY15(n)函數(shù),源碼如下:void delay15(n)undigned char n;do -nop- ( );/01- nop- ( );/02- n- while(n)只要用該函數(shù)進(jìn)行大約15 s×N的延時(shí)即可。有了比較精確的延時(shí)保證,就可以對(duì)DS18B20進(jìn)行讀寫操作、溫度轉(zhuǎn)換及顯示等操作。 5DS18B20 的讀寫操作 復(fù)位對(duì) DS18B20 操作時(shí),首先要將它復(fù)位。復(fù)位時(shí),DQ 線被拉為低電平,時(shí)間為 480960ìs;接著將數(shù)據(jù)線拉為高電平,時(shí)間為 1560ìs;最后DS18B20 發(fā)出 60240ìs 低電平作應(yīng)答信號(hào),這

21、時(shí)主機(jī)才能進(jìn)行其他操作。 寫操作 將數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫起始信號(hào)。從 DQ 線的下降沿起計(jì)時(shí),在 15ìs 到 60ìs 這寫 1;開始另一個(gè)寫周期前,必須有 1ìs 以上的高電平恢復(fù)期。每個(gè)寫周期必須要有 60ìs 以上的持續(xù)期。 讀操作 主機(jī)將數(shù)據(jù)線從高電平拉至低電平 1ìs 以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀起始信號(hào)。從主機(jī)將數(shù)據(jù)線從高電平拉至低電平起 15ìs 至 60ìs,主機(jī)讀取數(shù)據(jù)。每個(gè)讀周期最短的持續(xù)期為 60ìs。周期之間必須有 1ìs 以上的高電平恢復(fù)期。(三)晶振的簡(jiǎn)

22、介石英晶體受到交變點(diǎn)電場(chǎng)作用時(shí),即在兩極扳上加以交流電壓,石英晶體更會(huì)產(chǎn)生機(jī)械震動(dòng)。反過(guò)來(lái),若對(duì)石英晶體施加周期性機(jī)械力,使其發(fā)生震動(dòng),則又會(huì)在晶體表面出現(xiàn)相應(yīng)的交電電場(chǎng)和電荷。這種現(xiàn)象稱為壓晶體諧振器是振電路的核心元件,真結(jié)構(gòu)和外行如圖3所示。(四)LED顯示器結(jié)構(gòu)與分類LED顯示器內(nèi)部由7段發(fā)光二極管組成,因此亦稱之為7段LED顯示器,由于主要用于顯示各種數(shù)字符號(hào),故稱之為L(zhǎng)ED數(shù)碼管。每個(gè)顯示器還有一個(gè)圓點(diǎn)形發(fā)光二極管(用符號(hào)dp表示),用于顯示小數(shù)點(diǎn), LED顯示器可以分為共陰極與共陽(yáng)極兩種. 共陰極LED顯示器:各二極管陰極連在一起,公共端接地電平時(shí),若某段陽(yáng)極加上高電平則該段發(fā)光二

23、極管就導(dǎo)通發(fā)光,輸入電平的段則不發(fā)光。 共陽(yáng)極LED顯示器:各二極管的陽(yáng)極連在一起,公共端接高電平時(shí),若某端陰極加上低電平則該段發(fā)光二極管就導(dǎo)通發(fā)光,而輸入高電平的段則不發(fā)光。LED數(shù)碼管通常有紅色、綠色、黃色三種,以紅色應(yīng)用最多。由于二極管的發(fā)光材料不同,數(shù)碼管有高亮與普亮之分,應(yīng)用時(shí)根據(jù)數(shù)碼管的規(guī)格與顯示方式等決定是否加驅(qū)動(dòng)電路。7段LED顯示器可采用硬件譯碼與軟件譯碼兩種方式。在數(shù)字電路中曾介紹硬件譯碼顯示方法,如利用74LS系列等實(shí)現(xiàn)譯碼顯示,這里主要介紹軟件方式實(shí)現(xiàn)譯碼顯示。加在顯示器上對(duì)應(yīng)各種顯示字符的二進(jìn)制數(shù)據(jù)稱為段碼。數(shù)碼管中,7段發(fā)光二極管加上一個(gè)小數(shù)點(diǎn)位共計(jì)8段,因此段碼為

24、8位二進(jìn)制數(shù),由于點(diǎn)亮方式不同,共陰共陽(yáng)兩種LED數(shù)碼管的段碼是不同的見表共陽(yáng)極數(shù)碼管。某段加高電平“1”不亮,加低電平“0”亮。共陰極數(shù)碼管。某段加高電平“1”亮,加低電平“0”不亮。與共陽(yáng)極段碼互為反碼。二、硬件電路設(shè)計(jì)(一) 系統(tǒng)硬件電路數(shù)字式溫度計(jì)要求測(cè)量溫度范圍為-50110,精度誤差在0.1以內(nèi),LED數(shù)碼管直接讀出顯示。按照系統(tǒng)設(shè)計(jì)功能要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器、測(cè)溫電路及顯示電路。硬件系統(tǒng)的總體構(gòu)成框架如圖4所示。AT89C2051主控制器顯示電路DS18B20掃描電路圖4 數(shù)字溫度計(jì)電路結(jié)構(gòu)框架溫度計(jì)電路設(shè)計(jì)原理圖如圖2.2所示,控制器使用單片機(jī)AT89C2051

25、,溫度傳感器使用DS18B20,擁位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。(二)顯示電路在單片機(jī)應(yīng)用系統(tǒng)中,通常具有多位LED顯示器,在編程時(shí)采用動(dòng)態(tài)顯示方式。所謂動(dòng)態(tài)顯示是指利用單片機(jī)控制顯示器逐位點(diǎn)亮,而不是同時(shí)點(diǎn)亮。由于人眼的視覺殘留效應(yīng),仍然感覺顯示器是同時(shí)點(diǎn)亮的,但要求顯示器動(dòng)態(tài)點(diǎn)亮的速度應(yīng)足夠快,否則會(huì)有閃爍感。在實(shí)現(xiàn)動(dòng)態(tài)顯示時(shí),除了必須給各位數(shù)碼管提供段碼外還必須對(duì)各位顯示器進(jìn)行位的控制,即進(jìn)行段控與位控。工作時(shí),各位數(shù)碼管的段控線對(duì)應(yīng)并聯(lián)在一起,由一個(gè)數(shù)碼管,并送出相應(yīng)的段碼。區(qū)的建立,顯示緩沖區(qū)是指在內(nèi)存中開辟的一塊存儲(chǔ)區(qū)域,專門用于存放待顯示的數(shù)據(jù),存儲(chǔ)區(qū)域大小至少應(yīng)與

26、LED數(shù)碼管位數(shù)相同。設(shè)顯示緩沖區(qū)單元為30H35H,顯示內(nèi)容自右至左為1、2、3、4、5、6,則緩存與LED數(shù)碼管對(duì)應(yīng)關(guān)系如下表:數(shù)碼管LED5LED4LED4LED2LED1LED0緩存單元35H34H33H32H31H30H顯示數(shù)據(jù)06H05H04H03H02H01H(三)時(shí)鐘電路MCS-51的時(shí)鐘信號(hào)可以由兩種方式產(chǎn)生,一種是內(nèi)部方式,利用芯片內(nèi)部的振路;另一種為外部方式。由于MCS-51有HMOS型與CHMOS型,它們的時(shí)鐘電路有一定的區(qū)別,這里僅介紹通過(guò)常用的HMOS型的時(shí)鐘電路。A. 內(nèi)部時(shí)鐘方式MCS-51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分

27、別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體或陶瓷諧振器一起構(gòu)成一個(gè)自激振蕩器。雖然有內(nèi)部振蕩電路,但要形成時(shí)鐘,必須外接元件,外接晶體以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中,外接電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性,晶體可在1.212MHz之間任選,C1和C2的電容一般在20100pF之間選擇。若頻率穩(wěn)定性要求不高,可選用較為廉價(jià)的陶瓷諧振器,C1和C2的典型值約為47pF。在設(shè)計(jì)印刷電路板時(shí),應(yīng)采用溫度穩(wěn)定性能好的高頻電容,晶體或陶瓷振蕩器和電容應(yīng)盡可能與單片機(jī)芯片靠近安裝,以減少寄生電容,提高系統(tǒng)穩(wěn)定性和可靠

28、性。B. 外部時(shí)鐘電路外部時(shí)鐘方式是利用外部振蕩器信號(hào)源即時(shí)鐘源直接接入XTAL1和XTAL2。通常XTAL1接地,XTAL2接外部時(shí)鐘。由于XTAL2的邏輯電平不是TTL的,故建議外接一個(gè)4.710K的上拉電阻。(四)復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其目的是使CPU及各個(gè)寄存器處于一個(gè)確定的狀態(tài),把PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。系統(tǒng)正常上電可以復(fù)位,另外,當(dāng)系統(tǒng)程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),也需要按復(fù)位恢復(fù)系統(tǒng)正常工作狀態(tài)。復(fù)位操作后對(duì)某些特殊功能寄存器有影響。復(fù)位還對(duì)單片機(jī)的少數(shù)引腳有影響,例如把ALE和PSEN變?yōu)闊o(wú)效,即ALE=0和PSE

29、N=1。復(fù)位方式主要有以下兩種。上電自動(dòng)復(fù)位方式,該方式是單片機(jī)接通電源后,對(duì)復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。手動(dòng)復(fù)位方式,該方式分按鍵電平復(fù)位和脈沖電平復(fù)位。我們只用第一種,相當(dāng)于RST端通過(guò)電阻與VCC電源接通而實(shí)現(xiàn)的。特殊功能寄存器初態(tài)特殊功能寄存器初態(tài)ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0-P30FFHSCON00HIPXXX00000BSBUF不定IE0XX00000BPCON0XXXXXXXB三、軟件程序設(shè)計(jì)與調(diào)試(一)主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS1

30、8B20的測(cè)量溫度值,溫度測(cè)量每1S進(jìn)行一次。其流程圖如下:初始化調(diào)用顯示子程序N1s到?YN初次上電?讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令圖5 DS18B20溫度計(jì)主程序流程(二)讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。流程圖如下:發(fā)DS18B20復(fù)位命令發(fā)調(diào)過(guò)ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗(yàn)N9字節(jié)完?YNCRC校驗(yàn)正確?Y移入溫度暫存器結(jié)束 圖6 讀出溫度子程序流程圖1溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本

31、程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令程序流程圖如圖所示發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)ROM命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束圖7 溫度轉(zhuǎn)換命令子程序流程圖2. 計(jì)算溫度子程序 計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖所示。開始N溫度零下?Y置“+”標(biāo)志溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)位溫度BCD值結(jié)束圖8 計(jì)算溫度子程序流程圖3顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖所示。溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)

32、0?百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))十位數(shù)顯示符號(hào)百位數(shù)不顯示結(jié)束圖9數(shù)據(jù)刷新子程序A.計(jì)數(shù)脈沖提供方式 計(jì)數(shù)方式時(shí):計(jì)數(shù)脈沖從片外由P3.4(T0)或P3.5(T1)引入,下降觸發(fā)計(jì)數(shù)器加1。 定時(shí)方式時(shí):Ti由內(nèi)部時(shí)鐘頻率定時(shí),每一個(gè)機(jī)器周期使T0或T1加1計(jì)數(shù)。定時(shí)方式究其實(shí)質(zhì),仍然是單片機(jī)內(nèi)部的T0或T1在計(jì)數(shù)。由于晶振頻率確定后,每一機(jī)器周期所需的時(shí)間也確定,因而片內(nèi)T0或T1計(jì)一確定數(shù)值所需的時(shí)間也確定了。定時(shí)方式的實(shí)質(zhì),就是利用每一個(gè)機(jī)器周期加1計(jì)數(shù),使計(jì)數(shù)過(guò)程變?yōu)槎〞r(shí)過(guò)程。設(shè)fosc=6MHz,則T=2µs,計(jì)數(shù)器加1,耗時(shí)2µs。B.工作過(guò)程。定時(shí)/計(jì)數(shù)器Ti

33、使用前先初始化編程,決定工作方式;再利用送數(shù)指令(MOV)將計(jì)數(shù)初值送入THi和Tli;之后用指令(SETB Tri)啟動(dòng)Ti開始計(jì)數(shù)。未計(jì)滿數(shù)前溢出標(biāo)志(TCON的Tfi)為0,計(jì)滿數(shù)溢出(計(jì)數(shù)器的值從全F再加1變?yōu)?)時(shí),CPU(硬件)自動(dòng)將計(jì)數(shù)器清0,并溢出標(biāo)志Tfi置為1。定時(shí)/計(jì)數(shù)器的控制初始化編程就是T0、T1使用前要用指令向TMOD寫入工作方式字,向TMOD寫入工作方式字,向TCON寫入命令字,向T0、T1寫入計(jì)數(shù)初值。這叫定時(shí)/計(jì)數(shù)器的初始化編程。工作方式寄存器TMOD。用于設(shè)定工作方式(或稱模式),即決定是用T0,還是用T1;是用來(lái)作定時(shí),還是用來(lái)作計(jì)數(shù);是多少位的計(jì)數(shù)器,即

34、方式幾。TMOD不能按位尋址,TMOD各位名稱及功能如下表。D7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0TMOD的高4位用來(lái)控制T1,低4位用來(lái)控制T0。下面以低4位為例。GATE:?jiǎn)?dòng)計(jì)數(shù)方式控制位。GATE=0為軟啟動(dòng),即用指令SETB TR0使T0開始計(jì)數(shù);GATE=1為硬啟動(dòng),即用指令SETB TR0外,還需置P3.2或P3.3引腳為高電平才能開始計(jì)數(shù)。C/T:計(jì)數(shù)/定時(shí)方式控制位。C/T=0為定時(shí)方式;C/T=1為計(jì)數(shù)方式。M1M0:工作方式(模式)控制位。M1M0=00、01、10、11分別為方式0、1、2、3??刂萍皹?biāo)志寄存器TCON

35、。用于控制定時(shí)器的啟、停、溢出標(biāo)志、外部中斷觸發(fā)方式。TCON可按位尋址,其各位位地址見表 ,各位符號(hào)及功能如下D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TFi:定時(shí)器Ti溢出標(biāo)志位。計(jì)數(shù)滿溢出(從全F再加1變?yōu)?叫計(jì)數(shù)滿溢出,簡(jiǎn)稱溢出)時(shí),CPU自動(dòng)置Tfi=1,并申請(qǐng)中斷。此位(TFi)在中斷且響應(yīng)中斷后由CPU自動(dòng)將TFi清0,若未開中斷(用查詢法編程)時(shí)需用軟件(指令)將TFi清0。沒有計(jì)滿數(shù)(上電復(fù)位時(shí)的0不算溢出)時(shí)TFi=0。例如,TF0=0表示T0還未計(jì)滿數(shù),TF0=1表示T0已計(jì)滿數(shù)溢出。TRi:定時(shí)器Ti的啟、??刂莆?。為

36、1表示啟動(dòng)Ti開始計(jì)數(shù),為0表示停止Ti計(jì)數(shù)。例如,TR0=1表示啟動(dòng)T0的計(jì)數(shù),TR0=0表示停止T0計(jì)數(shù)(即便有計(jì)數(shù)脈沖輸入或機(jī)器周期脈沖也不計(jì)數(shù))。IEi和ITi的意義見后面的4.1.4節(jié)中斷服務(wù)程序。4 中斷服務(wù)程序A.中斷概念利用軟、硬件配合,根據(jù)某種需要停止(中斷)正在執(zhí)行的程序而轉(zhuǎn)向另一專門程序,結(jié)束后返回到原斷開處,繼續(xù)執(zhí)行被中斷的程序,這個(gè)過(guò)程叫中斷。B.中斷過(guò)程當(dāng)主程序運(yùn)行到某一句指令時(shí),有某中斷源向CPU發(fā)出中斷申請(qǐng),若滿足中斷響應(yīng)的條件時(shí),CPU會(huì)對(duì)該中斷源做出響應(yīng)(撤消中斷請(qǐng)求),把該句指令執(zhí)行完后,會(huì)把斷點(diǎn)地址自動(dòng)壓棧保存,并使程序先轉(zhuǎn)至該中斷源入口地址(矢量地址)

37、處,在該處執(zhí)行一條轉(zhuǎn)移指令(AJMP或LJMP),再轉(zhuǎn)至該中斷源的中斷服務(wù)子程序首句,執(zhí)行中斷子程序,執(zhí)行完中斷子程序后,用RETI指令返回到主程序中斷點(diǎn)地址處,繼續(xù)執(zhí)行主程序。C.中斷控制中斷源發(fā)出中斷請(qǐng)求會(huì)將相應(yīng)的中斷請(qǐng)求標(biāo)志位置1,用以向CPU申請(qǐng)中斷。外部中斷0與1由P3.2與P3.3引腳輸入中斷請(qǐng)求信號(hào),其余中斷源沒有外部申請(qǐng)中斷的引腳,只靠中斷請(qǐng)求標(biāo)志位置1發(fā)出中斷請(qǐng)求。 定時(shí)控制寄存器TCON中的中斷請(qǐng)求標(biāo)志位為“1”表示中斷請(qǐng)求,為“0”表示撤消請(qǐng)求。 TF1、TF0:定時(shí)器溢出中斷標(biāo)志位。(上節(jié)以詳細(xì)介紹) IE1、IE0:外部中斷請(qǐng)求標(biāo)志位。當(dāng)某外部中斷源發(fā)出中斷請(qǐng)求(將引

38、腳INTI置1或輸入下降沿時(shí),CPU將IEi位置為1,表示該外部中斷源申請(qǐng)中斷。 IT1、IT0:外部中斷觸發(fā)方式控制位。ITi為1時(shí),為邊沿觸發(fā)方式;ITi為0時(shí),為電平觸發(fā)方式D.中斷請(qǐng)求源: 外部中斷請(qǐng)求源:即外中斷0和1,經(jīng)由外部引腳引入的,在單片機(jī)上有兩個(gè)引腳,名稱為INT0、INT1,也就是P3.2、P3.3這兩個(gè)引腳。在內(nèi)部的TCON中有四位是與外中斷有關(guān)的。IT0:INT0觸發(fā)方式控制位,可由軟件進(jìn)和置位和復(fù)位,IT0=0,INT0為低電平觸發(fā)方式,IT0=1,INT0為負(fù)跳變觸發(fā)方式。這兩種方式的差異將在以后再談。IE0:INT0中斷請(qǐng)求標(biāo)志位。當(dāng)有外部的中斷請(qǐng)求時(shí),這位就會(huì)

39、置1(這由硬件來(lái)完成),在CPU響應(yīng)中斷后,由硬件將IE0清0。IT1.IE1的用途和IT0、IE0相同。內(nèi)部中斷請(qǐng)求源TF0:定時(shí)器T0的溢出中斷標(biāo)記,當(dāng)T0計(jì)數(shù)產(chǎn)生溢出時(shí),由硬件置位TF0。當(dāng)CPU響應(yīng)中斷后,再由硬件將TF0清0。TF1:與TF0類似。T1.R1:串行口發(fā)送、接收中斷,在串口中再講解。中斷允許寄存器IE在MCS-51中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進(jìn)行位尋址的8位中斷允許寄存器IE來(lái)控制的。見下表EAXXESET1EX1ET0EX0其中EA是總開關(guān),如果它等于0,則所有中斷都不允許。ES串行口中斷允許。如果我們要設(shè)置允許外中斷1,定時(shí)器1中斷允許,其它不允許,則IE

40、可以是EAXXESET1EX1ET0EX010001100五個(gè)中斷源的自然優(yōu)先級(jí)與中斷服務(wù)入口地址外中斷0:定時(shí)器0:外中斷1:定時(shí)器1:串口 :0003H 000BH 0013H 001BH 0023H這樣寫的目的,就是為了讓出中斷源所占用的向量地址。當(dāng)然在程序中沒用中斷時(shí)直接開始寫程序,在原理上并沒有錯(cuò),但在實(shí)際工作中最好不這樣做。優(yōu)先級(jí):?jiǎn)纹瑱C(jī)采用了自然優(yōu)先級(jí)和人工設(shè)置高、低優(yōu)先級(jí)的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級(jí)、哪些中斷是低優(yōu)先級(jí),由于只有兩級(jí),必有一些中斷處于同一級(jí)別,處于同一級(jí)別的,就由自然優(yōu)先級(jí)確定。開機(jī)時(shí),每個(gè)中斷都處于低優(yōu)先級(jí),我們可以用指令對(duì)優(yōu)先級(jí)進(jìn)行設(shè)置。中斷

41、優(yōu)先級(jí)中由中斷優(yōu)先級(jí)寄存器IP來(lái)高置的,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級(jí),否則就是低優(yōu)先級(jí)。XXXPSPT1PX1PT0PX0XXXPSPT1PX1PT0PX000000110中斷響應(yīng)過(guò)程。了解了上述中斷的過(guò)程,就不難解中斷響應(yīng)的條件了。在下列三種情況之一時(shí),CPU將封鎖對(duì)中斷的響應(yīng):CPU正在處理一個(gè)同級(jí)或更高級(jí)別的中斷請(qǐng)求。 現(xiàn)行的機(jī)器周期不是當(dāng)前正執(zhí)行指令的最后一個(gè)周期。我們知道,單片機(jī)有單周期、雙周期、三周期指令,當(dāng)前執(zhí)行指令是單字節(jié)沒有關(guān)系,如果是雙字節(jié)或四字節(jié)的,就要等整條指令都執(zhí)行完了,才能響應(yīng)中斷(因?yàn)橹袛嗖樵兪窃诿總€(gè)機(jī)器周期都可能查到的)。 當(dāng)前正執(zhí)行的指令是返回批令

42、(RET1)或訪問(wèn)IP、IE寄存器的指令,則CPU至少再執(zhí)行一條指令才應(yīng)中斷。這些都是與中斷有關(guān)的,如果正訪問(wèn)IP、IE則可能會(huì)開、關(guān)中斷或改變中斷的優(yōu)先級(jí),而中斷返回指令則說(shuō)明本次中斷還沒有處理完,所以都要等本指令處理結(jié)束,再執(zhí)行一條指令才可以響應(yīng)中斷。 T0 T1中斷服務(wù)程序 定時(shí)器T0中斷服務(wù)程序定時(shí)器T0用于時(shí)間計(jì)時(shí)。定時(shí)溢出中斷周期可分為設(shè)為50ms和10ms。中斷進(jìn)去后,先判斷是時(shí)鐘計(jì)時(shí)還是秒表計(jì)時(shí),時(shí)鐘計(jì)時(shí)累計(jì)中斷20次(1 s)時(shí),對(duì)秒表數(shù)單元進(jìn)行加1操作,秒表計(jì)時(shí)每12ms進(jìn)行加1操作。時(shí)鐘計(jì)數(shù)單元地址分別在70H71H(秒)、76H77H(分)、78H79H(時(shí)),最大計(jì)時(shí)

43、值為23時(shí)59分59秒。而秒表計(jì)時(shí)單元地址也在70H71H(0.01毫秒)、76H77H(秒)和78H79H(分),最大計(jì)時(shí)器為99分59.99秒。7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH)。在計(jì)數(shù)中采用十進(jìn)制BCD碼計(jì)時(shí),滿60(秒表功能時(shí)有100)進(jìn)位,T0中斷服務(wù)程序執(zhí)行流程見圖。圖10 T0中斷服務(wù)程序中斷服務(wù)程序T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的閃亮.在時(shí)間調(diào)整狀態(tài)下,每過(guò)0.3s,將對(duì)應(yīng)單元的顯示數(shù)據(jù)換成熄滅符數(shù)據(jù)(#0AH).這樣在調(diào)整數(shù)據(jù)時(shí),對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)會(huì)間隔閃亮.5 溫度數(shù)據(jù)的計(jì)算處理方法從DS18B20讀取出的二進(jìn)制值必須先轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。

44、因?yàn)镈S18B20的轉(zhuǎn)換精度為912位可選的,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0.0625為步進(jìn)的,即溫度值為溫度寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。通過(guò)觀察表可以發(fā)現(xiàn)一個(gè)十進(jìn)制值和二進(jìn)制值之間有很明顯的關(guān)系,就是把二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一個(gè)字節(jié),這個(gè)字節(jié)的二進(jìn)制化為十進(jìn)制值后,就是溫度值的百、十、個(gè)位置,而剩下的低字節(jié)的低半字節(jié)化成十進(jìn)制后,就是溫度值的小數(shù)部分。小數(shù)部分因?yàn)槭前雮€(gè)字節(jié),所以二進(jìn)制值范圍是0F,轉(zhuǎn)換成十進(jìn)制小數(shù)值就是0.0625的倍數(shù)(015位)。這樣需要4位的數(shù)碼管來(lái)顯示小數(shù)部分,實(shí)際應(yīng)用不

45、必有這么高的精度,采用1位數(shù)碼管來(lái)顯示小數(shù),可以精確到0.1。下表就是二進(jìn)制和十進(jìn)制的近似對(duì)應(yīng)關(guān)系表。小數(shù)部分二進(jìn)制值0123456789ABCDEF十進(jìn)制值0011233455667889(三) 調(diào)試及性能分析1 硬件調(diào)試硬件調(diào)試時(shí),可先檢查電路的焊接是否正確,然后可用萬(wàn)用表測(cè)試或通電檢測(cè)。2軟件調(diào)試 軟件調(diào)試時(shí)可先用編寫顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、讀出子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新等子程序的編程及調(diào)試。3性能分析 用制作的溫度計(jì)和已有的成品溫度計(jì)來(lái)同時(shí)測(cè)量比較,由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在0.1以內(nèi),另外-55到+1

46、25的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低壓供電特性可做成用電池供電的手持電子溫度計(jì)。結(jié) 論時(shí)間轉(zhuǎn)瞬即逝,近2個(gè)月的畢業(yè)設(shè)計(jì)已經(jīng)結(jié)束了,從這次畢業(yè)設(shè)計(jì)中我再一次的將老師所教的知識(shí)應(yīng)用于實(shí)踐,著實(shí)體會(huì)到理論與實(shí)踐相結(jié)合的重要性。在這次對(duì)單片機(jī)的研究中,不但更深一步的對(duì)單片機(jī)的各個(gè)端口功能進(jìn)行了研究,并且對(duì)單片機(jī)的接口電路有了新的認(rèn)識(shí),還第一次了解到傳感技術(shù),對(duì)最近的先進(jìn)溫度傳感器DS18B20有了更深入的研究,對(duì)于匯編語(yǔ)言的使用也有了更進(jìn)一步的研究。在這次設(shè)計(jì)過(guò)程中,我不但學(xué)到了不少課本上學(xué)習(xí)不到的知識(shí),還在這次學(xué)習(xí)中體會(huì)到了導(dǎo)師的關(guān)愛,同學(xué)的幫助可以說(shuō)這次畢業(yè)設(shè)計(jì)使我受益非淺。 附

47、錄1 控制源程序清單DS18B20溫度計(jì);采用4位LED共陽(yáng)顯示器顯示測(cè)溫值,顯示精度0.1,顯示范圍-55+125;用AT89C2051單片機(jī),12MHz晶振; 常數(shù)定義TIMEL EQU 0E0H ;20ms,定時(shí)器0時(shí)間常數(shù)TIMEH EQU 0B1HTEMPHEAD EQU 36H ;工作內(nèi)定義BITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEST1 BIT BITST.3TEST2 BIT BITST.4TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;

48、引腳定義TEMPDIN BIT P3.4 ORG 0000H LJMP START ORG 000BH LJMP T0IT ;系統(tǒng)初始化 ORG 0100HSTART: CLR TEST1 CLR TEST2 MOV SP,#30HCLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00100001B MOV TH0,#TIMEH MOV TL0,#TIMEL SJMP INITERROR: NOP LJMP STARTINIT: NOP NOP SETB ET0 SETB T

49、R0 SETB EA MOV PSW,#00H MOV 70H,#0BH MOV 71H,#0BH MOV 72H,#0BH MOV 73H,#0BH MOV R6,#05HL0: LCALLDISP1 ;調(diào)用顯示子程序 JNB TIME1SOK,L0 CLR TIME1SOK LCALL READTEMP ;溫度轉(zhuǎn)換開始 LCALL READTEMP1 ;讀出溫度值子程序 MOV 7EH,TEMPL ANL 7EH,#0F0H MOV 7FH,TEMPHL1: LCALL DISP1 ;調(diào)用顯示子程序 JNB TIME1SOK,L1 CLR TIME1SOK LCALL READTEMP ;溫度轉(zhuǎn)換開始 LCALL READTEMP1 MOV A,TEMPH CJNE A,7FH,L0 MOV A,TEMPL ANL A,#0F0H CLR C SUBB A,#30HL2:ADD A,#10H CJNE A,7EH,L3 MOV 7EH,TEMPL ANL 7EH,#0F0H LCALL CONVTEMP ;溫度BCD碼計(jì)算處理子程序 LCALL DISPBCD ;顯示區(qū)BCD碼溫度值刷新子程序 LJMP MAIN

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論