【文章內(nèi)容簡介】
數(shù)碼管閃爍,這時可以調(diào)整報警上限溫度值。按下設(shè)置鍵第二次, L XX℃且數(shù)碼管閃爍,這時可以調(diào)整報警下限溫度值。通過“加鍵”可以對設(shè)置數(shù) 值加。通過“減鍵”可以對設(shè)置數(shù)值減。每按一次減 1。最高可加到 100,最低可減到 0。 減加設(shè)置 系統(tǒng)整體硬件電路 主板電路 系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路, 13 上下限報警調(diào)整電路,單片機主板電路等,如圖 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 單片機主板電路 圖 5 中沒有采用按鍵做為復(fù)位電路,直接采用電容充電的方式做為復(fù)位,在每上電時單片機復(fù)位一次這樣就可以達到重啟單片機的效果。 電源電路 整個電路采用 +5V 供電,通過 USB 接口供電,一個發(fā)光二極管做為電源指示燈。 3 系統(tǒng)軟件算法分析 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。 主程序的主要功能是負責(zé)溫度的實時顯示、讀出并處理 DS18B20 14 的測量的當(dāng)前溫度值,溫度測量每 1s 進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖 7 所示。 圖 7 主程序流程圖 圖 8 讀溫度流程圖 讀出溫度子程序的主要功能是讀出 RAM 中的 9 字節(jié),在讀出時需進行 CRC 校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 8 示。 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用 12 位初始化 調(diào)用顯示子程序 1S 到? 初次上電 讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新 發(fā)溫度轉(zhuǎn)換開始命令 N Y N Y Y 發(fā) DS18B20 復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)讀取溫度命令 讀取操作, CRC 校驗 9 字節(jié)完? CRC 校驗正? 確? 移入溫度暫存器 結(jié)束 N N Y 15 發(fā) DS18B20復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束 分辨率時轉(zhuǎn)換時間約為 750ms,在本程序設(shè)計中采用 1s 顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖 9 所示: 圖 9 溫度轉(zhuǎn)換流程圖 計算溫度子程序 計算溫度子程序?qū)?RAM 中讀取值進行 BCD 碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖 10 所示 : 圖 10 計算溫度流程圖 圖 11 顯示數(shù)據(jù)刷新流程圖 開始 溫度零 下 ? 溫度值取補碼置“ — ”標(biāo)志 計算小數(shù)位溫度 BCD值 計算整數(shù)位溫度 BCD值 結(jié)束 置“ +”標(biāo)志 N Y 溫度數(shù)據(jù)移入顯示寄存器 十位數(shù) 0? 百位數(shù) 0? 十位數(shù)顯示符號百位數(shù)不顯示 百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束 N N Y Y 16 顯示數(shù)據(jù)刷新子程序 顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當(dāng)最高顯示位為 0 時將符號顯示位移入下一位。程序流程圖如圖 11。 4 總結(jié)與體會 經(jīng)過將近三周的單片機課程設(shè)計,終于完成了我的數(shù)字溫度報警器的設(shè)計,雖然沒有完全達到設(shè)計要求,但從心底里說,還是高興的,畢竟這次設(shè)計把實物都做了出來,高興之余不得不深思呀! 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計但這次設(shè)計真的讓我長進了很多,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程