2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  溫度測(cè)量顯示電路設(shè)計(jì)</p><p>  目 錄</p><p>  1.引言………………………………………………………………………8</p><p>  2.系統(tǒng)方案確定……………………………………………………………9</p><p>  2.1系統(tǒng)設(shè)計(jì)方案論證與確定……………………………………………9&

2、lt;/p><p>  2.2硬件設(shè)計(jì)總體方案……………………………………………………10</p><p>  3.系統(tǒng)軟件算法分析………………………………………………………12</p><p>  3.1主程序流程圖…………………………………………………………12</p><p>  3.2讀出溫度子程序……………………………………………………

3、…12</p><p>  3.3溫度轉(zhuǎn)換命令子程序…………………………………………………13</p><p>  3.4 計(jì)算子程序溫度………………………………………………………14</p><p>  3.5顯示數(shù)據(jù)刷新子程序…………………………………………………15</p><p>  3.6掃描按鍵處理子程序…………………………………

4、………………16</p><p>  4.軟件仿真…………………………………………………………………17</p><p>  課程設(shè)計(jì)心得與體會(huì)……………………………………………………21</p><p><b>  參考文獻(xiàn)</b></p><p>  6.附錄………………………………………………………………………22

5、</p><p>  6.1 源程序代碼……………………………………………………………22</p><p>  6.2 系統(tǒng)硬件原理圖………………………………………………………28</p><p><b>  1.引言</b></p><p>  近幾年來隨著單片機(jī)在檢測(cè)和控制系統(tǒng)中得到廣泛應(yīng)用,傳統(tǒng)控制技術(shù)也已經(jīng)滿足不

6、了現(xiàn)代工業(yè)生產(chǎn)所需,各行各業(yè)對(duì)于控制和測(cè)量的需求也越來越高。而溫度則是系統(tǒng)常需要測(cè)量、控制和保持一個(gè)量,如何分析和選取就顯得尤為重要了。</p><p>  經(jīng)過對(duì)各種溫度測(cè)量方案的收集整理之后(包括傳統(tǒng)的分立式傳感器),本系統(tǒng)最終選取采用鉑電阻PT100作為溫度傳感器,恒流測(cè)溫的方法,通過單片機(jī)進(jìn)行控制,用放大器、A/D轉(zhuǎn)換器進(jìn)行溫度信號(hào)的采集</p><p>  本系統(tǒng)以四個(gè)部分為主體

7、:放大電路,A/D轉(zhuǎn)換電路,單片機(jī)電路,數(shù)碼管顯示電路。設(shè)計(jì)文氏電橋電路,得到溫度與電壓的關(guān)系,通過控制電阻值改變溫度。利用單片機(jī)將現(xiàn)在溫度與預(yù)設(shè)溫度進(jìn)行比較,將比較結(jié)果在LED數(shù)碼管上顯示,同時(shí)實(shí)現(xiàn)現(xiàn)在溫度與預(yù)設(shè)溫度之間的切換。</p><p>  2. 方案論證與確定</p><p>  2.1系統(tǒng)設(shè)計(jì)方案論證</p><p><b>  方案一<

8、;/b></p><p>  通過溫度傳感器采集溫度信號(hào),經(jīng)信號(hào)放大器放大后,送到A/D轉(zhuǎn)換芯片,將模擬量轉(zhuǎn)化為數(shù)字量,傳送給單片機(jī)控制系統(tǒng),最后經(jīng)過LED顯示溫度。 熱電阻也是最常用的一種溫度傳感器。它的主要特點(diǎn)是測(cè)量精度高,性能穩(wěn)定,使用方便。該方案采用熱電阻PT100做為溫度傳感器、AD620作為信號(hào)放大器,TLC2543作為A/D轉(zhuǎn)換部件,對(duì)于溫度信號(hào)的采集具有大范圍、高精度的特點(diǎn)并且可以通

9、過編寫程序?qū)斎胄盘?hào)進(jìn)行分段線性化處理,使得測(cè)量精度大大提高。</p><p>  這個(gè)方案在電路設(shè)計(jì)上比較麻煩,涉及到A/D轉(zhuǎn)換,溫度采集等復(fù)雜模塊,而且電阻與溫度的對(duì)應(yīng)值的計(jì)算也無形的增大了設(shè)計(jì)的工作量,故不作為優(yōu)先考慮</p><p><b>  工作方框圖如下</b></p><p><b>  方案二</b>&l

10、t;/p><p>  進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,電路簡單,精度高,軟硬件都以實(shí)現(xiàn),而且使用單片機(jī)的接口便于系統(tǒng)的再擴(kuò)展,滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費(fèi)用較低,可靠性高,軟件設(shè)計(jì)也比較簡單,故采用了方案二。</p>

11、<p>  2.2硬件設(shè)計(jì)總體方案</p><p>  2.2.1單片機(jī)最小模塊</p><p>  AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)

12、器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51單片機(jī)引腳結(jié)構(gòu)圖如圖2-3所示。</p><

13、p>  AT89C51的主要特性如下:</p><p>  ·與MCS-51 兼容</p><p>  ·4K字節(jié)可編程閃爍存儲(chǔ)器壽命:1000寫/擦循環(huán),數(shù)據(jù)保留時(shí)間:10年</p><p>  ·全靜態(tài)工作:0Hz-24Hz</p><p>  ·三級(jí)程序存儲(chǔ)器鎖定</p>&l

14、t;p>  ·128*8位內(nèi)部RAM</p><p>  ·32可編程I/O線</p><p>  ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b>  ·5個(gè)中斷源</b></p><p><b>  ·可編程串行通道</b></p&

15、gt;<p>  ·低功耗的閑置和掉電模式</p><p>  ·片內(nèi)振蕩器和時(shí)鐘電路</p><p>  AT89C51單片機(jī)引腳圖</p><p>  2.3.2 溫度傳感器模塊</p><p>  DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器,其結(jié)構(gòu)圖如

16、圖3所示,與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75 ms和750 ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他

17、在測(cè)溫精度、轉(zhuǎn)換時(shí)間、傳輸距離、分辨率等方面較DS1820有了很大的改進(jìn),給用戶帶來了更方便的使用和更令人滿意的效果。</p><p>  DS18B20的特點(diǎn):</p><p> ?。?)獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。 </p><p> ?。?)在使用中不需要任何外圍元件。</p

18、><p> ?。?)可用數(shù)據(jù)線供電,電壓范圍:+3.0~ +5.5 V。 </p><p> ?。?)測(cè)溫范圍:-55 ~+125 ℃。固有測(cè)溫分辨率為0.5 ℃。 </p><p> ?。?)通過編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式。 </p><p>  (6)用戶可自設(shè)定非易失性的報(bào)警上下限值

19、。 </p><p>  (7)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。 </p><p> ?。?)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。 </p><p>  2.3.4溫度顯示模塊</p><p>  共陰極數(shù)碼管中8個(gè)發(fā)光二極管的陰極連接在一起,即為共陰極接法,簡

20、稱共陰數(shù)碼管。通常,共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),該端所連接的字符導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。同樣,要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。</p><p>  本次設(shè)計(jì)使用了四個(gè)型號(hào)為ARK SR42056的數(shù)碼管,其管腳分別接至單片機(jī)管腳的10-13、32-39和排阻R

21、P1,確保數(shù)碼管能夠精確顯示溫度,并能夠使溫度精確到十分位。其具體管腳連接如圖2-4所示。</p><p>  圖2-4 數(shù)碼管連接圖</p><p>  3 .系統(tǒng)軟件算法分析</p><p>  系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序,按鍵掃描處理子程序等。</p><p><

22、b>  3.1主程序流程圖</b></p><p>  圖3.1 主程序流程圖</p><p>  3.2讀出溫度子程序</p><p>  讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時(shí)需進(jìn)行CRC 校驗(yàn),校驗(yàn)</p><p>  有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3-2所示。</p>

23、<p>  3.3溫度轉(zhuǎn)換命令子程序</p><p>  溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12 位分辨率時(shí)轉(zhuǎn)換時(shí)間約為</p><p>  750ms,在本程序設(shè)計(jì)中采用1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程</p><p>  圖3.2讀溫度數(shù)據(jù)流程圖 圖3-3溫度轉(zhuǎn)

24、換流程圖</p><p>  3.4計(jì)算溫度子程序</p><p>  計(jì)算溫度子程序?qū)AM 中讀取值進(jìn)行BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,</p><p>  其程序流程圖如圖3-4所示。</p><p>  3.5顯示數(shù)據(jù)刷新子程序</p><p>  顯示數(shù)據(jù)刷新子程序主要是對(duì)分離后的溫度顯示數(shù)據(jù)進(jìn)

25、行刷新操作,當(dāng)標(biāo)志位位為1</p><p>  時(shí)將符號(hào)顯示位移入第一位。程序流程圖如圖3-5所示。</p><p>  3.6按鍵掃描處理子程序</p><p>  按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為1 時(shí),顯示設(shè)置溫度,否則顯示溫度。如圖3-6所示。</p><p>  4. Proteus軟件仿真</p><

26、;p>  4.1 Proteus簡介</p><p>  Proteus 是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:</p><p> ?、賹?shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿

27、真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。</p><p> ?、谥С种髁鲉纹瑱C(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。</p><p> ?、厶峁┸浖{(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷

28、點(diǎn)等調(diào)試功能,</p><p>  同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2、MPLAB等軟件。</p><p> ?、芫哂袕?qiáng)大的原理圖繪制功能??傊?,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。</p><p>  4.2

29、Proteus仿真過程</p><p>  Proteus軟件仿真原理圖如下圖所示:</p><p>  2、啟動(dòng)該系統(tǒng),運(yùn)行如下圖所示:</p><p>  3、利用K1、K2功能鍵,可以設(shè)定校正溫度加減、開和關(guān)等。其界面分別為:</p><p>  溫度校正調(diào)零示例:如把當(dāng)前溫度設(shè)定為28度,利用18b20將溫度設(shè)定為30度, Prote

30、us仿真如下圖(可觀察到Q1處指示燈的顏色發(fā)生變化):</p><p>  5.課程設(shè)計(jì)心得與體會(huì)</p><p>  本次電子課程綜合設(shè)計(jì),讓我受益匪淺。雖然時(shí)間比以往的長了不少,但是開始選題時(shí)還是很茫然。從選題到定稿,從理論到實(shí)踐,在整整一星期的日子里,可以說得是苦多于甜。但是在這過程中我查閱和瀏覽了很多的相關(guān)資料,和同學(xué)們一起商量,相互合作,并且對(duì)Proteus軟件的使用有了很大程度

31、的提高。同時(shí)不僅可以鞏固和強(qiáng)化以前所學(xué)過的知識(shí),還學(xué)到了很多書本上所不曾學(xué)到的知識(shí)。</p><p>  這次我選擇了溫度測(cè)量系統(tǒng)設(shè)計(jì),在應(yīng)用系統(tǒng)設(shè)計(jì)時(shí),必須先確定該系統(tǒng)的具體要求,這是系統(tǒng)設(shè)計(jì)的依據(jù)和出發(fā)點(diǎn),整個(gè)設(shè)計(jì)過程都必須圍繞這個(gè)訓(xùn)練要求來做。軟件部分的設(shè)計(jì),我按照模塊化的思想,將各個(gè)模塊單獨(dú)調(diào)試,然后再一點(diǎn)一點(diǎn)地疊加,這樣就容易避免更多錯(cuò)誤的出現(xiàn)。在這次單片機(jī)系統(tǒng)的課程設(shè)計(jì)中,我們學(xué)到了很多,尤其是在調(diào)試

32、程序的過程中,我遇到了很多問題,摸索著改正了一些,還有一些錯(cuò)誤在指導(dǎo)老師的幫助下得以解決。這次課程設(shè)計(jì),查閱了大量的文獻(xiàn)資料和搜索了大量網(wǎng)絡(luò)資料,也更清楚的認(rèn)識(shí)到自己所學(xué)的不足,同時(shí)也加深了對(duì)以前所學(xué)知識(shí)的理解,也增強(qiáng)了編程與仿真的操作能力。</p><p>  通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合的重要性,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才是真正所要的。在設(shè)計(jì)的過程中所遇到的問題,

33、可以說是很多。難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說剛開始在連仿真圖時(shí),不能區(qū)分該數(shù)碼管是共陰極還是共陽極的,等到連好圖仿真時(shí)出現(xiàn)錯(cuò)誤才知道自己用錯(cuò)了數(shù)碼管,對(duì)單片機(jī)的C語言掌握得也還不太好……通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。</p><p>  總之,這次課程設(shè)計(jì)讓我明白一個(gè)道理那就是:只有理論必須和實(shí)際

34、結(jié)合,才能更好地讓我們掌握書本上的知識(shí)。同時(shí)在設(shè)計(jì)過程中遇到了很多程序編寫出錯(cuò)和系統(tǒng)不能正常仿真的問題,最后在楊慶老師的細(xì)心指導(dǎo)和同學(xué)們耐心幫助下終于得到解決。同時(shí)也讓我懂得所學(xué)的東西最終是要面向應(yīng)用的,是為了在以后的工作中能夠更好的應(yīng)用,此時(shí)的知識(shí)積累是為以后的工作做好準(zhǔn)備。這個(gè)設(shè)計(jì)總體上不算完美,但是在這次設(shè)計(jì)訓(xùn)練的經(jīng)歷的益處是不能言表的,在此謝謝各位老師和同學(xué)的解囊?guī)椭?lt;/p><p><b>

35、  參考文獻(xiàn)</b></p><p>  1、 康華光.電子技術(shù)基礎(chǔ)[M].模擬部分.高等教育出版社,1998</p><p>  2、張國雄等編.測(cè)控電路.機(jī)械工業(yè)出版社,2001.8.</p><p>  3、 李華.MCS一51系列單片機(jī)實(shí)用接口技術(shù)[M].電子工業(yè)出版社,1999</p><p>  4、 閆玉德,葛龍,

36、俞虹. 單片機(jī)微型計(jì)算機(jī)原理與設(shè)計(jì). 中國電力出版社,2010.112-154,197-199,</p><p>  5、 鄭惟暉,《單片機(jī)智能溫度控制系統(tǒng)的設(shè)計(jì)》[D],2008</p><p><b>  附錄</b></p><p><b>  附1:源程序代碼</b></p><p>  *

37、***********************************LCD1602模塊**********************************************/</p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  #define u

38、int unsigned int</p><p>  sbit rs=P2^7;//液晶使能端口</p><p>  sbit rw=P2^6;</p><p>  sbit e=P2^5;</p><p>  sbit P3_6=P3^6;</p><p>  sbit P1_0=P1^0;</

39、p><p>  sbit P1_1=P1^1;</p><p>  //sbit P1_0 = P1^0;</p><p>  //sbit P1_1 = P1^1;</p><p>  void delay_ms(uchar ms){ //延時(shí)</p><p><b>  uint i,j;</b&

40、gt;</p><p>  for(i=0;i<ms;i++)</p><p>  for(j=0;j<120;j++);</p><p><b>  }</b></p><p>  void lcd_wcmd(uchar cmd){ //液晶寫指令</p><p>  rs=0;

41、rw=0;</p><p><b>  e=0;</b></p><p><b>  P0=cmd;</b></p><p><b>  e=1;</b></p><p><b>  e=0;</b></p><p>  delay

42、_ms(5);</p><p><b>  }</b></p><p>  void lcd_wdat(uchar dat){ //液晶寫數(shù)據(jù)</p><p>  rs=1;rw=0;</p><p><b>  e=0;</b></p><p><b>  P0

43、=dat;</b></p><p><b>  e=1;</b></p><p><b>  e=0;</b></p><p>  delay_ms(5);</p><p><b>  }</b></p><p>  void lcd_di

44、s(uchar post,uchar *p){</p><p>  lcd_wcmd(0x80 | post);//設(shè)置數(shù)據(jù)地址指針顯示</p><p>  while(*p!='\0'){</p><p>  lcd_wdat(*p++);</p><p><b>  }</b></p&g

45、t;<p><b>  }</b></p><p>  uchar code def_char0[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //字符℃</p><p>  void lcd_wcgram(uchar adress,uchar tmp[]){</p><p><b

46、>  uchar i;</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  lcd_wcmd(adress+i);</p><p>  lcd_wdat(tmp[i]);</p><p><b>

47、;  }</b></p><p><b>  }</b></p><p>  void lcd_inti(){</p><p>  delay_ms(15);</p><p>  lcd_wcmd(0x38);//16X2字符,5X7點(diǎn)陣,8位數(shù)據(jù)接口</p><p>  lcd_w

48、cmd(0x38);</p><p>  lcd_wcmd(0x08);//關(guān)閉顯示</p><p>  lcd_wcmd(0x01);//清屏</p><p>  lcd_wcmd(0x06);//設(shè)置光標(biāo)工作方式</p><p>  lcd_wcmd(0x0c);//開顯示,設(shè)置光標(biāo)顯示方式</p><p&g

49、t;  lcd_wcgram(0x48,def_char0); //載入用戶自定義字符</p><p><b>  }</b></p><p>  sbit DQ=P3^7; //18B20數(shù)據(jù)管腳</p><p>  /*************************ds18b20延遲子函數(shù)(晶振12MHz )***********

50、**********************/ </p><p>  void delay_18B20(unsigned int i){</p><p>  while(i--);</p><p><b>  }</b></p><p>  void reset() {</p><p>  uch

51、ar x=0;</p><p>  DQ = 1; //DQ復(fù)位</p><p>  delay_18B20(8); //稍做延時(shí)</p><p>  DQ = 0; //單片機(jī)將DQ拉低</p><p>  delay_18B20(80); //精確延時(shí) 大于 480us</p><

52、p>  DQ = 1; //拉高總線</p><p>  delay_18B20(14);</p><p>  x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p>  delay_18B20(20);</p><p><b>  }</b>

53、</p><p>  unsigned char rbyte(){</p><p>  uchar i=0;</p><p>  uchar dat = 0;</p><p>  for (i=8;i>0;i--){</p><p>  DQ = 0; // 給脈沖信號(hào)</p><p>&

54、lt;b>  dat>>=1;</b></p><p>  DQ = 1; // 給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay_18B20(4);</p><p><b&g

55、t;  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void wbyte(uchar dat){</p><p>  uchar i=0;</p><p>  for (i=8; i>0; i--){<

56、;/p><p><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p>  delay_18B20(5);</p><p><b>  DQ = 1;</b></p><p><b>  dat>>=1;

57、</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  uchar rTempetuare(uchar tmp[]){</p><p>  uchar a=0,b=0,temp,decimal;</p><p>

58、;  uint uival;</p><p><b>  reset();</b></p><p>  wbyte(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p>  wbyte(0x44); //啟動(dòng)溫度轉(zhuǎn)?</p><p><b>  reset();</b></p>&

59、lt;p>  wbyte(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p>  wbyte(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度</p><p>  a=rbyte(); //讀取溫度值低位</p><p>  b=rbyte(); //讀取溫度值高位</p><p><b> 

60、 temp=b;</b></p><p>  temp&=0xf0;</p><p>  if(temp){ //負(fù)溫</p><p><b>  if(a==0){</b></p><p>  a=~a+1; //bit7向bit8位產(chǎn)生進(jìn)位</p><p><

61、b>  b=~b+1; </b></p><p><b>  }</b></p><p>  else{ </p><p>  a=~a+1; </p><p><b>  b=~b;</b></p><p><b>  }<

62、/b></p><p>  tmp[0]='-';</p><p><b>  }</b></p><p><b>  else</b></p><p>  tmp[0]=' ';</p><p>  temp=(b<<4)|

63、(a>>4); //組合</p><p>  decimal=a&0x0f; //將小數(shù)點(diǎn)后的數(shù)據(jù)提取出來</p><p>  uival=decimal*625;</p><p>  tmp[0]='T';</p><p>  tmp[1]='=';</p>

64、<p>  tmp[2]=0x20; //空格</p><p>  tmp[3]=temp/100 | 0x30; //取百位</p><p>  tmp[4]=temp%100/10 | 0x30; //取十位</p><p>  tmp[5]=temp%100%10 | 0x30;

65、 //取個(gè)位</p><p>  tmp[6]=0x2e; //小數(shù)點(diǎn)</p><p>  tmp[7]=uival/1000 | 0x30; //十分位</p><p>  tmp[8]=uival%1000/100 | 0x30; //百分位</p><p>  tmp[9]=uiv

66、al%1000%100/10 | 0x30; //千分位</p><p>  tmp[10]=uival%1000%100%10 | 0x30; //萬分位</p><p>  tmp[11]=0x20; //空格</p><p>  tmp[12]=0x01; //字符℃</p>

67、<p>  tmp[13]='\0';</p><p>  return temp; //十進(jìn)制溫度</p><p><b>  }</b></p><p>  /*******************************紅外解碼模塊***********************************

68、*******/</p><p>  #define c(x) (x*110592/120000)</p><p>  sbit Ir_Pin=P3^2; //紅外數(shù)據(jù)管腳</p><p>  unsigned char Ir_Buf[4]; //用于保存解碼結(jié)果</p><p>  //=========================

69、=====================================</p><p>  unsigned int Ir_Get_Low() //計(jì)數(shù)器1,用于解碼延時(shí)</p><p><b>  {</b></p><p><b>  TL1=0;</b></p><p><

70、b>  TH1=0;</b></p><p><b>  TR1=1;</b></p><p>  while(!Ir_Pin && (TH1&0x80)==0);</p><p><b>  TR1=0;</b></p><p>  return

71、TH1*256+TL1;</p><p><b>  }</b></p><p>  //=============================================================</p><p>  unsigned int Ir_Get_High() //計(jì)數(shù)器1,用于解碼延時(shí)</p>

72、<p><b>  {</b></p><p><b>  TL1=0;</b></p><p><b>  TH1=0;</b></p><p><b>  TR1=1;</b></p><p>  while(Ir_Pin &

73、;& (TH1&0x80)==0);</p><p><b>  TR1=0;</b></p><p>  return TH1*256+TL1;</p><p><b>  }</b></p><p>  char jianche()</p><p> 

74、 { //解碼程序</p><p><b>  char i,j;</b></p><p>  uint temp;</p><p><b>  restart:</b></p><p>  while(Ir_Pin);</p><p>  te

75、mp=Ir_Get_Low();</p><p>  if(temp<c(8500) || temp>c(9500)) goto restart;//引導(dǎo)脈沖低電平9000</p><p>  temp=Ir_Get_High();</p><p>  if(temp<c(4000) || temp>c(5000)) goto restart

76、;//引導(dǎo)脈沖高電平4500</p><p>  for(i=0;i<4;i++) //4個(gè)字節(jié)</p><p>  for(j=0;j<8;j++) //每個(gè)字節(jié)8位</p><p><b>  {</b></

77、p><p>  temp=Ir_Get_Low();</p><p>  if(temp<c(200) || temp>c(800)) goto restart;</p><p>  temp=Ir_Get_High();</p><p>  if(temp<c(200) || temp>c(2000

78、)) goto restart;</p><p>  Ir_Buf[i]>>=1;</p><p>  if(temp>c(1120)) Ir_Buf[i]|=0x80;</p><p><b>  }</b></p><p>  return Ir_Buf[2]&0x0f;

溫馨提示

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