<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>
  • 歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
    裝配圖網(wǎng)
    ImageVerifierCode 換一換
    首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

    單片機數(shù)字溫度計課程設計報告

    • 資源ID:46404501       資源大小:951.50KB        全文頁數(shù):29頁
    • 資源格式: DOC        下載積分:24積分
    快捷下載 游客一鍵下載
    會員登錄下載
    微信登錄下載
    三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
    二維碼
    微信掃一掃登錄
    下載資源需要24積分
    郵箱/手機:
    溫馨提示:
    用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
    支付方式: 支付寶    微信支付   
    驗證碼:   換一換

     
    賬號:
    密碼:
    驗證碼:   換一換
      忘記密碼?
        
    友情提示
    2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
    3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
    4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
    5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

    單片機數(shù)字溫度計課程設計報告

    數(shù)字溫度計課程設計報告目 錄1. 設計任務11.1設計目的11.2設計指標11.3設計要求12. 設計思路與總體框圖13. 系統(tǒng)硬件電路的設計23.1主控電路23.2液晶顯示電路 33.3按鍵電路33.4報警電路44. 系統(tǒng)仿真設計44.1仿真原理圖44.2各功能元件的分析55. 系統(tǒng)軟件設計 105.1主程序115.2讀出溫度子程序 115.3溫度轉(zhuǎn)換命令子程序 125.4設計溫度子程序 125.5 1602的溫度顯示136. 總結與體會136 1總結136. 2體會147. 參考文獻158. 附錄161. 設計任務1.1設計目的1. 了解數(shù)數(shù)字溫度計及工作原理。2. 進一步掌握數(shù)字溫度計設計方法。3. 進一步掌握各芯片的邏輯功能及使用方法。4. 進一步掌握keil和仿真軟件的應用。5. 進一步熟悉集成電路的引腳安排.。1.2設計指標1. 顯示溫度。2. 可以顯示大于零度的溫度也可以顯示小于零度的溫度。3. 具有顯示相應環(huán)境溫度的功能,并且具有超出設定范圍內(nèi)溫度時可以報警的功能,相應環(huán)境可以人為選擇。1.3設計要求1. 畫出總體設計框圖,以說明數(shù)字溫度計由哪些相對獨立的功能模塊組成,標出各個模塊之間互相聯(lián)系。并以文字對原理作輔助說明。2. 設計各個功能模塊的電路圖,加上原理說明。3. 選擇合適的元器件,在面包板上接線驗證、調(diào)試各個功能模塊的電路, 在接線驗證時設計、選擇合適的輸入信號和輸出方式,在確定電路充分正確性同 時,輸入信號和輸出方式要便于電路的測試和故障排除。4. 在驗證各個功能模塊基礎上,對整個電路的元器件和布線進行合理布局,進行整個數(shù)字溫度電路的接線調(diào)試。2. 設計思路與總體框圖.數(shù)字溫度計由主控制器(單片機)、溫度傳感器(DS18B20)、顯示器 (LCD1602)、獨立按鍵和報警電路組成,溫度傳感器所感應的溫度信號經(jīng)過其數(shù) 據(jù)傳輸引腳傳送給單片機,單片機將所接收到的溫度信號經(jīng)過處理,將其送至顯示器LCD1602顯示,并且能夠通過獨立按鍵設置溫度報警值, 若溫度處于報警上 限和下限之外,報警電路工作。圖1所示為數(shù)字溫度計的一般結構框圖:數(shù)字溫度計課程設計報告數(shù)字溫度計課程設計報告STC90C51LCD1602 顯示數(shù)字溫度計課程設計報告5數(shù)字溫度計課程設計報告單片機時鐘振蕩圖1 數(shù)字溫度計結構框圖3.系統(tǒng)硬件電路的設計3.1主控電路蜂鳴器,指示燈DS18B20傳感器單片機STC90C5具有低電壓供電和體積小等特點,四個端口同時使用以滿足電路系統(tǒng)的設計需要,很適合便攜手持式產(chǎn)品的設計使用系統(tǒng)可用二節(jié)電池供電。晶振采用12MHZJJ丄1=:亠:丄* A 1-rtL 1PO1/AD1PO.2/AD2XTAL2P0L3/AD3PO4/AD4P0 5/AD5 PO.6/ADB PO.7/AD7P2O/ASRSTP2.1/A9P2 2/A10PSENP2.37A11ALEP2.4JA12EAP2 5JA13P2.6;A14P2.7/A15P1.0P3.0)RXDP1 1P31/TXDP3.2/INT0ri .2P1.3P331NT1P1.4P3.4H0P1.5P35/T1P1.6P3.5A/RP1 7P3.7JRD11L11B17I圖2主控電路#數(shù)字溫度計課程設計報告圖3晶振電路3.2溫度顯示電路采用液晶顯示屏LCD1602顯示,第一行顯示“ 18B20 OKTL”和報警下限值, 第二行顯示實時溫度以及報警上限值,并且能夠顯示負溫度值。用P0 口進行LCD1602的數(shù)據(jù)寫操作,P2.5P2.7 口進行LCD1602的命令控制端口。電路圖如 下:圖4溫度顯示電路3.3按鍵電路本系統(tǒng)一共設置了四個按鍵,k1鍵設置溫度下限加,k2鍵設置溫度下限減 k3鍵設置溫度上限加,k4鍵設置溫度上限減。圖5按鍵電路3.4報警電路本設計采用蜂鳴器和LED燈組成報警電路,電路圖如下:圖6報警電路4 .系統(tǒng)設計仿真4.1仿真原理圖根據(jù)數(shù)字溫度計的一般結構框圖, 我們通過查閱資料書和上網(wǎng)查詢,了解不 同元件的功能和實用性,考慮性價比后,制作出的數(shù)字溫度計的仿真電路原理圖, 如圖7所示。WD1ONOG H-.-BTALbXTftLIFDIVADEI pgFD2?Afil2XTP.L2袒雪翼M FDj9ADFZIVAS *Z.1W賞F2A11 MEF2J&A1#FZ.TtJP1.D P1 1R31IRX*F3.1fTXP1.4口 4/TQMSF3*Tip 1 F3J&UUW.IF3.T/KFF1J1uTE:e11F iTLCD1IAC16L P TEXTS-圖7 數(shù)字溫度計仿真電路原理圖4.2各功能元件的分析設計原理圖中各功能元件的引腳圖的分析如下所示:1. DS18B20DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能 溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn) 9-12位的數(shù)字值讀數(shù)方式。DS18B20的性 能特點如下:(1) 獨特的單線接口僅需要一個端口引腳進行通信,DS18B2在與微處理器 連接時僅需要一條口線即可實現(xiàn)微處理器與 DS18B2的雙向通訊。(2) DS18B20支持多點組網(wǎng)功能,多個 DS18B20可以并聯(lián)在惟一的三線上, 實現(xiàn)多點組網(wǎng)測溫;(3) 無須外部器件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集 成電路內(nèi);(4) 可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5 V;(5) 零待機功耗;(6) 溫度以9或12位數(shù)字,對應的可分辨溫度分別為0.5 C、0.25 C、0.125 C 和0.0625 C,可實現(xiàn)高精度測溫;(7) 用戶可定義報警設置;(8) 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;(9) 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正 常工作;(10) 測量結果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU同 時可傳送CR校驗碼,具有極強的抗干擾糾錯能力 DS18B20采用3腳PR35封裝或8 腳SOIC封裝,其引腳排列及內(nèi)部結構框:DS18R20123VceNCNCNC11數(shù)字溫度計課程設計報告#數(shù)字溫度計課程設計報告GMD g UDDPR-35封裝 圖8DS18B20引腳排列圖64位和接口電源檢測高速存巾粹低潮蝮:器TL配置寄存器#數(shù)字溫度計課程設計報告#數(shù)字溫度計課程設計報告圖9內(nèi)部結構框圖#數(shù)字溫度計課程設計報告 圖10 DS18B20測溫原理圖64位R0啲結構開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號, 共有48位,最后8位是前面56位的CRC僉驗碼,這也是多個DS18B2C可以采用 一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM高速暫存RAM勺結構為8字節(jié)的存儲器,結構如圖4所示。 頭2個字節(jié)包含測得的溫度信息,第 3和第4字節(jié)TH和TL的拷貝,是易失的, 每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值 的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應精度的溫度數(shù) 值。該字節(jié)各位的定義如圖5所示。低5位一直為1, TM是工作模式位,用于設 置DS18B20在工作模式還是在測試模式,DS18B2C出廠時該位被設置為0,用戶 不要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設置分辨率。溫度LSB溫度MSBTH用戶字節(jié)1TL用戶字節(jié)2配置寄存器保留保留保留CRCTM R1 R0 1111 1圖11 DS18B2 0的字節(jié)定義DS18B20的分辨率定義如表1所示表1分辨率設置表R0R1分辨率最大溫度轉(zhuǎn)移時間009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的 溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應用中要將分辨率和轉(zhuǎn)換時間權衡考慮。 主機控制DS18B20完成溫度轉(zhuǎn)換過程是:每一次讀寫之前都要對 DS18B20進行復 位,即將數(shù)據(jù)總線下拉500us,然后釋放,DS18B20攵到信號后等待16-60us左 右,之后發(fā)出60-240us的存在低脈沖,主CPU攵到此此信號表示復位成功;復 位成功后發(fā)送一條ROM旨令,然后發(fā)送RAM旨令,這樣才能對DS18B20進行預訂 的讀寫操作。表2ROM指令集指令約定代碼功能讀ROM33H讀DS18B2C中的編碼符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROM碼,訪問單線總線 上與該編輯相對應的 DS18B20使之做出響應,為下一步對該DS18B20勺讀寫作準備搜索ROM0F0H用于確定掛接在同一總線上的 DS18B2C個數(shù)和識別64位ROM地址,為操作各器件作準備跳過ROM0CCH忽略64位ROM地址,直接向DS18B2C發(fā)送溫度變換指令告警搜索命令0ECH執(zhí)行后,只有溫度跳過設定值上限或下限的片子才能做 出反應表3RAM指令集指令約定代碼功能溫度轉(zhuǎn)換44H啟動DS18B20S行溫度轉(zhuǎn)換讀暫存器0BEH讀暫存器9個字節(jié)內(nèi)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH TL字節(jié)復制暫存器48H把暫存器的TH TL字節(jié)寫到ERAM中重調(diào)Wram0B8H把E2RAM中的TH TL字節(jié)寫到暫存器 TH TL字節(jié)讀供電方式0B4H啟動DS18B2C發(fā)送電源供電方式的信號給主 CPUDS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度 的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1 ;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。 計數(shù)門的開啟時間由高溫度系數(shù)振蕩器 來決定,每次測量前,首先將最低溫所對應的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預置在最低溫所對應的一個基數(shù)值。 減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入, 減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直 到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就 是所測溫度值。其輸出用于修正減法計數(shù)器的預置值, 只要計數(shù)器門仍未關閉就 重復上述過程,直到溫度寄存器值大致被測溫度值。圖12 測溫電路圖2. LCD1602:工業(yè)字符型液晶,能夠同時顯示16x02即32個字符(16列2行)。1602液 晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可 以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義 CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩 行,每行16個字符液晶模塊(顯示字符和數(shù)字)。1602芯片的接口信號說明如 下表:1602芯片的接口信號說明編號符號引腳說明編號料號引腳說訊1VSS電源地g02敵撇I 0VDD屯源il.按10D3數(shù)搦【03VLHD41RS數(shù)i電命令選擇端12D5獨據(jù)【u5R *P讀瀉1翻鞫t13Dtt歡據(jù)146E107數(shù) 1/07閃眾撫1 15Rl A肯死iF械呂DI數(shù)拯】用16HIX背尤說械5系統(tǒng)軟件設計整個系統(tǒng)是由硬件配合軟件來實現(xiàn)的,在硬件確定后,編寫的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個部分:一是監(jiān)控,這也是系統(tǒng) 的核心部分,二是執(zhí)行部分,完成各個具體的功能。系統(tǒng)程序主要包括主程序, 讀出溫度子程序,溫度轉(zhuǎn)換命令子程序, 計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。DS18B20的測量的5.1主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理當前溫度值,溫度測量每1s進行一次這樣可以在一秒之內(nèi)測量一次被測溫度,17數(shù)字溫度計課程設計報告#數(shù)字溫度計課程設計報告其程序流程見圖13所示圖13主程序流程圖圖14讀溫度流程圖#數(shù)字溫度計課程設計報告#數(shù)字溫度計課程設計報告5.2讀出溫度子程序讀出溫度子程序的主要功能是讀出 RAM中的9字節(jié),在讀出時需進行 CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖15示:發(fā)DS18B20復位命令1F發(fā)跳過ROM命令1發(fā)溫度轉(zhuǎn)換電開始命令1 f圖15 溫度轉(zhuǎn)換流程圖5.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當采用12位分辨率時轉(zhuǎn)換時間約為750ms在本程序設計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。 溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖 13所示5.4計算溫度子程序計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負 的判定,其程序流程圖如圖16所示。圖16 計算溫度溫度流程圖5.51602的液晶顯示圖17 1602液晶顯示流程圖6. 總結與體會6.1總結1. 根據(jù)原理和芯片引腳圖,分功能設計原理圖,并根據(jù)接線順序分步驟驗 證。2. 容易出現(xiàn)故障為接觸不良。a)集成塊引腳方向預先彎好對準面包板的金屬孔,再小心插入。b)導線的剝線長度與面包板的厚度相適應(比板的厚度稍短)。c)導線的裸線部分不要露在板的上面,以防短路。d)導線要插入金屬孔中央。3. 注意芯片的控制引腳必須正確接好4. 檢查故障時除測試輸入、輸出信號外,要注意電源、接地和控制引腳。5. 要注意芯片引腳上的信號與面包板上插座上信號是否一致(集成塊引腳與面包板常接觸不良)。6. 接校時電路時可接模擬信號輸入(如 1Hz和2Hz)測試輸出信號的切換正 確后,再將秒進位和分進位信號接到校時電路, 再接校時電路輸出到分計數(shù)器和 時計數(shù)器。從較時電路接入信號時,必須將原進位信號拔掉。6.2體會經(jīng)過將近兩周的單片機課程設計,終于完成了我們的數(shù)字溫度計課程設計, 雖 然課程設計做的不是特別好,但從心底里說,還是高興的,因為我們收獲了很多 很多,這些在平常的學習當中是收獲不到的,但高興之余不得不靜下來深思!在本次課程設計的過程中,我們發(fā)現(xiàn)很多的問題,雖然以前還做過類似的課 程設計,但這次設計真的讓我學到了很多、長進了很多,單片機課程設計的重點 就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過一些程序,但覺的要寫好一個程序并不是一件簡單的事,所以我們只能不斷的調(diào)試不斷的修改 才能把程寫的更好。所以得出結論是:有好多的東西,只有我們?nèi)ピ囍隽?,?能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握,實踐才是硬道理,實踐是檢驗真理的唯一標準。通過這次的課程設計,我們真正的意識到,在以后的學習中,要理論聯(lián)系實際, 把我們所學的理論知識用到實際當中,這樣我們才能更好的理解、掌握這些知識, 學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高, 這就是我 在這次課程設計中的最大收獲。通過這次對數(shù)字溫度計的設計與制作, 讓我們了 解了設計電路的程序,也讓我們了解了關于數(shù)字溫度計的原理與設計理念,要設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定 與仿真時完全一樣,因為,在實際接線中有著各種各樣的條件制約著。并且,在 仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以, 在設計時應考慮兩者的差異,從中找出最適合的設計方法。通過這次學習,讓我們對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應該自己動手實際操作才會有深刻理解。當然在這個過程中我們還會遇到很多其它的問題,這些問題我們也不是那么 輕易的就能夠解決的,此時我們就會去翻閱相關資料,或者是問同學、問老師, 我們的同學和老師那一個個真的事知無不答的,這樣我們就能很快的把問題給決 絕掉了,那種感覺真的讓人很舒暢,這也讓我們明白了一件事,在學習中我們?nèi)?少不了同學、老師的幫助,他們能夠很快的解決一些問題。從這次的課程設計中,我真正的意識到,在以后的學習中,要理論聯(lián)系實際, 把我們所學的理論知識應用到實際當中, 學習單機片機更是如此,程序只有在經(jīng) 常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。7. 參考文獻1 單片機原理及應用楊恢先、黃輝光主編M.湘潭大學出版社2 電子技術基礎(第五版)華中科技大學電子技術課程組編M.康華 光主編,陳大欽、張林副主編,高等教育出版社3 單片機課程指導樓然苗、李光飛編著,北京航空航天大學大學出 版社51單片機C語言教程 郭天祥 編著21數(shù)字溫度計課程設計報告8附錄:#in clude<reg51.h>#in elude vintrin s.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar temp ,nu m,k1 num;uchar code table="18B20 OK TL"char sha ngxiaxia n2=-10,10;char a;sbit k仁 P1A0;sbit k2=P1Al;sbit k3=P1A2;sbit k4=P1A3;sbit LCD_RW=P2A5;sbit lcdrs=P2A6;sbit Icde n=P2A7;sbit Beep=P3A0;sbit led=P3A1;sbit DQ=P3A7;/*液晶顯示屏的延時程序*/void delay( uint z)ui nt x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);/*溫度傳感器的延時程序 */void Delay1(ui nt y)uint x;for( ; y>0; y-)for(x=110; x>0; x-);/*蜂鳴器,18b20寫數(shù)據(jù)函數(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;/*溫度傳感器寫字節(jié)命令函數(shù)*/void Ds18b20xiezijie(uchar date) uchar i;for(i=0;i<8;i+)DQ=0;DQ=date&0 x01; delay2(5);DQ=1; date>>=1;II在寫入一位數(shù)據(jù)之前先把總線拉低II寫入一個數(shù)據(jù),從最低位開始寫II延時一下II將總線拉高,等待第二位數(shù)據(jù)寫入II右移一位,寫入第二位數(shù)據(jù)/*溫度傳感器讀字節(jié)命令函數(shù)*/ uchar Ds18b20duzijie()uchar i,dat=O;DQ=1;_no p_();for(i=0;i<8;i+)DQ=0;II先將總線拉低_nop_();_nop_();dat>>=1;DQ=1;II然后釋放總線_nop_();II延時一下等待數(shù)據(jù)穩(wěn)定_nop_();if(DQ)dat|=0x80;II讀取數(shù)據(jù),從最低位開始讀取delay2(30);II讀取完之后等待一下,再接著讀取下一個數(shù)DQ=1;return dat;II返回所讀到的溫度 I*寫溫度轉(zhuǎn)換命令函數(shù)*Ivoid Ds18b20Cha ngTemp()in it_18b20();II跳過ROM操作命令II 溫度轉(zhuǎn)換命令II跳過ROM操作命令Delay1(1);Ds18b20xiezijie(0xcc); Ds18b20xiezijie(0x44);I*讀溫度命令函數(shù)*Ivoid Ds18b20ReadTempCom() in it_18b20();Delay1(1);Ds18b20xiezijie(0xcc);/發(fā)送讀取溫度命令/先寫入轉(zhuǎn)換命令/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令/讀取溫度值共16位,先讀低字節(jié)/再讀高字節(jié)Ds18b20xiezijie(0xbe);/*讀溫度函數(shù)*/int Ds18b20ReadTemp()int temp = 0;uchar tmh, tml;Ds18b20Cha ngTemp();Ds18b20ReadTempCom(); tml = Ds18b20duzijie(); tmh = Ds18b20duzijie(); temp = tmh;temp <<= 8;temp |= tml; return temp;/*液晶屏寫指令函數(shù)*/void write_com(uchar com) -lcdrs=0;lcde n=0;LCD_RW=0;P0=com;delay(5);lcde n=1;delay(5);lcde n=0;/*液晶屏寫指令函數(shù)*/void write_com2(i nt com) -lcdrs=0;LCD_RW=0;lcde n=0;delay(5);P0=com;delay(5);lcde n=1;delay(5);lcde n=0;P0=(co m&OxOf)<<4; delay(5);lcde n=1;delay(5);lcde n=0;/*液晶屏寫數(shù)據(jù)命令函數(shù)*/void write_data(char date)lcdrs=1;LCD_RW=0;lcde n=0;P0=date;delay(5);Icde n=1;delay(5);Icde n=0;lcdrs=1;LCD_RW=O;Icde n=0;PO=(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);write_com2(0x06);write_com2(0x01); write_com2(0X80); -/*報警上下線處理函數(shù)*/void write_hl(uchar add,char date) -uchar bai,shi,ge;if(date<O)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);/*報警上下線處理函數(shù)*/void write_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;un sig ned char datas = 0, 0, 0, 0, 0; /定義數(shù)組float tp;if(temp< 0)/當溫度值為負數(shù)write_com2(0x80+0x40);/寫地址80表示初始地址write_data(-);/ 顯示負1,再取反求出原碼temp=temp-1;因為讀取的溫度是實際溫度的補碼,所以減temp=temp; tp=temp;temp=tp*0.0625*100+0.5; else write_com2(0x80+0x40);write_data(+); tp=temp;/temp=tp*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+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,shangxiaxian0); /-/*按鍵處理函數(shù),用于設置溫度報警值/寫地址80表示初始地址/顯示正因為數(shù)據(jù)處理有小數(shù)點所以將溫度賦給一個浮點型變量 如果溫度是正的那么,那么正數(shù)的原碼就是補碼它本身/ 百位十位/個位小數(shù)/用于溫度的比較值/顯示報警上限顯示報警下限*/void key()if(k1=0)delay(5);if(k1=0)/溫度報警下限加sha ngxiaxia n 0+;if(sha ngxiaxia n0=127)sha ngxiaxia n0=126; write_hl1(13, sha ngxiaxia n0);-if(k2=0)/溫度報警下限減delay(5);if(k2=0)sha ngxiaxia n0 卜-;if(sha ngxiaxia n0=-56)sha ngxiaxia n0=-55;write_hl1(13, shangxiaxian0);if(k3=0)/溫度報警上限加delay(5);if(k3=0)sha ngxiaxia n 1+;if(sha ngxiaxia n1=127)sha ngxiaxia n1=126;write_hl(13, sha ngxiaxia n 1); -if(k4=0)/溫度報警上限減delay(5);if(k4=0)sha ngxiaxia n1-;if(sha ngxiaxia n1=-56)sha ngxiaxia n1=-55;write_hl(13, sha ngxiaxia n 1);-void mai n()int b;in it();led=0;for(num=0;num<11;num+) / 讓液晶屏顯示"18B20 OK TL ” write_data(table nu m);delay(20);write_com2(0x80+0x40+9);write_data(T);write_com2(0x80+0x40+10);write_data(H);while(1)key();Lcdxia nshi(Ds18b20ReadTemp();delay(100);if(sha ngxiaxia n0<0)write_com2(0x80+12);write_data(_);-elsewrite_com2(0x80+12);write_data(+);if(sha ngxiaxia n 1<0)write_com2(0x80+0x40+12);write_data(-);-elsewrite_com2(0x80+0x40+12);write_data(+);-if(a>sha ngxiaxia n1)/判斷溫度值與報警值的大小 write_com2(0x80+0x40+6);write_data(>);write_com2(0x80+0x40+7);write_data(H);-if(a<sha ngxiaxia n0)/判斷溫度值與報警值的大小write_com2(0x80+0x40+6);write_data(<);write_com2(0x80+0x40+7);write_data(L);if(a>=sha ngxiaxia n0 &&a<=sha ngxiaxia n 1) /判斷溫度值與報警值的大小 write_com2(0x80+0x40+6);write_data();write_com2(0x80+0x40+7);write_data(!);蜂鳴-if(a<shangxiaxianO|a>shangxiaxian1)/ 如果溫度值在報警值之外則,器響for(b=0;b<1000;b+) Beep= 1;led=1;delay2(20);Beep= 0;led=0;delay2(20);29

    注意事項

    本文(單片機數(shù)字溫度計課程設計報告)為本站會員(小**)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

    溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




    關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

    備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>