單片機(jī)數(shù)字溫度計(jì)課程規(guī)劃設(shè)計(jì)報(bào)告_第1頁(yè)
單片機(jī)數(shù)字溫度計(jì)課程規(guī)劃設(shè)計(jì)報(bào)告_第2頁(yè)
單片機(jī)數(shù)字溫度計(jì)課程規(guī)劃設(shè)計(jì)報(bào)告_第3頁(yè)
單片機(jī)數(shù)字溫度計(jì)課程規(guī)劃設(shè)計(jì)報(bào)告_第4頁(yè)
單片機(jī)數(shù)字溫度計(jì)課程規(guī)劃設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、'11. 設(shè)計(jì)任務(wù)1.1設(shè)計(jì)目的.1.2設(shè)計(jì)指標(biāo).1.3設(shè)計(jì)要求2. 設(shè)計(jì)思路與總體框圖3. 系統(tǒng)硬件電路的設(shè)計(jì)3.1主控電路3.2液晶顯示電路3.3按鍵電路3.4報(bào)警電路4. 系統(tǒng)仿真設(shè)計(jì)4.1仿真原理圖4.2各功能元件的分析105. 系統(tǒng)軟件設(shè)計(jì)5.1主程序115.2讀出溫度子程序115.3溫度轉(zhuǎn)換命令子程序125.4設(shè)計(jì)溫度子程序125.5 1602的溫度顯示136.總結(jié)與體會(huì)136 1總結(jié)136. 2體會(huì)147.參考文獻(xiàn)15161.設(shè)計(jì)任務(wù)'1.1設(shè)計(jì)目的1. 了解數(shù)數(shù)字溫度計(jì)及工作原理。2. 進(jìn)一步掌握數(shù)字溫度計(jì)設(shè)計(jì)方法。3. 進(jìn)一步掌握各芯片的邏輯功能及使用方法。4

2、. 進(jìn)一步掌握keil和仿真軟件的應(yīng)用。5. 進(jìn)一步熟悉集成電路的引腳安排.。1.2設(shè)計(jì)指標(biāo)1. 顯示溫度。2. 可以顯示大于零度的溫度也可以顯示小于零度的溫度。3. 具有顯示相應(yīng)環(huán)境溫度的功能,并且具有超出設(shè)定范圍內(nèi)溫度時(shí)可以報(bào)警的功能,相應(yīng)環(huán)境可以人為選擇。1.3設(shè)計(jì)要求1. 畫出總體設(shè)計(jì)框圖,以說明數(shù)字溫度計(jì)由哪些相對(duì)獨(dú)立的功能模塊組成,標(biāo)出各個(gè)模塊之間互相聯(lián)系。并以文字對(duì)原理作輔助說明。2. 設(shè)計(jì)各個(gè)功能模塊的電路圖,加上原理說明。3.選擇合適的元器件,在面包板上接線驗(yàn)證、調(diào)試各個(gè)功能模塊的電路,在接線驗(yàn)證時(shí)設(shè)計(jì)、選擇合適的輸入信號(hào)和輸出方式,在確定電路充分正確性同 時(shí),輸入信號(hào)和輸出

3、方式要便于電路的測(cè)試和故障排除。4. 在驗(yàn)證各個(gè)功能模塊基礎(chǔ)上,對(duì)整個(gè)電路的元器件和布線進(jìn)行合理布 局,進(jìn)行整個(gè)數(shù)字溫度電路的接線調(diào)試。2.設(shè)計(jì)思路與總體框圖.數(shù)字溫度計(jì)由主控制器(單片機(jī))、溫度傳感器(DS18B20)、顯示器(LCD1602)、獨(dú)立按鍵和報(bào)警電路組成,溫度傳感器所感應(yīng)的溫度信號(hào)經(jīng)過其數(shù)據(jù)傳輸引腳傳送給單片機(jī),單片機(jī)將所接收到的溫度信號(hào)經(jīng)過處理, 將其送至顯 示器LCD1602顯示,并且能夠通過獨(dú)立按鍵設(shè)置溫度報(bào)警值, 若溫度處于報(bào)警上報(bào)警溫度調(diào)整鍵LCD1602 顯示限和下限之外,報(bào)警電路工作。圖1所示為數(shù)字溫度計(jì)的一般結(jié)構(gòu)框圖:STC90C51主控制器DS18B20傳感器

4、單片機(jī)時(shí)鐘振蕩蜂鳴器,指示燈圖1 數(shù)字溫度計(jì)結(jié)構(gòu)框圖3.系統(tǒng)硬件電路的設(shè)計(jì)3.1主控電路單片機(jī)STC90C5具有低電壓供電和體積小等特點(diǎn),四個(gè)端口同時(shí)使用以滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。晶振采用12MHZLJ1XTAL1P0.0/AD0XTAL2PC.1/AD1PO.2/AD2PO.3/AD3尺STP0.4/AD4PO.5/AD5PO.6/AD6P 07M>D7PSE忖P 2O/ASP2.VA9P2 2;A1O 卩 2.37A11ALEP2 4;A12車P1.0P1.1P1.2P1.3P1.4P2 5;A13P2.6;A14P27/A15P3

5、.0)RXD P 31/TXD P32/1NT0 P33hrnp 3.4roP1 5P3.5friP1.6P3.S/WRP1 7p訂麗圖2主控電路XI葉CRYSTALC11nF uTEXTnC21nFuTEL圖3晶振電路3.2溫度顯示電路采用液晶顯示屏LCD1602顯示,第一行顯示“ 18B20 OKTL”和報(bào)警下限值,第二行顯示實(shí)時(shí)溫度以及報(bào)警上限值,并且能夠顯示負(fù)溫度值。用P0 口進(jìn)行LCD1602的 數(shù)據(jù)寫操作,P2.5 P2.7口進(jìn)行LCD1602的命令控制端口。電路圖如下:I ' H lmdiel3.3 按鍵電路本系統(tǒng)一共設(shè)置了四個(gè)按鍵,k1鍵設(shè)置溫度下限加,k2鍵設(shè)置溫度下

6、限減 k3鍵設(shè)置溫度上限加,k4鍵設(shè)置溫度上限減。a圖5按鍵電路3.4報(bào)警電路本設(shè)計(jì)采用蜂鳴器和LED燈組成報(bào)警電路,電路圖如下:KIso AekE.-圖6報(bào)警電路4 .系統(tǒng)設(shè)計(jì)仿真4.1仿真原理圖根據(jù)數(shù)字溫度計(jì)的一般結(jié)構(gòu)框圖, 我們通過查閱資料書和上網(wǎng)查詢,了解不 同元件的功能和實(shí)用性,考慮性價(jià)比后,制作出的數(shù)字溫度計(jì)的仿真電路原理圖, 如圖7所示。vtbAvnN屮0口LCD1LiniSL fTE忖AOHnORfAL寧SWTP 口 HADDPDa'ADS 2鄧3POjADGFO.TfRM:E云jIT3S4HD-TEXT:P5EHpzjjxa憶1峠P2A11憶朋WP2jffA-r<

7、;F2.TfX1Sfj.irnofawmraalNTTR.4/TnMiTTlF3jaWMpj.T/rr21P1D7T'llR1/LSILED-P.ED :Tk4 U2 云 軸G a 宀呦一 M1BI9:R2imTFCMDGHB圖7 數(shù)字溫度計(jì)仿真電路原理圖4.2各功能元件的分析2設(shè)計(jì)原理圖中各功能元件的引腳圖的分析如下所示:1. DS18B20DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能并且溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9-12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:(1)獨(dú)特

8、的單線接口僅需要一個(gè)端口引腳進(jìn)行通信,DS18B2在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B2的雙向通訊。(2) DS18B2(支持多點(diǎn)組網(wǎng)功能,多個(gè) DS18B2(可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)測(cè)溫;(3)無須外部器件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);(4) 可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5 V;(5) 零待機(jī)功耗;(7)(8)(6)溫度以9或12位數(shù)字,對(duì)應(yīng)的可分辨溫度分別為0.5 C、0.25 C、0.125 C 和0.0625 C,可實(shí)現(xiàn)高精度測(cè)溫;用戶可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器

9、件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正(9)常工作;(10) 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"一線總線"串行傳送給CPU同 時(shí)可傳送CR校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力 DS18B20采用3腳PR35封裝或8IflO =GKD一HC 一WC 一1e Vcc27DS18B20ITC36NC45HCSXI封裝腳SOIC封裝,其引腳排列及內(nèi)部結(jié)構(gòu)框:DS18B20引腳排列圖 圖10 DS18B20測(cè)溫原理圖64位RO啲結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào), 共有48位,最后8位是前面56位的CRC僉驗(yàn)碼,這也是多個(gè)DS18B2(可以

10、采用 一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM高速暫存RAM勺結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4所示。 頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第 3和第4字節(jié)TH和TL的拷貝,是易失的, 每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值 的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù) 值。該字節(jié)各位的定義如圖5所示。低5位一直為1, TM是工作模式位,用于設(shè) 置DS18B20在工作模式還是在測(cè)試模式,DS18B2(出廠時(shí)該位

11、被設(shè)置為0,用戶 不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。DS18B20的分辨率定義如表1所示R0R1分辨率最大溫度轉(zhuǎn)移時(shí)間009位96.75ms0110位187.5ms1011位375ms1112位750ms表1分辨率設(shè)置表由表1可見,DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換過程是:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,即將數(shù)據(jù)總線下拉500us,然后釋放,DS18B20攵到信號(hào)后等待16-60us左 右,之后發(fā)出60-240US的存在低脈沖,

12、主CPU攵到此此信號(hào)表示復(fù)位成功;復(fù) 位成功后發(fā)送一條ROM旨令,然后發(fā)送RAM旨令,這樣才能對(duì)DS18B20進(jìn)行預(yù)訂 的讀寫操作。指令約定代碼功能讀ROM33H讀DS18B2(中的編碼符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROMS碼,訪問單線總線 上與該編輯相對(duì)應(yīng)的 DS18B20使之做出響應(yīng),為下一步 對(duì)該DS18B20勺讀寫作準(zhǔn)備指令集表2ROM搜索ROM0F0H用于確定掛接在同一總線上的 DS18B2(個(gè)數(shù)和識(shí)別64位ROMfe址,為操作各器件作準(zhǔn)備跳過ROM0CCH忽略64位ROMte址,直接向DS18B2(發(fā)送溫度變換指令告警搜索命令0ECH執(zhí)行后,只有溫度跳過設(shè)定值上限或下

13、限的片子才能做 出反應(yīng)指令約定代碼功能溫度轉(zhuǎn)換44H啟動(dòng)DS18B20S行溫度轉(zhuǎn)換讀暫存器0BEH讀暫存器9個(gè)字節(jié)內(nèi)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH TL字節(jié)復(fù)制暫存器48H把暫存器的TH TL字節(jié)寫到ERAM中重調(diào)e2ram0B8H把E2RAM中的TH TL字節(jié)寫到暫存器TH TL字節(jié)讀供電方式0B4H啟動(dòng)DS18B2(發(fā)送電源供電方式的信號(hào)給主 CPU指令集表3RAMDS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1 ;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中

14、還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生1、的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。 計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器 來決定,每次測(cè)量前,首先將最低溫所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器 溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在最低溫所對(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ù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就 是所測(cè)溫度值。其輸出用于修

15、正減法計(jì)數(shù)器的預(yù)置值, 只要計(jì)數(shù)器門仍未關(guān)閉就 重復(fù)上述過程,直到溫度寄存器值大致被測(cè)溫度值。測(cè)溫電路圖圖122. LCD1602:工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符(16列2行)。1602液 晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可 以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義 CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩 行,每行16個(gè)字符液晶

16、模塊(顯示字符和數(shù)字)。|1602芯片的接口信號(hào)說明如 下表:1602芯片的接口信號(hào)說明引卿說取編巧引唧說測(cè)1VSS電的地【圧洽再1. UVDD屯沏h.根10D;13VI.nni散按1.03Kb12D5灼搦i'U5K. 1i:¥紀(jì)迭捋覇13)bMI.Qb11nv曽朋1. 0L4DO匙折TO衍Rl A井尤iF械DI數(shù)據(jù)1用16KI K 1弁尤廿!橫5系統(tǒng)軟件設(shè)計(jì)整個(gè)系統(tǒng)是由硬件配合軟件來實(shí)現(xiàn)的,在硬件確定后,編寫的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個(gè)部分:一是監(jiān)控,這也是系統(tǒng) 的核心部分,二是執(zhí)行部分,完成各個(gè)具體的功能。系統(tǒng)程序主要包括主程序, 讀出溫度子程

17、序,溫度轉(zhuǎn)換命令子程序, 計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序 等。5.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖13所示。開始液晶初始化調(diào)用按鍵函數(shù), 液晶顯示函數(shù)判斷溫度值與 設(shè)定報(bào)警值大小N報(bào)警r結(jié)束圖14讀溫度流程圖圖13主程序流程圖5.2讀出溫度子程序讀出溫度子程序的主要功能是讀出 RAM中的9字節(jié),在讀出時(shí)需進(jìn)行 CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖15示:圖15 溫度轉(zhuǎn)換流程圖5.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始

18、命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。 溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖13所示5.4計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù) 的判定,其程序流程圖如圖16所示。圖16 計(jì)算溫度溫度流程圖5.51602的液晶顯示圖17 1602液晶顯示流程圖a)b)C)導(dǎo)線的裸線部分不要露在板的上面,以防短路。d)導(dǎo)線要插入金屬孔中央。6.總結(jié)與體會(huì)6.1總結(jié)1.根據(jù)原理和芯片引腳圖,分功能設(shè)計(jì)原理圖,并根據(jù)接線順序分步驟驗(yàn)證。2.容易出現(xiàn)故障為接觸不良。集成塊引腳方向預(yù)先彎好對(duì)準(zhǔn)面包板的金屬孔,再小心

19、插入。導(dǎo)線的剝線長(zhǎng)度與面包板的厚度相適應(yīng)(比板的厚度稍短)。3. 注意芯片的控制引腳必須正確接好4. 檢查故障時(shí)除測(cè)試輸入、輸出信號(hào)外,要注意電源、接地和控制引腳。5. 要注意芯片引腳上的信號(hào)與面包板上插座上信號(hào)是否一致(集成塊引腳與 面包板常接觸不良)。6. 接校時(shí)電路時(shí)可接模擬信號(hào)輸入(如 1Hz和2Hz)測(cè)試輸出信號(hào)的切換正確后,再將秒進(jìn)位和分進(jìn)位信號(hào)接到校時(shí)電路, 再接校時(shí)電路輸出到分計(jì)數(shù)器和時(shí)計(jì)數(shù)器。從較時(shí)電路接入信號(hào)時(shí),必須將原進(jìn)位信號(hào)拔掉。6.2體會(huì)經(jīng)過將近兩周的單片機(jī)課程設(shè)計(jì),終于完成了我們的數(shù)字溫度計(jì)課程設(shè)計(jì), 雖 然課程設(shè)計(jì)做的不是特別好,但從心底里說,還是高興的,因?yàn)槲覀?/p>

20、收獲了很多 很多,這些在平常的學(xué)習(xí)當(dāng)中是收獲不到的,但高興之余不得不靜下來深思!在本次課程設(shè)計(jì)的過程中,我們發(fā)現(xiàn)很多的問題,雖然以前還做過類似的課程設(shè)計(jì),但這次設(shè)計(jì)真的讓我學(xué)到了很多、長(zhǎng)進(jìn)了很多,單片機(jī)課程設(shè)計(jì)的重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過一些程序,但 覺的要寫好一個(gè)程序并不是一件簡(jiǎn)單的事,所以我們只能不斷的調(diào)試不斷的修改 才能把程寫的更好。所以得出結(jié)論是:有好多的東西,只有我們?nèi)ピ囍隽耍拍苷嬲恼莆?,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握,實(shí)踐才是硬道理,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。通過這次的課程設(shè)計(jì),我們真正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際

21、, 把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,這樣我們才能更好的理解、掌握這些知識(shí), 學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高, 這就是我 在這次課程設(shè)計(jì)中的最大收獲。通過這次對(duì)數(shù)字溫度計(jì)的設(shè)計(jì)與制作, 讓我們了 解了設(shè)計(jì)電路的程序,也讓我們了解了關(guān)于數(shù)字溫度計(jì)的原理與設(shè)計(jì)理念, 要設(shè) 計(jì)一個(gè)電路總要先用仿真仿真成功之后才實(shí)際接線的。但是最后的成品卻不一定 與仿真時(shí)完全一樣,因?yàn)?,在?shí)際接線中有著各種各樣的條件制約著。并且,在 仿真中無法成功的電路接法,在實(shí)際中因?yàn)樾酒旧淼奶匦远軌虺晒?。所? 在設(shè)計(jì)時(shí)應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計(jì)方法。通過這次學(xué)習(xí),讓我們對(duì)各種電路都

22、有了大概的了解,所以說, 坐而言不如 立而行,對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解。當(dāng)然在這個(gè)過程中我們還會(huì)遇到很多其它的問題,這些問題我們也不是那么 輕易的就能夠解決的,此時(shí)我們就會(huì)去翻閱相關(guān)資料,或者是問同學(xué)、問老師, 我們的同學(xué)和老師那一個(gè)個(gè)真的事知無不答的,這樣我們就能很快的把問題給決 絕掉了,那種感覺真的讓人很舒暢,這也讓我們明白了一件事,在學(xué)習(xí)中我們?nèi)?少不了同學(xué)、老師的幫助,他們能夠很快的解決一些問題。從這次的課程設(shè)計(jì)中,我真正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)應(yīng)用到實(shí)際當(dāng)中, 學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高

23、,這就是我在這次課程設(shè)計(jì)中的最大收獲。7.參考文獻(xiàn)1單片機(jī)原理及應(yīng)用楊恢先、黃輝光主編M.湘潭大學(xué)出版社2光主編,3 版社4電子技術(shù)基礎(chǔ)(第五版)華中科技大學(xué)電子技術(shù)課程組編M.康華陳大欽、張林副主編,高等教育出版社單片機(jī)課程指導(dǎo)樓然苗、李光飛編著,北京航空航天大學(xué)大學(xué)出51單片機(jī)C語(yǔ)言教程 郭天祥 編著8.附錄:#in clude<reg51.h>#in clude vintrin s.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar temp,nu m,k1 num;uchar code t

24、able="18B20 OK TL" char sha ngxiaxia n2=-10,10;char a;sbit k1=Piy;sbit k2=PIT;sbit k3=P 1人2;sbit k4=P1A3;sbit LCD_RW=卩2人5;sbit lcdrs=卩2人6;sbit Icde n=P 2人7;sbit Bee p=P 3人0;sbit led=P3A1;sbit DQ=P3A7;/*液晶顯示屏的延時(shí)程序*/void delay( uint z)/*ui nt x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);溫度傳感

25、器的延時(shí)程序*/void Delay1(ui nt y)uint x;for( ; y>0; y-)for(x=110; x>0; x-);/*蜂鳴器,18b20寫數(shù)據(jù)函數(shù)的延時(shí)程序 */void delay2( uint a)while(-a);/*溫度傳感器初始化函數(shù)*/void in it_18b20()DQ=1;delay2(8);DQ=0; delay2(90);DQ=1;_no p_();_no p_();delay2(100);DQ=1;I*溫度傳感器寫字節(jié)命令函數(shù)*Ivoid Ds18b20xiezijie(uchar date)uchar i;for(i=0;i&

26、lt;8;i+)DQ=0;DQ=date&0 x01; delay2(5); DQ=1; date>>=1;I*溫度傳感器讀字節(jié)命令函數(shù)uchar Ds18b20duzijie()uchar i,dat=0;DQ=1;_no p_();for(i=0;i<8;i+)DQ=0;_nop_();_nop_(); dat>>=1;DQ=1;_nop_();_nop_();if(DQ) dat|=0x80; delay2(30); DQ=1; return dat;I*voidIIIIII在寫入一位數(shù)據(jù)之前先把總線拉低 寫入一個(gè)數(shù)據(jù),從最低位開始寫 延時(shí)一下II將

27、總線拉高,等待第二位數(shù)據(jù)寫入 II右移一位,寫入第二位數(shù)據(jù)*/IIIIIIII/先將總線拉低然后釋放總線 延時(shí)一下等待數(shù)據(jù)穩(wěn)定讀取數(shù)據(jù),從最低位開始讀取讀取完之后等待一下,再接著讀取下一個(gè)數(shù)返回所讀到的溫度寫溫度轉(zhuǎn)換命令函數(shù)*IDs18b20Cha ngTe mp()in it_18b20();Delay1(1);Ds18b20xiezijie(0xcc);Ds18b20xiezijie(0x44);II跳過ROM操作命令I(lǐng)I 溫度轉(zhuǎn)換命令I(lǐng)*void讀溫度命令函數(shù)*IDs18b20ReadTe mp Com()in it_18b20();Delay1(1);Ds18b20xiezijie(0

28、xcc);Ds18b20xiezijie(0xbe);II跳過ROM操作命令I(lǐng)I發(fā)送讀取溫度命令I(lǐng)*讀溫度函數(shù)*/int Ds18b20ReadTe mp ()int temp = 0;uchar tmh, tml;/先寫入轉(zhuǎn)換命令/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令/讀取溫度值共16位,先讀低字節(jié)/再讀高字節(jié)Ds18b20Cha ngTem p(); Ds18b20ReadTe mp Com(); tml = Ds18b20duzijie(); tmh = Ds18b20duzijie(); temp = tmh;temp <<= 8;temp 1= tml; return tem

29、p;/*液晶屏寫指令函數(shù)*/void write_com(uchar com) "lcdrs=O;lcde n=0;LCD_RW=0;PO=com;delay(5);lcde n=1;delay(5);lcde n=0;/*液晶屏寫指令函數(shù)*/ void write_com2(i nt com) "lcdrs=0;LCD_RW=O; lcden=O;delay(5);PO=com;delay(5);Icden=1;delay(5);lcden=0;P0=(co m&OxOf)<<4;delay(5);Icden=1;delay(5);/*lcden=0;

30、液晶屏寫數(shù)據(jù)命令函數(shù)*/ void write_data(char date) lcdrs=1;LCD_RW=0; lcde n=0; P O=date; delay(5); lcde n=1; delay(5);Icde n=0;lcdrs=1;LCD_RW=0;Icde n=0;P0=(date&0x0f)<<4;/ 一次寫入 4 位delay(5);Icde n=1;delay(5);lcde n=0;/*液晶屏初始化函數(shù)*/void in it()lcde n=0;write_com(0x28);write_com2(0x28);write_com2(0x0c);w

31、rite_com2(0x06);write_com2(0x01);write_com2(0X80);/*報(bào)警上下線處理函數(shù)*/void write_hl(uchar add,char date) "uchar bai,shi,ge;if(date<0)date=-date; bai=date/100;shi=date%100/10;ge=date%100%10; write_com2(0x80+0x40+add);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);/*報(bào)警上下線處理函數(shù)*/void wri

32、te_hl1(uchar add,char date)uchar bai,shi,ge;if(date<0)date=-date; bai=date/100;shi=date%100/10;ge=date%100%10;write_com2(0x80+add);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);/* 液晶屏顯示函數(shù),顯示溫度值 */void Lcdxia nshi (int temp)uchar sz4=0,0,0,0;定義數(shù)組un sig ned char datas = 0, 0, 0, 0,

33、0; / float tp;/當(dāng)溫度值為負(fù)數(shù)if(te mp< 0)write_com2(0x80+0x40);/寫地址80表示初始地址write_data('-');/ 顯示負(fù)tem p=te mp-1;/因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減temp=te mp;tp=te mp;temp=t p*0.0625*100+0.5;elsewrite_com2(0x80+0x40);write_data('+');tp=tem p;/1,再取反求出原碼/寫地址80表示初始地址/顯示正因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量 如果溫度是正的那么,那么

34、正數(shù)的原碼就是補(bǔ)碼它本身temp=t p*0.0625*100+0.5;datas0 = temp / 10000;datas1 = temp % 10000 / 1000; / datas2 = temp % 1000 / 100; datas3 = temp % 100 / 10;/write_com2(0x80+0x40+1); write_data('0'+datas0);write_com2(0x80+0x40+2); write_data('0'+datas1); write_com2(0x80+0x40+3);write_data('0&#

35、39;+datas2); write_com2(0x80+0x40+4);write_data('.'); write_com2(0x80+0x40+5); write_data('0'+datas3);a=(datas0*100+datas1*10+datas2); write_hl(13,sha ngxiaxia n 1); write_hl1(13,sha ngxiaxia n0); /*按鍵處理函數(shù),用于設(shè)置溫度報(bào)警值void key()if(k1=0)dela y(5);if(k1=0)/*/溫度報(bào)警下限加sha ngxiaxia n 0+;if(sh

36、a ngxiaxia n0=127) sha ngxiaxia n0=126;write_hl1(13, sha ngxiaxia n0);if(k2=0) delay(5);if(k2=0)百位 十位 個(gè)位 小數(shù)/用于溫度的比較值 顯示報(bào)警上限 顯示報(bào)警下限/溫度報(bào)警下限減sha ngxiaxia n0 卜-;if(sha ngxiaxia n0=-56)sha ngxiaxia n0=-55; write_hl1(13, sha ngxiaxia n0); " if(k3=0)dela y(5);if(k3=0)/溫度報(bào)警上限加sha ngxiaxia n 1+;if(sha ngxiaxia n1=127) sha ngxiaxia n1=126; wnte_hl(13, sha ngxiaxia n 1);if(k4=0)dela y(5);if(k4=0)sha

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論