影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告

上傳人:小** 文檔編號:46404501 上傳時(shí)間:2021-12-13 格式:DOC 頁數(shù):29 大?。?51.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告_第1頁
第1頁 / 共29頁
單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告_第2頁
第2頁 / 共29頁
單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告_第3頁
第3頁 / 共29頁

下載文檔到電腦,查找使用更方便

24 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告(29頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 目 錄 1. 設(shè)計(jì)任務(wù) 1 1.1設(shè)計(jì)目的 1 1.2設(shè)計(jì)指標(biāo) 1 1.3設(shè)計(jì)要求 1 2. 設(shè)計(jì)思路與總體框圖 1 3. 系統(tǒng)硬件電路的設(shè)計(jì) 2 3.1主控電路 2 3.2液晶顯示電路 3 3.3按鍵電路 3 3.4報(bào)警電路 4 4. 系統(tǒng)仿真設(shè)計(jì) 4 4.1仿真原理圖 4 4.2各功能元件的分析 5 5. 系統(tǒng)軟件設(shè)計(jì) 10 5.1主程序 11 5.2讀出溫度子程序 11 5.3溫度轉(zhuǎn)換命令子程序 12 5.4設(shè)計(jì)溫度子程序 12 5.5 1602的溫度顯示 13 6. 總結(jié)與體會 13 6 1總結(jié) 13

2、6. 2體會 14 7. 參考文獻(xiàn) 15 8. 附錄 16 1. 設(shè)計(jì)任務(wù) 1.1設(shè)計(jì)目的 1. 了解數(shù)數(shù)字溫度計(jì)及工作原理。 2. 進(jìn)一步掌握數(shù)字溫度計(jì)設(shè)計(jì)方法。 3. 進(jìn)一步掌握各芯片的邏輯功能及使用方法。 4. 進(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ì)由哪些相對獨(dú)立的功能

3、模塊組 成,標(biāo)出各個(gè)模塊之間互相聯(lián)系。并以文字對原理作輔助說明。 2. 設(shè)計(jì)各個(gè)功能模塊的電路圖,加上原理說明。 3. 選擇合適的元器件,在面包板上接線驗(yàn)證、調(diào)試各個(gè)功能模塊的電路, 在接線驗(yàn)證時(shí)設(shè)計(jì)、選擇合適的輸入信號和輸出方式,在確定電路充分正確性同 時(shí),輸入信號和輸出方式要便于電路的測試和故障排除。 4. 在驗(yàn)證各個(gè)功能模塊基礎(chǔ)上,對整個(gè)電路的元器件和布線進(jìn)行合理布 局,進(jìn)行整個(gè)數(shù)字溫度電路的接線調(diào)試。 2. 設(shè)計(jì)思路與總體框圖. 數(shù)字溫度計(jì)由主控制器(單片機(jī))、溫度傳感器(DS18B20)、顯示器 (LCD1602)、獨(dú)立按鍵和報(bào)警電路組成,溫度傳感器所感應(yīng)的溫度信號經(jīng)過

4、其數(shù) 據(jù)傳輸引腳傳送給單片機(jī),單片機(jī)將所接收到的溫度信號經(jīng)過處理, 將其送至顯 示器LCD1602顯示,并且能夠通過獨(dú)立按鍵設(shè)置溫度報(bào)警值, 若溫度處于報(bào)警上 限和下限之外,報(bào)警電路工作。圖1所示為數(shù)字溫度計(jì)的一般結(jié)構(gòu)框圖: 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 STC90C51 LCD1602 顯示 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 5 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 單片機(jī)時(shí)鐘 振蕩 ▲圖1 數(shù)字溫度計(jì)結(jié)構(gòu)框圖 3.系統(tǒng)硬件電路的設(shè)計(jì) 3.1主控電路 蜂鳴器,指示燈 DS18B20傳感器 單片機(jī)

5、STC90C5具有低電壓供電和體積小等特點(diǎn),四個(gè)端口同時(shí)使用以滿 足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供 電。晶振采用12MHZ JJ丄 1= :亠 :丄 * A 1-rtL 1 PO1/AD1 PO.2/AD2 XTAL2 P0L3/AD3 PO4/AD4 P0 5/AD5 PO.6/ADB PO.7/AD7 P2O/AS RST P2.1/A9 P2 2/A10 PSEN P2.37A11 ALE P2.4JA12 EA P2 5JA13 P2.6;A14 P2.7/A15 P1.0

6、 P3.0)RXD P1 1 P31/TXD P3.2/INT0 ri .2 P1.3 P331NT1 P1.4 P3.4H0 P1.5 P35/T1 P1.6 P3.5A/^R P1 7 P3.7JRD ■11 —L1 1B 17 I ▲圖2主控電路 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 ▲圖3晶振電路 3.2溫度顯示電路 采

7、用液晶顯示屏LCD1602顯示,第一行顯示“ 18B20 OKTL”和報(bào)警下限值, 第二行顯示實(shí)時(shí)溫度以及報(bào)警上限值,并且能夠顯示負(fù)溫度值。用 P0 口進(jìn)行 LCD1602的數(shù)據(jù)寫操作,P2.5~P2.7 口進(jìn)行LCD1602的命令控制端口。電路圖如 下: ▲圖4溫度顯示電路 3.3 按鍵電路 本系統(tǒng)一共設(shè)置了四個(gè)按鍵,k1鍵設(shè)置溫度下限加,k2鍵設(shè)置溫度下限減 k3鍵設(shè)置溫度上限加,k4鍵設(shè)置溫度上限減。 ▲圖5按鍵電路 3.4報(bào)警電路 本設(shè)計(jì)采用蜂鳴器和LED燈組成報(bào)警電路,電路圖如下: ▲圖6報(bào)警電路 4 .系統(tǒng)設(shè)計(jì)仿真 4.1仿真原理圖

8、根據(jù)數(shù)字溫度計(jì)的一般結(jié)構(gòu)框圖, 我們通過查閱資料書和上網(wǎng)查詢,了解不 同元件的功能和實(shí)用性,考慮性價(jià)比后,制作出的數(shù)字溫度計(jì)的仿真電路原理圖, 如圖7所示。 WD □ 1 ONO G H-.-BTAL bXTftLI FDIVADEI pg FD2?Afil2 XTP.L2 袒雪翼M FDj9AD€ FZIVAS *Z.1W 賞 F2^A11 ?ME F2J&A1# FZ.T^tJ P1.D P1 1 R31IRX* F3.1fTX P1.4 口 4/TQ MS F3*Ti p 1 F3J&UUW. IF3.T/KF F1

9、J1 uTE:e 11 F ~iT LCD1 IAC16L ■P TEXTS- ▲圖7 數(shù)字溫度計(jì)仿真電路原理圖 4.2各功能元件的分析 設(shè)計(jì)原理圖中各功能元件的引腳圖的分析如下所示: 1. DS18B20 DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能 溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度, 并且 可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn) 9-12位的數(shù)字值讀數(shù)方式。DS18B20的性 能特點(diǎn)如下: (1) 獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信, DS18B2在與微處理器 連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處

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

11、計(jì)不會因發(fā)熱而燒毀,但不能正 常工作; (10) 測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU同 時(shí)可傳送CR校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力 DS18B20采用3腳PR35封裝或8 腳SOIC封裝,其引腳排列及內(nèi)部結(jié)構(gòu)框: DS18R20 12 3 Vce NC NC NC 11 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 GMD g UDD PR-35封裝 ▲ 圖8 DS18B20引腳排列圖 64位 和 接口 電源檢測 高速 存巾粹 低潮蝮:器TL 配置寄存器 # 數(shù)字溫度計(jì)課程設(shè)計(jì)

12、報(bào)告 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 ▲圖9內(nèi)部結(jié)構(gòu)框圖 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 ▲ 圖10 DS18B20測溫原理圖 64位R0啲結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個(gè)器件的惟一的序號, 共有48位,最后8位是前面56位的CRC僉驗(yàn)碼,這也是多個(gè)DS18B2C可以采用 一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。 DS18B20溫度傳感器的內(nèi)部存儲器還包括一個(gè)高速暫存 RAM和一個(gè)非易失性 的可電擦除的EERAM高速暫存RAM勺結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖4所示。 頭2個(gè)字節(jié)包含測得的溫度信息,第 3

13、和第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在工作模式還是在測試模式,DS18B2C出廠時(shí)該位被設(shè)置為0,用戶 不要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。 溫度LSB 溫度MSB TH用戶字節(jié)1 TL用戶字節(jié)2 配置寄存器 保留 保留 保留 CRC TM R1 R0 1 1 1 1 1 圖11 DS18B2

14、0的字節(jié)定義 DS18B20的分辨率定義如表1所示 表1 分辨率設(shè)置表 R0 R1 分辨率 最大溫度轉(zhuǎn)移時(shí)間 0 0 9位 96.75ms 0 1 10位 187.5ms 1 0 11位 375ms 1 1 12位 750ms 由表1可見,DS18B20溫度轉(zhuǎn)換的時(shí)間比較長,而且分辨率越高,所需要的 溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。 主機(jī)控制DS18B20完成溫度轉(zhuǎn)換過程是:每一次讀寫之前都要對 DS18B20進(jìn)行復(fù) 位,即將數(shù)據(jù)總線下拉500us,然后釋放,DS18B20攵到信號后等待16-60us左 右

15、,之后發(fā)出60-240us的存在低脈沖,主CPU攵到此此信號表示復(fù)位成功;復(fù) 位成功后發(fā)送一條ROM旨令,然后發(fā)送RAM旨令,這樣才能對DS18B20進(jìn)行預(yù)訂 的讀寫操作。 表2 ROM 指令集 指令 約定代碼 功能 讀ROM 33H 讀DS18B2C中的編碼 符合ROM 55H 發(fā)出此命令后,接著發(fā)出64位ROM碼,訪問單線總線 上與該編輯相對應(yīng)的 DS18B20使之做出響應(yīng),為下一步 對該DS18B20勺讀寫作準(zhǔn)備 搜索ROM 0F0H 用于確定掛接在同一總線上的 DS18B2C個(gè)數(shù)和識別64位 ROM地址,為操作各器件作準(zhǔn)備 跳過ROM 0

16、CCH 忽略64位ROM地址,直接向DS18B2C發(fā)送溫度變換指令 告警搜索 命令 0ECH 執(zhí)行后,只有溫度跳過設(shè)定值上限或下限的片子才能做 出反應(yīng) 表3 RAM 指令集 指令 約定代碼 功能 溫度轉(zhuǎn)換 44H 啟動DS18B20S行溫度轉(zhuǎn)換 讀暫存器 0BEH 讀暫存器9個(gè)字節(jié)內(nèi)容 寫暫存器 4EH 將數(shù)據(jù)寫入暫存器的TH TL字節(jié) 復(fù)制暫存器 48H 把暫存器的TH TL字節(jié)寫到E^RAM中 重調(diào)Wram 0B8H 把E2RAM中的TH TL字節(jié)寫到暫存器 TH TL字節(jié) 讀供電方式 0B4H 啟動DS18B2C發(fā)送電源供電方

17、式的信號給主 CPU DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度 的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計(jì)數(shù)器 1 ;高溫度系數(shù)晶振 隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計(jì)數(shù)器 2的脈沖輸入。 器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí), DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生 的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測量。 計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器 來決定,每次測量前,首先將最低溫所對應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器 1、 溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在最低溫所對應(yīng)的一個(gè)基數(shù)值。 減法計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號

18、進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器 1 的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入, 減法計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直 到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就 是所測溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值, 只要計(jì)數(shù)器門仍未關(guān)閉就 重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。 ▲圖12 測溫電路圖 2. LCD1602: 工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符(16列2行)。1602液 晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的 點(diǎn)陣型 液晶模塊

19、。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可 以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔, 每行之間也有間隔,起到了字符 間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義 CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩 行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。1602芯片的接口信號說明如 下表: 1602芯片的接口信號說明 編號 符號 引腳說明 編號 料號 引腳說訊 1 VSS 電源地 g 02 敵撇I 0 VDD 屯源il.按 10 D3 數(shù)搦【0 3 VL H

20、 D4 1 RS 數(shù)i電命令選擇端 12 D5 獨(dú)據(jù)【u 5 R *P 讀瀉1翻鞫t 13 Dtt 歡據(jù)14 6 E ]1 07 數(shù) 1/0 7 閃 眾撫1 ◎ 15 Rl A 肯死iF械 呂 DI 數(shù)拯】用 16 HIX 背尤說械 5系統(tǒng)軟件設(shè)計(jì) 整個(gè)系統(tǒng)是由硬件配合軟件來實(shí)現(xiàn)的,在硬件確定后,編寫的軟件的功能 也就基本定型了。所以軟件的功能大致可分為兩個(gè)部分:一是監(jiān)控, 這也是系統(tǒng) 的核心部分,二是執(zhí)行部分,完成各個(gè)具體的功能。系統(tǒng)程序主要包括主程序, 讀出溫度子程序,溫度轉(zhuǎn)換命令子程序, 計(jì)算溫度子程序,顯示數(shù)據(jù)

21、刷新子程序 等。 DS18B20的測量的 5.1主程序 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理 當(dāng)前溫度值, 溫度測量每1s進(jìn)行一次 這樣可以在一秒之內(nèi)測量一次被測溫度, 17 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 其程序流程見圖13所示 ▲圖13主程序流程圖 ▲圖14讀溫度流程圖 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 # 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 5.2讀出溫度子程序 讀出溫度子程序的主要功能是讀出 RAM中的9字節(jié),在讀出時(shí)需進(jìn)行 CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其

22、程序流程圖如圖 15示: 發(fā)DS18B20復(fù)位命令 1 F 發(fā)跳過ROM命令 1 發(fā)溫度轉(zhuǎn)換 電開始命令 1 f ▲圖15 溫度轉(zhuǎn)換流程圖 5.3溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令, 當(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.5 1602的液晶顯示

23、 ▲圖17 1602液晶顯示流程圖 6. 總結(jié)與體會 6.1總結(jié) 1. 根據(jù)原理和芯片引腳圖,分功能設(shè)計(jì)原理圖,并根據(jù)接線順序分步驟驗(yàn) 證。 2. 容易出現(xiàn)故障為接觸不良。 a) 集成塊引腳方向預(yù)先彎好對準(zhǔn)面包板的金屬孔,再小心插入。 b) 導(dǎo)線的剝線長度與面包板的厚度相適應(yīng)(比板的厚度稍短)。 c) 導(dǎo)線的裸線部分不要露在板的上面,以防短路。 d) 導(dǎo)線要插入金屬孔中央。 3. 注意芯片的控制引腳必須正確接好 4. 檢查故障時(shí)除測試輸入、輸出信號外,要注意電源、接地和控制引腳。 5. 要注意芯片引腳上的信號與面包板上插座上信號是否一致 (集成塊引腳與 面包板常接

24、觸不良)。 6. 接校時(shí)電路時(shí)可接模擬信號輸入(如 1Hz和2Hz)測試輸出信號的切換正 確后,再將秒進(jìn)位和分進(jìn)位信號接到校時(shí)電路, 再接校時(shí)電路輸出到分計(jì)數(shù)器和 時(shí)計(jì)數(shù)器。 從較時(shí)電路接入信號時(shí),必須將原進(jìn)位信號拔掉。 6.2體會 經(jīng)過將近兩周的單片機(jī)課程設(shè)計(jì),終于完成了我們的數(shù)字溫度計(jì)課程設(shè)計(jì), 雖 然課程設(shè)計(jì)做的不是特別好,但從心底里說,還是高興的,因?yàn)槲覀兪斋@了很多 很多,這些在平常的學(xué)習(xí)當(dāng)中是收獲不到的,但高興之余不得不靜下來深思! 在本次課程設(shè)計(jì)的過程中,我們發(fā)現(xiàn)很多的問題,雖然以前還做過類似的課 程設(shè)計(jì),但這次設(shè)計(jì)真的讓我學(xué)到了很多、長進(jìn)了很多,單片機(jī)課程設(shè)計(jì)的重點(diǎn) 就

25、在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過一些程序, 但 覺的要寫好一個(gè)程序并不是一件簡單的事,所以我們只能不斷的調(diào)試不斷的修改 才能把程寫的更好。所以得出結(jié)論是:有好多的東西,只有我們?nèi)ピ囍隽耍?能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握, 實(shí)踐才是硬 道理,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。 通過這次的課程設(shè)計(jì),我們真正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際, 把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,這樣我們才能更好的理解、掌握這些知識, 學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高, 這就是我 在這次課程設(shè)計(jì)中的最大收獲。通過這次對數(shù)字溫度計(jì)的

26、設(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í),讓我們對各種電路都有了大概的了解,所以說, 坐而言不如 立而行,對于這些電路還是應(yīng)該自己動手實(shí)際操作才會有深刻理解。 當(dāng)然在這個(gè)過程中我們還會遇到很多其它的問題,這些問題我們也不是那么 輕易的就能夠解決的,此時(shí)

27、我們就會去翻閱相關(guān)資料,或者是問同學(xué)、問老師, 我們的同學(xué)和老師那一個(gè)個(gè)真的事知無不答的,這樣我們就能很快的把問題給決 絕掉了,那種感覺真的讓人很舒暢,這也讓我們明白了一件事,在學(xué)習(xí)中我們?nèi)?少不了同學(xué)、老師的幫助,他們能夠很快的解決一些問題。 從這次的課程設(shè)計(jì)中,我真正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際, 把我們所學(xué)的理論知識應(yīng)用到實(shí)際當(dāng)中, 學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng) 常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。 7. 參考文獻(xiàn) [1] 《單片機(jī)原理及應(yīng)用》楊恢先、黃輝光主編[M].湘潭大學(xué)出版社 [2] 《電子技術(shù)基礎(chǔ)》(第五版)華中科技大學(xué)電子

28、技術(shù)課程組編[M].康華 光主編,陳大欽、張林副主編,高等教育出版社 [3] 《單片機(jī)課程指導(dǎo)》樓然苗、李光飛編著,北京航空航天大學(xué)大學(xué)出 版社 《51單片機(jī)C語言教程》 郭天祥 編著 21 數(shù)字溫度計(jì)課程設(shè)計(jì)報(bào)告 8?附錄: #in clude #in elude vintrin s.h> #defi ne uchar un sig ned char #defi ne uint un sig ned int uchar temp ,nu m,k1 num; uchar code table[]={"18B20 OK TL"}; char sh

29、a ngxiaxia n[2]={-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; /*液晶顯示屏的延時(shí)程序*/ void delay( uint z) { ui nt x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*溫度傳感器

30、的延時(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; } /*溫度傳感器寫字

31、節(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寫入一個(gè)數(shù)據(jù),從最低位開始寫 II延時(shí)一下 II將總線拉高,等待第二位數(shù)據(jù)寫入 II右移一位,寫入第二位數(shù)據(jù) } } /*溫度傳感器讀字節(jié)命令函數(shù) */ uchar Ds18b20duzijie() { uchar i,dat=O; DQ=1; _no p_(); for(i

32、=0;i<8;i++) { DQ=0; II先將總線拉低 _nop_(); _nop_(); dat>>=1; DQ=1; II然后釋放總線 _nop_(); II延時(shí)一下等待數(shù)據(jù)穩(wěn)定 _nop_(); if(DQ) dat|=0x80; II讀取數(shù)據(jù),從最低位開始讀取 delay2(30); II讀取完之后等待一下,再接著讀取下一個(gè)數(shù) DQ=1; } return dat; II返回所讀到的溫度 } I*寫溫度轉(zhuǎn)換命令函數(shù)*I void Ds18b20Cha ngTemp() { in it_18b20(); II跳過ROM操作命令 II 溫度轉(zhuǎn)換命令

33、 II跳過ROM操作命令 Delay1(1); Ds18b20xiezijie(0xcc); Ds18b20xiezijie(0x44); } I*讀溫度命令函數(shù)*I void Ds18b20ReadTempCom() { in it_18b20(); Delay1(1); Ds18b20xiezijie(0xcc); //發(fā)送讀取溫度命令 //先寫入轉(zhuǎn)換命令 //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 //讀取溫度值共16位,先讀低字節(jié) //再讀高字節(jié) Ds18b20xiezijie(0xbe); } /*讀溫度函數(shù)*/ int Ds18b20ReadTemp

34、() { 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; dela

35、y(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; lc

36、de 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_com

37、2(0x01); write_com2(0X80); } - /*報(bào)警上下線處理函數(shù)*/ void write_hl(uchar add,char date) { - uchar bai,shi,ge; if(date

38、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 sz[4]={0,0,0,0}

39、; un sig ned char datas[] = {0, 0, 0, 0, 0}; // 定義數(shù)組 float tp; if(temp< 0) //當(dāng)溫度值為負(fù)數(shù) { write_com2(0x80+0x40); //寫地址80表示初始地址 write_data(-); // 顯示負(fù) 1,再取反求出原碼 temp=temp-1;〃因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減 temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; } else { write_com2(0x80+0x40); write_data(+); tp=temp

40、; // temp=tp*0.0625*100+0.5; } datas[0] = temp / 10000; datas[1] = temp % 10000 / 1000; // datas[2] = temp % 1000 / 100; datas[3] = temp % 100 / 10; // write_com2(0x80+0x40+1); write_data(0+datas[0]); write_com2(0x80+0x40+2); write_data(0+datas[1]); write_com2(0x80+0x40+3); write_data(0+datas

41、[2]); write_com2(0x80+0x40+4); write_data(.); write_com2(0x80+0x40+5); write_data(0+datas[3]); a=(datas[0]*100+datas[1]*10+datas[2]); write_hl(13,sha ngxiaxia n[ 1]); write_hl1(13,shangxiaxian[0]); // }- /*按鍵處理函數(shù),用于設(shè)置溫度報(bào)警值 //寫地址80表示初始地址 //顯示正 因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量 如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本

42、身 // 百位 十位 //個(gè)位 小數(shù) //用于溫度的比較值 //顯示報(bào)警上限 顯示報(bào)警下限 */ void key() { if(k1==0) { delay(5); if(k1==0) // 溫度報(bào)警下限加 { sha ngxiaxia n[ 0]++; if(sha ngxiaxia n[0]==127) sha ngxiaxia n[0]=126; write_hl1(13, sha ngxiaxia n[0]); }- } if(k2==0) //溫度報(bào)警下限減 { delay(5); if(k2==0) { sha ngxi

43、axia n[0 卜-; if(sha ngxiaxia n[0]==-56) sha ngxiaxia n[0]=-55; write_hl1(13, shangxiaxian[0]); } } if(k3==0) //溫度報(bào)警上限加 { delay(5); if(k3==0) { sha ngxiaxia n[ 1]++; if(sha ngxiaxia n[1]==127) sha ngxiaxia n[1]=126; write_hl(13, sha ngxiaxia n[ 1]); } - } if(k4==0) //溫度報(bào)警上限減 { dela

44、y(5); if(k4==0) { sha ngxiaxia n[1]--; if(sha ngxiaxia n[1]==-56) sha ngxiaxia n[1]=-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);

45、 write_data(T); write_com2(0x80+0x40+10); write_data(H); while(1) { key(); Lcdxia nshi(Ds18b20ReadTemp()); delay(100); if(sha ngxiaxia n[0]<0) { write_com2(0x80+12); write_data(_); }- else { write_com2(0x80+12); write_data(+); } if(sha ngxiaxia n[ 1]<0) { write_com2(0x80+0x40+1

46、2); write_data(-); }- else { write_com2(0x80+0x40+12); write_data(+); }- if(a>sha ngxiaxia n[1]) // 判斷溫度值與報(bào)警值的大小 { write_com2(0x80+0x40+6); write_data(>); write_com2(0x80+0x40+7); write_data(H); }- if(a

47、te_com2(0x80+0x40+7); write_data(L); } if(a>=sha ngxiaxia n[0] &&a<=sha ngxiaxia n[ 1]) // 判斷溫度值與報(bào)警值的大小 { write_com2(0x80+0x40+6); write_data(); write_com2(0x80+0x40+7); write_data(!); 蜂鳴 }- if(ashangxiaxian[1]) // 如果溫度值在報(bào)警值之外則, 器響 { for(b=0;b<1000;b++) { Beep= 1;led=1; delay2(20); Beep= 0;led=0; delay2(20); } } } } 29

展開閱讀全文
溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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