溫度采集系統(tǒng)課程設(shè)計(jì)報(bào)告(共19頁(yè))_第1頁(yè)
溫度采集系統(tǒng)課程設(shè)計(jì)報(bào)告(共19頁(yè))_第2頁(yè)
溫度采集系統(tǒng)課程設(shè)計(jì)報(bào)告(共19頁(yè))_第3頁(yè)
溫度采集系統(tǒng)課程設(shè)計(jì)報(bào)告(共19頁(yè))_第4頁(yè)
溫度采集系統(tǒng)課程設(shè)計(jì)報(bào)告(共19頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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ōu)質(zhì)文檔-傾情為你奉上1、設(shè)計(jì)目的 1)查資料了解8255A和ADC0809AD轉(zhuǎn)換器的工作原理 2)原理圖設(shè)計(jì),用PROTEL畫出原理圖 3)軟件設(shè)計(jì),給出流程圖及源代碼并加注釋2、所用設(shè)備1)8088CPU2)DS18B20溫度傳感器3)A/D570轉(zhuǎn)換器4)8255A可編程并行接口5)3片LED顯示6)74LS138譯碼器3、設(shè)計(jì)內(nèi)容及步驟以8088 CPU 為核心設(shè)計(jì)一個(gè)溫度采集系統(tǒng),系統(tǒng)可以實(shí)現(xiàn)一路溫度的采集,在3位LED顯示器上顯示當(dāng)前溫度。本設(shè)計(jì)所用器件主要有傳感器,A/D轉(zhuǎn)換器,8088CPU,可編程并行接口8255,LED顯示器等。首先傳感器把所測(cè)的溫度轉(zhuǎn)換為電壓,輸入A

2、/D轉(zhuǎn)換器中進(jìn)行轉(zhuǎn)換,然后再把得到的二進(jìn)制數(shù)經(jīng)過(guò)CPU在LED上顯示出來(lái)系統(tǒng)總體方案按照設(shè)計(jì)要求我們把傳感器選擇DS18B20,A/D轉(zhuǎn)換采用AD570,把溫度傳感器采集過(guò)來(lái)的電壓信號(hào)直接傳給A/D 轉(zhuǎn)換器,然后通過(guò)8路數(shù)據(jù)接入8255可編程芯片,經(jīng)微處理器8088處理后輸出,通過(guò)LED顯示當(dāng)前采集的溫度值。圖-1 系統(tǒng)框圖4、程序設(shè)計(jì)(各個(gè)軟件模塊設(shè)計(jì)和流程圖)4.1溫度采集DS18B20的讀數(shù)據(jù)流程圖圖-2 溫度采集DS18B20的讀數(shù)據(jù)流程圖4.2 處理溫度BCD碼流程圖圖-3 處理溫度BCD碼流程圖4.3 顯示數(shù)據(jù)刷新流程圖圖-4 顯示數(shù)據(jù)刷新流程圖4.4系統(tǒng)總的流程圖圖-5系統(tǒng)總的流

3、程圖4.5系統(tǒng)總程序TEMPER_L DATA 36H ;溫度寄存器的低位 TEMPER_H DATA 35H ;溫度寄存器的高位 TEMPER_NUM DATA 60H ;保存溫度值 FLAG BIT 00H ;器件是否存在的標(biāo)志位,器件存在由軟件置1,否則清0 DQ BIT P1.0 ORG 0000H AJMP START ;*; /*主程序*/ * ;* ; ORG 0030H START: MOV SP,#70H CALL GET_TEMPER ;讀取溫度值 CALL TEMPER_COV ;讀取轉(zhuǎn)換后的溫度值 MOV R0,A CALL DISP CALL DELAY AJMP S

4、TART ;* /*查詢方式取得AD轉(zhuǎn)換結(jié)果子程序*/ * ;* READAD:MOV AL,92H ;方式字,端口AB為輸入方式,C為輸出方式OUT PORTCT,AL ;PORTCT為控制端口地址,設(shè)方式字MOV AL,01OUT PORTC ,AL ;使PC0為1,PORTC為C端口地址MOV AL,00OUT PORTC,AL ;使PC0為0,啟動(dòng)AD轉(zhuǎn)換W: IN AL,PORTB ;讀取端口B中的狀態(tài) RCR AL,01 ;如PB0為1,則再查詢 JC WMOV AL,01OUT PORTC,AL ;使PC0為1,撤銷啟動(dòng)信號(hào)IN AL,PORTA ;讀取轉(zhuǎn)換數(shù)據(jù) ;* ; /*取

5、得溫度子程序*/ * ;* ; GET_TEMPER: SETB DQ CALL CHECK ; MOV A,#0CCH ; 跳過(guò)ROM匹配(當(dāng)總線上只有一個(gè)器件時(shí)可跳過(guò)讀ROM命令) CALL DSWRITE ; 寫入命令 MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令 CALL DSWRITE NOP CALL DELAY CALL DELAY CALL CHECK MOV A,#0CCH ; 跳過(guò)ROM匹配 CALL DSWRITE MOV A,#0BEH ; 發(fā)出讀溫度命令 CALL DSWRITE CALL DSREAD ;讀取溫度的低位 MOV R0,#TEMPER_L MOV R0,

6、A ;存入TEMPER_L CALL DSREAD ;讀取溫度的低位 DEC R0 ;存入TEMPER_H MOV R0,A RET ; ;* ; /*讀DS18B20的程序,從DS18B20中讀出一個(gè)字節(jié)的數(shù)據(jù)*/ * ;* ; DSREAD: MOV R2,#8 READ1: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#01 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,READ1 RET ; ;* ; /*寫DS18B20子程序*/    

7、; * ;* ; DSWRITE: MOV R2,#8 CLR C WRITE1: CLR DQ MOV R3,#6 ;延時(shí)12US DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 ;46US DJNZ R3,$ SETB DQ NOP DJNZ R2,WRITE1 SETB DQ RET ; ;*; /*溫度轉(zhuǎn)換程序*/ * ;*; TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L ; 舍去溫度低位中小數(shù)點(diǎn)后的四位溫度數(shù)值 SWAP A MOV TEMPER_NUM,A MOV A,TEMPER_L JNB ACC.3,TEMPER_COV

8、1 ; 四舍五入去溫度值, INC TEMPER_NUM ;D3為1則加1,為0則舍去 TEMPER_COV1: MOV A,TEMPER_H ; 高位 ANL A,#07H ;溫度寄存器的高字節(jié)只有后3位有效 SWAP A ORL A,TEMPER_NUM ; 拼裝 MOV TEMPER_NUM,A ; 保存變換后的溫度數(shù)據(jù) CALL BIN_BCD RET ; ;* ; /*檢查器件是否存在子程序*/ * ;* ; CHECK: CALL DSINIT ; 初始化 JB FLAG,CHECK1 ; 檢查標(biāo)志位判斷器件是否存在 AJMP CHECK ; 若DS18B20不存在則繼續(xù)檢測(cè) CH

9、ECK1: CALL DELAY1 RET ; ;*; /*BCD碼轉(zhuǎn)換子程序*/ * ;* ; BIN_BCD: MOV DPTR,#TEMP_TAB MOV A,TEMPER_NUM MOVC A,A+DPTR MOV TEMPER_NUM,A RET ; ;* ; /*初始化子程序程序*/ ;初始化時(shí)序是由總線發(fā)出一個(gè)復(fù)位信號(hào),然后由器件發(fā) * ;出一個(gè)應(yīng)答信號(hào),表示該器件存在,并準(zhǔn)備好開始工作 ;* * ; DSINIT: SETB DQ NOP CLR DQ ;總線發(fā)一個(gè)復(fù)位信號(hào) MOV R0,#80H DJNZ R0,$ ; 延時(shí) SETB DQ ;拉高總線準(zhǔn)備檢測(cè) MOV R0,

10、#25H ;延時(shí) DJNZ R0,$ JNB DQ,INIT2 ;檢測(cè)是否有應(yīng)答信號(hào),有應(yīng)答信號(hào)跳轉(zhuǎn) AJMP INIT3 ; 延時(shí) INIT2: SETB FLAG ; 置標(biāo)志位,表示DS1820存在 AJMP INIT4 INIT3: CLR FLAG ; 清標(biāo)志位,表示DS1820不存在 AJMP INIT5 INIT4: MOV R0,#6BH DJNZ R0,$ ; 延時(shí) INIT5: SETB DQ ;拉高總線 RET ; ;* ; /*配置程序*/ * ;*; RE_CONFIG: JB FLAG,RE_CONFIG1 ; 若DS18B20存在,轉(zhuǎn)RE_CONFIG1 RET R

11、E_CONFIG1: MOV A,#0CCH ; 發(fā)SKIP ROM命令 CALL DSWRITE MOV A,#4EH ; 發(fā)寫暫存存儲(chǔ)器命令 CALL DSWRITE MOV A,#00H ; TH(報(bào)警上限)中寫入00H CALL DSWRITE MOV A,#00H ; TL(報(bào)警下限)中寫入00H CALL DSWRITE MOV A,#7FH ; 選擇12位溫度分辨率 CALL DSWRITE RET ; ;* ; /*顯示子程序*/ * ;* DISP: MOV A,R0 ;轉(zhuǎn)換結(jié)果低位 ANL A,#0FH ACALL DSEND ;顯示 MOV A,R0 SWAP A ANL

12、 A,#0FH ;轉(zhuǎn)換結(jié)果高位 ACALL DSEND ;顯示 RET DSEND: MOV DPTR,#SGTB1 MOVC A,A+DPTR ;取字符 MOV SBUF,A JNB TI,$ CLR TI RET ; ;* ; /*延時(shí)程序*/ * ;* ; DELAY: MOV R7,#00H DELAY0: MOV R6,#00H DJNZ R6,$ DJNZ R7,DELAY0 RET DELAY1: MOV R7,#20H DJNZ R7,$ RET ; ;* ; /*字符編碼*/ * ;* ; SGTB1:  DB   03H  ;0  

13、DB   9FH    ;1   DB   25H    ;2   DB   0DH    ;3  DB   99H    4 DB   49H    ;5 DB 41H   6   DB   1FH    ;7   DB   01H    ;8   DB   09H  

14、0; ;9   DB   11H    ;A   DB   0C1H  ;B   DB   63H    ;C   DB   85H    ;D   DB   61H    ;E   DB   71H    F   DB   00H TEMP_TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H DB 08H,0

15、9H,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,7

16、8H,79H DB 80H,81H,82H,83H,84H,85H,86H,87H DB 88H,89H,90H,91H,92H,93H,94H,95H DB 96H,97H,98H,99H END5、硬件設(shè)計(jì)5.1溫度采集模塊溫度采集部分運(yùn)用DS18B20傳感器,其測(cè)溫系統(tǒng)簡(jiǎn)單,測(cè)溫精度高,連接方便,占用口線少,轉(zhuǎn)換速度快,與微處理器的接口簡(jiǎn)單,給硬件設(shè)計(jì)工作帶來(lái)了極大的方便,能有效地降低成本,縮短開發(fā)周期。5.1.1 DS18B20簡(jiǎn)介 (1)獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。(2)在使用中不需要任何外圍元件。(3)

17、可用數(shù)據(jù)線供電,電壓范圍: 3.05.5 V。(4)測(cè)溫范圍:-55 125 。固有測(cè)溫分辨率為0.5 。(5)通過(guò)編程可實(shí)現(xiàn)912位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報(bào)警上下限值。(7)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。5.1.2 DS18B20的內(nèi)部結(jié)構(gòu)(1) 64 b閃速ROM的結(jié)構(gòu)如下: 開始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ǔ)器

18、 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ù)值。該字節(jié)各位的定義如下: 低5位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來(lái)設(shè)置分辨率,如表1所示(DS18B20出廠時(shí)被設(shè)置為12位)。 設(shè)定的分辨率越高,

19、所需要的溫度數(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é)讀出的是前面所有8個(gè)字節(jié)的CRC碼,可用來(lái)保證通信正確。 當(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形式表示。溫度值格式如下: 對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),

20、直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。表2是對(duì)應(yīng)的一部分溫度值。 DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與TH,TL作比較,若T>TH或TTL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì)主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行告警搜索。 (4) 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ù)是否正確5.1.3 DS18B20的工作原理 DS18B20 的溫度檢測(cè)與數(shù)字?jǐn)?shù)據(jù)輸出全

21、集成于一個(gè)芯片之上,從而抗干擾力更強(qiáng)。其一個(gè)工作周期可分為兩個(gè)部分,即溫度檢測(cè)和數(shù)據(jù)處理。在講解其工作流程之前我們有必要了解 18B20的內(nèi)部存儲(chǔ)器資源。18B20 共有三種形態(tài)的存儲(chǔ)器資源,它們分別是: ROM  只讀存儲(chǔ)器,用于存放 DS18B20ID 編碼,其前 8 位是單線系列編碼(DS18B20 的編碼是19H) ,后面48 位是芯片唯一的序列號(hào),最后 8位是以上 56的位的 CRC碼(冗余校驗(yàn))。數(shù)據(jù)在出產(chǎn)時(shí)設(shè)置不由用戶更改。DS18B20 共 64 位 ROM。 RAM  數(shù)據(jù)暫存器,用于內(nèi)部計(jì)算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20 共9 個(gè)字節(jié) RA

22、M,每個(gè)字節(jié)為 8 位。第1、2 個(gè)字節(jié)是溫度轉(zhuǎn)換后的數(shù)據(jù)值信息,第 3、4 個(gè)字節(jié)是用戶 EEPROM(常用于溫度報(bào)警值儲(chǔ)存)的鏡像。在上電復(fù)位時(shí)其值將被刷新。第 5 個(gè)字節(jié)則是用戶第 3 個(gè) EEPROM的鏡像。第 6、7、8 個(gè)字節(jié)為計(jì)數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計(jì)的,同樣也是內(nèi)部溫度轉(zhuǎn)換、計(jì)算的暫存單元。第 9 個(gè)字節(jié)為前 8個(gè)字節(jié)的 CRC碼。EEPROM  非易失性記憶體,用于存放長(zhǎng)期需保存的數(shù)據(jù),上下限溫度報(bào)警值和校驗(yàn)數(shù)據(jù), DS18B20共3位EEPROM,并在 RAM 都存在鏡像,以方便用戶操作。另外,由于DS18B20單線通信功能是分時(shí)完成的,他

23、有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。 5.1.4 DS18B20的精確延時(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ù)倍,因此可編寫一個(gè)DELAY15(n)函數(shù),源碼如下: 只要用該函數(shù)進(jìn)行大約15 s×N的延時(shí)即可。有了比較精確的延時(shí)保證,就可以對(duì)DS18B20進(jìn)行讀寫操作、溫度轉(zhuǎn)換及顯示等操作。(8)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。軟件模塊設(shè)計(jì)和流程圖5.2 A/D轉(zhuǎn)換部分本模塊采用A/D570進(jìn)行轉(zhuǎn)換,A/D570內(nèi)部帶有三態(tài)輸出門,但不是外部可控的,轉(zhuǎn)換結(jié)束時(shí),三態(tài)門會(huì)自動(dòng)接通,因此,從轉(zhuǎn)換結(jié)束到取走數(shù)據(jù)這段時(shí)間內(nèi),輸出數(shù)據(jù)線始終被占據(jù)。A/D570的輸入模擬電壓可為單極性,也可為雙極性,極性可通過(guò)標(biāo)為15腳的不同接法來(lái)選擇。但接地時(shí)為單極性輸入,電壓范圍為010V,

溫馨提示

  • 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)論