




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 畢業(yè)設(shè)計(論文) 第 48 頁緒 論本設(shè)計的目的是設(shè)計出一種基于單片機和智能溫度傳感器的溫度檢測系統(tǒng),應(yīng)用這樣的技術(shù)可以使溫度測量技術(shù)可以更廣泛的應(yīng)用在人們的生活當(dāng)中。溫度監(jiān)控、報警系統(tǒng)如今已經(jīng)廣泛應(yīng)用于人類生產(chǎn)、生活的各個領(lǐng)域。如家電、汽車、材料、電力電子、工業(yè)生產(chǎn)等。在半導(dǎo)體集成電路芯片和數(shù)字技術(shù)沒有廣泛運用的過去,實現(xiàn)對溫度的測量和監(jiān)控,只能依賴于對溫敏電子元器件的模擬物理量進行測量,進而轉(zhuǎn)換為直觀的測量結(jié)果。從硬件電路設(shè)計方面來說,開發(fā)起來很麻煩,費公費時??垢蓴_的問題也較突出。由于體積相對大一些,使用起來也不是很方便。目前,國際上的溫度傳感器正從模擬式、由集成化向智能化的方向飛速發(fā)
2、展。如今,隨著數(shù)字溫度傳感器的誕生,曾經(jīng)令人眼花繚亂的電路,密密麻麻焊接在一起的元器件,如今已經(jīng)被一個小小的毫不起眼的數(shù)字傳感器代替了。由于溫度傳感器逐漸向著數(shù)字化、只能化的方向發(fā)展,目前基于溫度探測的監(jiān)控或者報警系統(tǒng)也產(chǎn)生了深刻的變化。電路設(shè)計的更簡單,也部分簡化了軟件的編寫。另外,無論是響應(yīng)速度、系統(tǒng)運行周期、抗干擾能力等等指標(biāo),都大大優(yōu)于傳統(tǒng)的、基于模擬傳感器的測溫系統(tǒng)。本設(shè)計采用DS18B20智能數(shù)字溫度傳感器實現(xiàn)并設(shè)計出一個關(guān)于溫度測量的系統(tǒng)。一、主要元器件簡介 隨著大規(guī)模集成電路技術(shù)的發(fā)展,將CPU、Memory、I/O接口等計算機的主要電路部件“濃縮”在一塊集成電路芯片上,就形成
3、了芯片級的計算機系統(tǒng),因為該系統(tǒng)是由單一芯片構(gòu)成,故稱之為單片微型計算機(Single ChipComputer),簡稱單片機。(一) 元器件AT89C2051簡介AT89C2051是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含2KB的可反復(fù)擦寫的只讀Flash程序存儲器和128 B的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元。 AT89C2051是一個功能強大的單片機,但它只有20個引腳,15個雙向輸入/輸出(I/O)端口,其中P1是一個完整的8位雙向I/O口,兩個
4、外中斷口,兩個16位可編程定時計數(shù)器,兩個全雙向串行通信口,一個模擬比較放大器。 同時AT89C2051的時鐘頻率可以為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時/計數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進入繼續(xù)工作狀態(tài)。省電模式中,片內(nèi)RAM將被凍結(jié),時鐘停止振蕩,所有功能停止工作,直至系統(tǒng)被硬件復(fù)位方可繼續(xù)運行。主要功能特性: · 兼容MCS51指令系統(tǒng)· 2k可反復(fù)擦寫(>1000次)Flash ROM · 15個雙向I/O口· 6個中斷源 · 兩個16位可編程定時/計數(shù)
5、器· 2.7-6.V的寬工作電壓范圍· 時鐘頻率0-24MHz· 128x8B內(nèi)部RAM · 兩個外部中斷源· 兩個串行中斷 · 可直接驅(qū)動LED· 兩級加密位 · 低功耗睡眠功能· 內(nèi)置一個模擬比較放大器 · 可編程UARL通道· 軟件設(shè)置睡眠和喚醒功能A引腳說明: P1口:它是8位雙向口線,即P1.0P1.7??谝_P1.0(12腳)和1.1(13腳)用于外部接口工作時,要求配置外部的上拉電阻;P1.2P1.7內(nèi)部設(shè)有上拉電阻,用于外部接口工
6、作時由外部負(fù)載工作方式?jīng)Q定是否配置上拉電阻。P1口帶有輸出緩沖器,可吸收20mA的電流并能直接驅(qū)動LED顯示。P1口的功能之一是在閃速編程和程序校驗期間接收代碼數(shù)據(jù)(即編程的數(shù)據(jù)輸入口)。 P3口:它是帶有內(nèi)部上拉電阻的7位雙向口線,即P3.0P3.5和P3.7。P3.6因內(nèi)部功能的需要,它雖是通用的I/O口引腳但不可訪問。P3口的其它特性與P1口相同,此外P3口還具有第二功能。 復(fù)位端RST(1腳):當(dāng)1腳加“H”高電平時芯片內(nèi)部的功能電路復(fù)位,此時I/O口引腳復(fù)位到“1”電平。 XTAL1(5腳):振蕩器外接晶振,內(nèi)部時鐘發(fā)生器輸入。 XTAL2(4腳):振蕩器外接晶振、反向放大器輸出。
7、電源端20腳(+2.76V)和10腳(地端)。B振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。 C芯片擦除:整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89
8、C2051設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。 (二)DS18B20簡介DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。可以分別在93.75 ms和750 ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B
9、20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。 圖1 DS18B20 內(nèi)部結(jié)構(gòu)圖獨特的單線接口方式:DS18B20與微處理器連接時僅需一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。 獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處器與DS18B20的雙向通訊。 在使用中不需要任何外圍元件。 可用數(shù)據(jù)線供電,電壓范圍:+3.0+5.5 V。 測溫范圍:-55 +125 。固有測溫分辨率為0.5 。 通過編程可實現(xiàn)912位的數(shù)
10、字讀數(shù)方式。 用戶可自設(shè)定非易失性的報警上下限值。 支持多點功能,多個DS18B20可并聯(lián)在惟一的三線上實現(xiàn)多點測溫 負(fù)壓特性,電源極性接反時溫度計不會因發(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檢測CRC48b序列號8b工廠代號(10H) MSB LSB MSB LSB MSB LSB 開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前56位的CRC校驗碼,這也是多個DS18B20可以采用一線進行通信的原因。
11、; 非易市失性溫度報警觸發(fā)器TH和TL,可通過軟件寫入用戶報警上下限。 高速暫存存儲器 DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM。后者用于存儲TH,TL值。數(shù)據(jù)先寫入RAM,經(jīng)校驗后再傳給E2RAM。而配置寄存器為高速暫存器中的第5個字節(jié),他的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。 低5位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,
12、用戶不要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來設(shè)置分辨率,如表1所示(DS18B20出廠時被設(shè)置為12位)。表1 R1與R0模式表R1 R0 分辨率 溫度最大轉(zhuǎn)換時間/mm0 0 9位 93.750 1 10 187.51 0 11 275.001 1 12 750.00 由表1可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間就越長。因此,在實際應(yīng)用中要在分辨率和轉(zhuǎn)換時間權(quán)衡考慮。 高速暫存存儲器除了配置寄存器外,還有其他8個字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第68字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀
13、出的是前面所有8個字節(jié)的CRC碼,可用來保證通信正確。溫度低位溫度高位THTL配置保留保留保留8位CR當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1,2字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式以0062 5 /LSB形式表示。溫度值格式如下:232221202-12-22-32-4SSSSS262524對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,先將補碼變換為原碼,再計算十進制值。表2是對應(yīng)的一部分溫度值。表2 部分溫度值溫度/C 二進制表示 十六
14、進制表示+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)換后,就把測得的溫度值與TH,TL作比較,若T>TH或T<TL,則將該器件內(nèi)的告警標(biāo)志置位,并對主機發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只DS18B2
15、0同時測量溫度并進行告警搜索。 CRC的產(chǎn)生 在64 b ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗碼(CRC)。主機根據(jù)ROM的前56來計算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。斜率累加器計數(shù)比較器預(yù)置減法計數(shù)器1低溫系數(shù)振蕩器預(yù)置減到0溫度寄存器減法計數(shù)器2高溫系數(shù)振蕩器減到0 圖2 DS18B20 測溫原理圖2DS18B20的測溫原理DS18B20的測溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小1,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)
16、晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在-55 所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,
17、停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖2中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。 另外,由于DS18B20單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。各種操作的時序圖與DS1820相同。 圖3 DS18B20與微處理器的典型連接3 DS18B2
18、0與單片機的典型接口設(shè)計以MCS51單片機為例,圖3中采用寄生電源供電方式, P11口接單線總線為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管和89C51的P10來完成對總線的上拉2。當(dāng)DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10 s。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三態(tài)的。主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:初始化、ROM操作指令、存儲器操作指令。假設(shè)單片機系統(tǒng)所用的晶振頻率為12 MHz,根據(jù)DS18B20的初始化時序、寫時序
19、和讀時序,分別編寫3個子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始,實際在實驗中不用這種方式,只要在數(shù)據(jù)線上加一個上拉電阻4.7 k,另外2個腳分別接電源和地。4DS18B20的精確延時問題雖然DS18B20有諸多優(yōu)點,但使用起來并非易事,由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成。因此,對讀寫的操作時序要求嚴(yán)格。為保證DS18B20的嚴(yán)格I/O時序,需要做較精確的延時。在DS18B20操作中,用到的延時有15 s,90 s,270 s,540 s等。因這些延時均為15 s的整數(shù)倍,因此可編
20、寫一個DELAY15(n)函數(shù),源碼如下:void delay15(n)undigned char n;do -nop- ( );/01- nop- ( );/02- n- while(n)只要用該函數(shù)進行大約15 s×N的延時即可。有了比較精確的延時保證,就可以對DS18B20進行讀寫操作、溫度轉(zhuǎn)換及顯示等操作。 5DS18B20 的讀寫操作 復(fù)位對 DS18B20 操作時,首先要將它復(fù)位。復(fù)位時,DQ 線被拉為低電平,時間為 480960ìs;接著將數(shù)據(jù)線拉為高電平,時間為 1560ìs;最后DS18B20 發(fā)出 60240ìs 低電平作應(yīng)答信號,這
21、時主機才能進行其他操作。 寫操作 將數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫起始信號。從 DQ 線的下降沿起計時,在 15ìs 到 60ìs 這寫 1;開始另一個寫周期前,必須有 1ìs 以上的高電平恢復(fù)期。每個寫周期必須要有 60ìs 以上的持續(xù)期。 讀操作 主機將數(shù)據(jù)線從高電平拉至低電平 1ìs 以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀起始信號。從主機將數(shù)據(jù)線從高電平拉至低電平起 15ìs 至 60ìs,主機讀取數(shù)據(jù)。每個讀周期最短的持續(xù)期為 60ìs。周期之間必須有 1ìs 以上的高電平恢復(fù)期。(三)晶振的簡
22、介石英晶體受到交變點電場作用時,即在兩極扳上加以交流電壓,石英晶體更會產(chǎn)生機械震動。反過來,若對石英晶體施加周期性機械力,使其發(fā)生震動,則又會在晶體表面出現(xiàn)相應(yīng)的交電電場和電荷。這種現(xiàn)象稱為壓晶體諧振器是振電路的核心元件,真結(jié)構(gòu)和外行如圖3所示。(四)LED顯示器結(jié)構(gòu)與分類LED顯示器內(nèi)部由7段發(fā)光二極管組成,因此亦稱之為7段LED顯示器,由于主要用于顯示各種數(shù)字符號,故稱之為LED數(shù)碼管。每個顯示器還有一個圓點形發(fā)光二極管(用符號dp表示),用于顯示小數(shù)點, LED顯示器可以分為共陰極與共陽極兩種. 共陰極LED顯示器:各二極管陰極連在一起,公共端接地電平時,若某段陽極加上高電平則該段發(fā)光二
23、極管就導(dǎo)通發(fā)光,輸入電平的段則不發(fā)光。 共陽極LED顯示器:各二極管的陽極連在一起,公共端接高電平時,若某端陰極加上低電平則該段發(fā)光二極管就導(dǎo)通發(fā)光,而輸入高電平的段則不發(fā)光。LED數(shù)碼管通常有紅色、綠色、黃色三種,以紅色應(yīng)用最多。由于二極管的發(fā)光材料不同,數(shù)碼管有高亮與普亮之分,應(yīng)用時根據(jù)數(shù)碼管的規(guī)格與顯示方式等決定是否加驅(qū)動電路。7段LED顯示器可采用硬件譯碼與軟件譯碼兩種方式。在數(shù)字電路中曾介紹硬件譯碼顯示方法,如利用74LS系列等實現(xiàn)譯碼顯示,這里主要介紹軟件方式實現(xiàn)譯碼顯示。加在顯示器上對應(yīng)各種顯示字符的二進制數(shù)據(jù)稱為段碼。數(shù)碼管中,7段發(fā)光二極管加上一個小數(shù)點位共計8段,因此段碼為
24、8位二進制數(shù),由于點亮方式不同,共陰共陽兩種LED數(shù)碼管的段碼是不同的見表共陽極數(shù)碼管。某段加高電平“1”不亮,加低電平“0”亮。共陰極數(shù)碼管。某段加高電平“1”亮,加低電平“0”不亮。與共陽極段碼互為反碼。二、硬件電路設(shè)計(一) 系統(tǒng)硬件電路數(shù)字式溫度計要求測量溫度范圍為-50110,精度誤差在0.1以內(nèi),LED數(shù)碼管直接讀出顯示。按照系統(tǒng)設(shè)計功能要求,確定系統(tǒng)由3個模塊組成:主控制器、測溫電路及顯示電路。硬件系統(tǒng)的總體構(gòu)成框架如圖4所示。AT89C2051主控制器顯示電路DS18B20掃描電路圖4 數(shù)字溫度計電路結(jié)構(gòu)框架溫度計電路設(shè)計原理圖如圖2.2所示,控制器使用單片機AT89C2051
25、,溫度傳感器使用DS18B20,擁位共陽LED數(shù)碼管以動態(tài)掃描法實現(xiàn)溫度顯示。(二)顯示電路在單片機應(yīng)用系統(tǒng)中,通常具有多位LED顯示器,在編程時采用動態(tài)顯示方式。所謂動態(tài)顯示是指利用單片機控制顯示器逐位點亮,而不是同時點亮。由于人眼的視覺殘留效應(yīng),仍然感覺顯示器是同時點亮的,但要求顯示器動態(tài)點亮的速度應(yīng)足夠快,否則會有閃爍感。在實現(xiàn)動態(tài)顯示時,除了必須給各位數(shù)碼管提供段碼外還必須對各位顯示器進行位的控制,即進行段控與位控。工作時,各位數(shù)碼管的段控線對應(yīng)并聯(lián)在一起,由一個數(shù)碼管,并送出相應(yīng)的段碼。區(qū)的建立,顯示緩沖區(qū)是指在內(nèi)存中開辟的一塊存儲區(qū)域,專門用于存放待顯示的數(shù)據(jù),存儲區(qū)域大小至少應(yīng)與
26、LED數(shù)碼管位數(shù)相同。設(shè)顯示緩沖區(qū)單元為30H35H,顯示內(nèi)容自右至左為1、2、3、4、5、6,則緩存與LED數(shù)碼管對應(yīng)關(guān)系如下表:數(shù)碼管LED5LED4LED4LED2LED1LED0緩存單元35H34H33H32H31H30H顯示數(shù)據(jù)06H05H04H03H02H01H(三)時鐘電路MCS-51的時鐘信號可以由兩種方式產(chǎn)生,一種是內(nèi)部方式,利用芯片內(nèi)部的振路;另一種為外部方式。由于MCS-51有HMOS型與CHMOS型,它們的時鐘電路有一定的區(qū)別,這里僅介紹通過常用的HMOS型的時鐘電路。A. 內(nèi)部時鐘方式MCS-51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分
27、別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體或陶瓷諧振器一起構(gòu)成一個自激振蕩器。雖然有內(nèi)部振蕩電路,但要形成時鐘,必須外接元件,外接晶體以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中,外接電容的大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性,晶體可在1.212MHz之間任選,C1和C2的電容一般在20100pF之間選擇。若頻率穩(wěn)定性要求不高,可選用較為廉價的陶瓷諧振器,C1和C2的典型值約為47pF。在設(shè)計印刷電路板時,應(yīng)采用溫度穩(wěn)定性能好的高頻電容,晶體或陶瓷振蕩器和電容應(yīng)盡可能與單片機芯片靠近安裝,以減少寄生電容,提高系統(tǒng)穩(wěn)定性和可靠
28、性。B. 外部時鐘電路外部時鐘方式是利用外部振蕩器信號源即時鐘源直接接入XTAL1和XTAL2。通常XTAL1接地,XTAL2接外部時鐘。由于XTAL2的邏輯電平不是TTL的,故建議外接一個4.710K的上拉電阻。(四)復(fù)位電路復(fù)位是單片機的初始化操作,其目的是使CPU及各個寄存器處于一個確定的狀態(tài),把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。系統(tǒng)正常上電可以復(fù)位,另外,當(dāng)系統(tǒng)程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,也需要按復(fù)位恢復(fù)系統(tǒng)正常工作狀態(tài)。復(fù)位操作后對某些特殊功能寄存器有影響。復(fù)位還對單片機的少數(shù)引腳有影響,例如把ALE和PSEN變?yōu)闊o效,即ALE=0和PSE
29、N=1。復(fù)位方式主要有以下兩種。上電自動復(fù)位方式,該方式是單片機接通電源后,對復(fù)位電路的電容充電來實現(xiàn)的。手動復(fù)位方式,該方式分按鍵電平復(fù)位和脈沖電平復(fù)位。我們只用第一種,相當(dāng)于RST端通過電阻與VCC電源接通而實現(xiàn)的。特殊功能寄存器初態(tài)特殊功能寄存器初態(tài)ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0-P30FFHSCON00HIPXXX00000BSBUF不定IE0XX00000BPCON0XXXXXXXB三、軟件程序設(shè)計與調(diào)試(一)主程序主程序的主要功能是負(fù)責(zé)溫度的實時顯示、讀出并處理DS1
30、8B20的測量溫度值,溫度測量每1S進行一次。其流程圖如下:初始化調(diào)用顯示子程序N1s到?YN初次上電?讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令圖5 DS18B20溫度計主程序流程(二)讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。流程圖如下:發(fā)DS18B20復(fù)位命令發(fā)調(diào)過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗N9字節(jié)完?YNCRC校驗正確?Y移入溫度暫存器結(jié)束 圖6 讀出溫度子程序流程圖1溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本
31、程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令程序流程圖如圖所示發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束圖7 溫度轉(zhuǎn)換命令子程序流程圖2. 計算溫度子程序 計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負(fù)的判定,其程序流程圖如圖所示。開始N溫度零下?Y置“+”標(biāo)志溫度值取補碼置“”標(biāo)志計算小數(shù)位溫度BCD值計算整數(shù)位溫度BCD值結(jié)束圖8 計算溫度子程序流程圖3顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當(dāng)最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖所示。溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)
32、0?百位數(shù)顯示數(shù)據(jù)(不顯示符號)十位數(shù)顯示符號百位數(shù)不顯示結(jié)束圖9數(shù)據(jù)刷新子程序A.計數(shù)脈沖提供方式 計數(shù)方式時:計數(shù)脈沖從片外由P3.4(T0)或P3.5(T1)引入,下降觸發(fā)計數(shù)器加1。 定時方式時:Ti由內(nèi)部時鐘頻率定時,每一個機器周期使T0或T1加1計數(shù)。定時方式究其實質(zhì),仍然是單片機內(nèi)部的T0或T1在計數(shù)。由于晶振頻率確定后,每一機器周期所需的時間也確定,因而片內(nèi)T0或T1計一確定數(shù)值所需的時間也確定了。定時方式的實質(zhì),就是利用每一個機器周期加1計數(shù),使計數(shù)過程變?yōu)槎〞r過程。設(shè)fosc=6MHz,則T=2µs,計數(shù)器加1,耗時2µs。B.工作過程。定時/計數(shù)器Ti
33、使用前先初始化編程,決定工作方式;再利用送數(shù)指令(MOV)將計數(shù)初值送入THi和Tli;之后用指令(SETB Tri)啟動Ti開始計數(shù)。未計滿數(shù)前溢出標(biāo)志(TCON的Tfi)為0,計滿數(shù)溢出(計數(shù)器的值從全F再加1變?yōu)?)時,CPU(硬件)自動將計數(shù)器清0,并溢出標(biāo)志Tfi置為1。定時/計數(shù)器的控制初始化編程就是T0、T1使用前要用指令向TMOD寫入工作方式字,向TMOD寫入工作方式字,向TCON寫入命令字,向T0、T1寫入計數(shù)初值。這叫定時/計數(shù)器的初始化編程。工作方式寄存器TMOD。用于設(shè)定工作方式(或稱模式),即決定是用T0,還是用T1;是用來作定時,還是用來作計數(shù);是多少位的計數(shù)器,即
34、方式幾。TMOD不能按位尋址,TMOD各位名稱及功能如下表。D7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0TMOD的高4位用來控制T1,低4位用來控制T0。下面以低4位為例。GATE:啟動計數(shù)方式控制位。GATE=0為軟啟動,即用指令SETB TR0使T0開始計數(shù);GATE=1為硬啟動,即用指令SETB TR0外,還需置P3.2或P3.3引腳為高電平才能開始計數(shù)。C/T:計數(shù)/定時方式控制位。C/T=0為定時方式;C/T=1為計數(shù)方式。M1M0:工作方式(模式)控制位。M1M0=00、01、10、11分別為方式0、1、2、3。控制及標(biāo)志寄存器TCON
35、。用于控制定時器的啟、停、溢出標(biāo)志、外部中斷觸發(fā)方式。TCON可按位尋址,其各位位地址見表 ,各位符號及功能如下D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TFi:定時器Ti溢出標(biāo)志位。計數(shù)滿溢出(從全F再加1變?yōu)?叫計數(shù)滿溢出,簡稱溢出)時,CPU自動置Tfi=1,并申請中斷。此位(TFi)在中斷且響應(yīng)中斷后由CPU自動將TFi清0,若未開中斷(用查詢法編程)時需用軟件(指令)將TFi清0。沒有計滿數(shù)(上電復(fù)位時的0不算溢出)時TFi=0。例如,TF0=0表示T0還未計滿數(shù),TF0=1表示T0已計滿數(shù)溢出。TRi:定時器Ti的啟、停控制位。為
36、1表示啟動Ti開始計數(shù),為0表示停止Ti計數(shù)。例如,TR0=1表示啟動T0的計數(shù),TR0=0表示停止T0計數(shù)(即便有計數(shù)脈沖輸入或機器周期脈沖也不計數(shù))。IEi和ITi的意義見后面的4.1.4節(jié)中斷服務(wù)程序。4 中斷服務(wù)程序A.中斷概念利用軟、硬件配合,根據(jù)某種需要停止(中斷)正在執(zhí)行的程序而轉(zhuǎn)向另一專門程序,結(jié)束后返回到原斷開處,繼續(xù)執(zhí)行被中斷的程序,這個過程叫中斷。B.中斷過程當(dāng)主程序運行到某一句指令時,有某中斷源向CPU發(fā)出中斷申請,若滿足中斷響應(yīng)的條件時,CPU會對該中斷源做出響應(yīng)(撤消中斷請求),把該句指令執(zhí)行完后,會把斷點地址自動壓棧保存,并使程序先轉(zhuǎn)至該中斷源入口地址(矢量地址)
37、處,在該處執(zhí)行一條轉(zhuǎn)移指令(AJMP或LJMP),再轉(zhuǎn)至該中斷源的中斷服務(wù)子程序首句,執(zhí)行中斷子程序,執(zhí)行完中斷子程序后,用RETI指令返回到主程序中斷點地址處,繼續(xù)執(zhí)行主程序。C.中斷控制中斷源發(fā)出中斷請求會將相應(yīng)的中斷請求標(biāo)志位置1,用以向CPU申請中斷。外部中斷0與1由P3.2與P3.3引腳輸入中斷請求信號,其余中斷源沒有外部申請中斷的引腳,只靠中斷請求標(biāo)志位置1發(fā)出中斷請求。 定時控制寄存器TCON中的中斷請求標(biāo)志位為“1”表示中斷請求,為“0”表示撤消請求。 TF1、TF0:定時器溢出中斷標(biāo)志位。(上節(jié)以詳細(xì)介紹) IE1、IE0:外部中斷請求標(biāo)志位。當(dāng)某外部中斷源發(fā)出中斷請求(將引
38、腳INTI置1或輸入下降沿時,CPU將IEi位置為1,表示該外部中斷源申請中斷。 IT1、IT0:外部中斷觸發(fā)方式控制位。ITi為1時,為邊沿觸發(fā)方式;ITi為0時,為電平觸發(fā)方式D.中斷請求源: 外部中斷請求源:即外中斷0和1,經(jīng)由外部引腳引入的,在單片機上有兩個引腳,名稱為INT0、INT1,也就是P3.2、P3.3這兩個引腳。在內(nèi)部的TCON中有四位是與外中斷有關(guān)的。IT0:INT0觸發(fā)方式控制位,可由軟件進和置位和復(fù)位,IT0=0,INT0為低電平觸發(fā)方式,IT0=1,INT0為負(fù)跳變觸發(fā)方式。這兩種方式的差異將在以后再談。IE0:INT0中斷請求標(biāo)志位。當(dāng)有外部的中斷請求時,這位就會
39、置1(這由硬件來完成),在CPU響應(yīng)中斷后,由硬件將IE0清0。IT1.IE1的用途和IT0、IE0相同。內(nèi)部中斷請求源TF0:定時器T0的溢出中斷標(biāo)記,當(dāng)T0計數(shù)產(chǎn)生溢出時,由硬件置位TF0。當(dāng)CPU響應(yīng)中斷后,再由硬件將TF0清0。TF1:與TF0類似。T1.R1:串行口發(fā)送、接收中斷,在串口中再講解。中斷允許寄存器IE在MCS-51中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進行位尋址的8位中斷允許寄存器IE來控制的。見下表EAXXESET1EX1ET0EX0其中EA是總開關(guān),如果它等于0,則所有中斷都不允許。ES串行口中斷允許。如果我們要設(shè)置允許外中斷1,定時器1中斷允許,其它不允許,則IE
40、可以是EAXXESET1EX1ET0EX010001100五個中斷源的自然優(yōu)先級與中斷服務(wù)入口地址外中斷0:定時器0:外中斷1:定時器1:串口 :0003H 000BH 0013H 001BH 0023H這樣寫的目的,就是為了讓出中斷源所占用的向量地址。當(dāng)然在程序中沒用中斷時直接開始寫程序,在原理上并沒有錯,但在實際工作中最好不這樣做。優(yōu)先級:單片機采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級、哪些中斷是低優(yōu)先級,由于只有兩級,必有一些中斷處于同一級別,處于同一級別的,就由自然優(yōu)先級確定。開機時,每個中斷都處于低優(yōu)先級,我們可以用指令對優(yōu)先級進行設(shè)置。中斷
41、優(yōu)先級中由中斷優(yōu)先級寄存器IP來高置的,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。XXXPSPT1PX1PT0PX0XXXPSPT1PX1PT0PX000000110中斷響應(yīng)過程。了解了上述中斷的過程,就不難解中斷響應(yīng)的條件了。在下列三種情況之一時,CPU將封鎖對中斷的響應(yīng):CPU正在處理一個同級或更高級別的中斷請求。 現(xiàn)行的機器周期不是當(dāng)前正執(zhí)行指令的最后一個周期。我們知道,單片機有單周期、雙周期、三周期指令,當(dāng)前執(zhí)行指令是單字節(jié)沒有關(guān)系,如果是雙字節(jié)或四字節(jié)的,就要等整條指令都執(zhí)行完了,才能響應(yīng)中斷(因為中斷查詢是在每個機器周期都可能查到的)。 當(dāng)前正執(zhí)行的指令是返回批令
42、(RET1)或訪問IP、IE寄存器的指令,則CPU至少再執(zhí)行一條指令才應(yīng)中斷。這些都是與中斷有關(guān)的,如果正訪問IP、IE則可能會開、關(guān)中斷或改變中斷的優(yōu)先級,而中斷返回指令則說明本次中斷還沒有處理完,所以都要等本指令處理結(jié)束,再執(zhí)行一條指令才可以響應(yīng)中斷。 T0 T1中斷服務(wù)程序 定時器T0中斷服務(wù)程序定時器T0用于時間計時。定時溢出中斷周期可分為設(shè)為50ms和10ms。中斷進去后,先判斷是時鐘計時還是秒表計時,時鐘計時累計中斷20次(1 s)時,對秒表數(shù)單元進行加1操作,秒表計時每12ms進行加1操作。時鐘計數(shù)單元地址分別在70H71H(秒)、76H77H(分)、78H79H(時),最大計時
43、值為23時59分59秒。而秒表計時單元地址也在70H71H(0.01毫秒)、76H77H(秒)和78H79H(分),最大計時器為99分59.99秒。7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH)。在計數(shù)中采用十進制BCD碼計時,滿60(秒表功能時有100)進位,T0中斷服務(wù)程序執(zhí)行流程見圖。圖10 T0中斷服務(wù)程序中斷服務(wù)程序T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的閃亮.在時間調(diào)整狀態(tài)下,每過0.3s,將對應(yīng)單元的顯示數(shù)據(jù)換成熄滅符數(shù)據(jù)(#0AH).這樣在調(diào)整數(shù)據(jù)時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮.5 溫度數(shù)據(jù)的計算處理方法從DS18B20讀取出的二進制值必須先轉(zhuǎn)換成十進制值,才能用于字符的顯示。
44、因為DS18B20的轉(zhuǎn)換精度為912位可選的,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時,溫度寄存器里的值是以0.0625為步進的,即溫度值為溫度寄存器里的二進制值乘以0.0625,就是實際的十進制溫度值。通過觀察表可以發(fā)現(xiàn)一個十進制值和二進制值之間有很明顯的關(guān)系,就是把二進制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一個字節(jié),這個字節(jié)的二進制化為十進制值后,就是溫度值的百、十、個位置,而剩下的低字節(jié)的低半字節(jié)化成十進制后,就是溫度值的小數(shù)部分。小數(shù)部分因為是半個字節(jié),所以二進制值范圍是0F,轉(zhuǎn)換成十進制小數(shù)值就是0.0625的倍數(shù)(015位)。這樣需要4位的數(shù)碼管來顯示小數(shù)部分,實際應(yīng)用不
45、必有這么高的精度,采用1位數(shù)碼管來顯示小數(shù),可以精確到0.1。下表就是二進制和十進制的近似對應(yīng)關(guān)系表。小數(shù)部分二進制值0123456789ABCDEF十進制值0011233455667889(三) 調(diào)試及性能分析1 硬件調(diào)試硬件調(diào)試時,可先檢查電路的焊接是否正確,然后可用萬用表測試或通電檢測。2軟件調(diào)試 軟件調(diào)試時可先用編寫顯示程序并進行硬件的正確性檢驗,然后分別進行主程序、讀出子程序、溫度轉(zhuǎn)換命令子程序、計算溫度子程序、顯示數(shù)據(jù)刷新等子程序的編程及調(diào)試。3性能分析 用制作的溫度計和已有的成品溫度計來同時測量比較,由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在0.1以內(nèi),另外-55到+1
46、25的測量范圍使得該溫度計完全適合一般的應(yīng)用場合,其低壓供電特性可做成用電池供電的手持電子溫度計。結(jié) 論時間轉(zhuǎn)瞬即逝,近2個月的畢業(yè)設(shè)計已經(jīng)結(jié)束了,從這次畢業(yè)設(shè)計中我再一次的將老師所教的知識應(yīng)用于實踐,著實體會到理論與實踐相結(jié)合的重要性。在這次對單片機的研究中,不但更深一步的對單片機的各個端口功能進行了研究,并且對單片機的接口電路有了新的認(rèn)識,還第一次了解到傳感技術(shù),對最近的先進溫度傳感器DS18B20有了更深入的研究,對于匯編語言的使用也有了更進一步的研究。在這次設(shè)計過程中,我不但學(xué)到了不少課本上學(xué)習(xí)不到的知識,還在這次學(xué)習(xí)中體會到了導(dǎo)師的關(guān)愛,同學(xué)的幫助可以說這次畢業(yè)設(shè)計使我受益非淺。 附
47、錄1 控制源程序清單DS18B20溫度計;采用4位LED共陽顯示器顯示測溫值,顯示精度0.1,顯示范圍-55+125;用AT89C2051單片機,12MHz晶振; 常數(shù)定義TIMEL EQU 0E0H ;20ms,定時器0時間常數(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碼計算處理子程序 LCALL DISPBCD ;顯示區(qū)BCD碼溫度值刷新子程序 LJMP MAIN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)探索與福建事業(yè)單位考試試題及答案
- 2025年單組元肼、雙組元液體推力器項目建議書
- 確定2024園藝師考試的學(xué)習(xí)重點試題及答案
- 高效備考的面試題及答案
- 福建事業(yè)單位考試成功案例分享試題及答案
- 農(nóng)藝師考試反饋與調(diào)整試題及答案
- 福建事業(yè)單位考試備考的正確心態(tài)調(diào)整試題及答案
- 面對花藝師考試準(zhǔn)備事項試題及答案
- 農(nóng)藝師考試個性化復(fù)習(xí)計劃試題及答案
- 2025年衛(wèi)星導(dǎo)航定位系統(tǒng)項目合作計劃書
- 英語人教新起點(一起)五年級下冊-海尼曼分級閱讀G2《The Hug》教學(xué)設(shè)計
- Q∕SY 07007-2017 可溶橋塞和可溶球
- 智慧景區(qū)視頻監(jiān)控系統(tǒng)設(shè)計方案
- 第二節(jié)歐洲西部24
- 小學(xué)五年級下冊體育教案_(全冊)
- 平行四邊形的應(yīng)用動點問題
- 多媒體課件制作流程圖
- 關(guān)于調(diào)整城市下水道工人和環(huán)衛(wèi)工人津貼的文件
- MT_T 695-1997 煤礦用高倍數(shù)泡沫滅火劑通用技術(shù)條件_(高清版)
- 深靜脈置管術(shù)護理及肝素鈉封管的意義
- 萬科房地產(chǎn)集團公司全套管理制度及流程圖
評論
0/150
提交評論