【文章內(nèi)容簡(jiǎn)介】
數(shù)碼管閃爍,這時(shí)可以調(diào)整報(bào)警上限溫度值。按下設(shè)置鍵第二次, L XX℃且數(shù)碼管閃爍,這時(shí)可以調(diào)整報(bào)警下限溫度值。通過“加鍵”可以對(duì)設(shè)置數(shù) 值加。通過“減鍵”可以對(duì)設(shè)置數(shù)值減。每按一次減 1。最高可加到 100,最低可減到 0。 減加設(shè)置 系統(tǒng)整體硬件電路 主板電路 系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路, 13 上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等,如圖 5 所示: C R Y S T A L 112 M H ZP 1 .01P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78R S T9P 3 .0/ R X D10P 3 .1/ T X D11P 3 .2 I N T 012P 3 .3/ I N T 113P 3 .4/ T 014P 3 .5/ T 115P 3 .6/ W P16P 3 .7/ R D17X T A L 218X T A L 119G N D20P 2 .021P 2 .122P 2 .223P 2 .324P 2 .425P 2 .526P 2 .627P 2 .728NA29A L E30E X _L V D31P 0 .732P 0 .633P 0 .534P 0 .435P 0 .336P 0 .237P 0 .138P 0 .039V C C40P 1 .12S T C 40A T 1A T 89S 52+ 5 VR 1 510 K12C110 uF1 2C2301 2C330+ 5 VA1B2C3D4E5F6G7DP8P19P210P311L E D 13L E Dc3d4e5f6g7com9a1b2dp8com10L E D 2L E D 數(shù)碼管R3R4R5R6R7R8R920 0Q185 50Q285 50Q385 50R 1 310 KR 1 4R 1 2+ 5 V減加設(shè)置VCC3I/O2GND1I C 1D S 18B 20+ 5 V1 2J1C O N 2D1L E DD2L E DD3L E DS1S W S P S T+ 5 VR 1 151 0H51 0L51 0P3.5P 3 .5P3.6P 3 .6P 3 .7R 1 020 01L S 1S P E A K E R+ 5 VQ485 50R 1 610 KP 3 .7 圖 5 單片機(jī)主板電路 圖 5 中沒有采用按鍵做為復(fù)位電路,直接采用電容充電的方式做為復(fù)位,在每上電時(shí)單片機(jī)復(fù)位一次這樣就可以達(dá)到重啟單片機(jī)的效果。 電源電路 整個(gè)電路采用 +5V 供電,通過 USB 接口供電,一個(gè)發(fā)光二極管做為電源指示燈。 3 系統(tǒng)軟件算法分析 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理 DS18B20 14 的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每 1s 進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖 7 所示。 圖 7 主程序流程圖 圖 8 讀溫度流程圖 讀出溫度子程序的主要功能是讀出 RAM 中的 9 字節(jié),在讀出時(shí)需進(jìn)行 CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 8 示。 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用 12 位初始化 調(diào)用顯示子程序 1S 到? 初次上電 讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新 發(fā)溫度轉(zhuǎn)換開始命令 N Y N Y Y 發(fā) DS18B20 復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)讀取溫度命令 讀取操作, CRC 校驗(yàn) 9 字節(jié)完? CRC 校驗(yàn)正? 確? 移入溫度暫存器 結(jié)束 N N Y 15 發(fā) DS18B20復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束 分辨率時(shí)轉(zhuǎn)換時(shí)間約為 750ms,在本程序設(shè)計(jì)中采用 1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖 9 所示: 圖 9 溫度轉(zhuǎn)換流程圖 計(jì)算溫度子程序 計(jì)算溫度子程序?qū)?RAM 中讀取值進(jìn)行 BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖 10 所示 : 圖 10 計(jì)算溫度流程圖 圖 11 顯示數(shù)據(jù)刷新流程圖 開始 溫度零 下 ? 溫度值取補(bǔ)碼置“ — ”標(biāo)志 計(jì)算小數(shù)位溫度 BCD值 計(jì)算整數(shù)位溫度 BCD值 結(jié)束 置“ +”標(biāo)志 N Y 溫度數(shù)據(jù)移入顯示寄存器 十位數(shù) 0? 百位數(shù) 0? 十位數(shù)顯示符號(hào)百位數(shù)不顯示 百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào)) 結(jié)束 N N Y Y 16 顯示數(shù)據(jù)刷新子程序 顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為 0 時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖 11。 4 總結(jié)與體會(huì) 經(jīng)過將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度報(bào)警器的設(shè)計(jì),雖然沒有完全達(dá)到設(shè)計(jì)要求,但從心底里說,還是高興的,畢竟這次設(shè)計(jì)把實(shí)物都做了出來,高興之余不得不深思呀! 在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程