張?zhí)祢U
(西北民族大學(xué),甘肅 蘭州 730000)
DS18B20的內(nèi)部結(jié)構(gòu)主要有:溫度傳感器、配置寄存器、8位CRC發(fā)生器、高低溫觸發(fā)器、存儲(chǔ)器與羅控制模塊以及64位ROM和高速緩存等部件組成[1],可以將外界的信號轉(zhuǎn)變成電信號,直接讀取環(huán)境中被測的溫度值,再將AT89S52的硬件設(shè)計(jì)與軟件設(shè)計(jì)相結(jié)合,這樣就完成了系統(tǒng)設(shè)計(jì)的方案。
總體設(shè)計(jì)框圖如圖1。
圖1 總體設(shè)計(jì)方框圖
最小系統(tǒng)包括晶振電路、復(fù)位電路、按鍵設(shè)置部分,AT89S52單片機(jī)最小系統(tǒng)的電路如圖2所示。
圖2 單片機(jī)最小系統(tǒng)電路
按鍵開關(guān):
按鍵開關(guān)的特點(diǎn)是當(dāng)按下鍵時(shí),由于物理連接點(diǎn)有彈簧彈力的作用,按鍵不會(huì)在按下的時(shí)刻通電,一個(gè)按鍵從開始按下至接觸穩(wěn)定要經(jīng)過5~10ms的抖動(dòng)時(shí)間,此時(shí)會(huì)存在一個(gè)按鍵抖動(dòng)誤差。抖動(dòng)波形如圖3。
圖3 按鍵抖動(dòng)電壓波形
要使一個(gè)按鍵被按下并達(dá)到真實(shí)的按鍵效果需要確定兩個(gè)因素,一個(gè)是是否真實(shí)有按鍵被按下,另一個(gè)則是按鍵按下時(shí)是否在抖動(dòng)區(qū)域內(nèi)。可以通過測量按鍵兩端的電壓值判斷是否按鍵被真實(shí)按下。一般常用的按鍵消抖方法有兩種,一種是物理消抖,一種是程序消抖。針對按鍵按壓較為頻繁的使用情況,采用軟件的方法消除抖動(dòng)效果會(huì)更好,就是在軟件編程的時(shí)候采集按鍵是否被按下之后做一個(gè)8~12ms的延時(shí),這樣就避開了按鍵抖動(dòng)的時(shí)間,但是這也不能完全確定按鍵是否接觸良好,應(yīng)在最后對按鍵兩端的電壓值進(jìn)行檢測,以確保按鍵的接觸情況。
該設(shè)計(jì)上,采用了1602A液晶顯示器。1602A可以顯示兩行,每行有16個(gè)字符,其中一個(gè)字符包含的點(diǎn)陣可以由用戶自由設(shè)置。1602A里有若干個(gè)點(diǎn)陣字符單位組成。若要想顯示沒有被定義的字符,可以先取得目標(biāo)的圖形或者字符的字模數(shù)組??梢赃x擇通過手動(dòng)提取的方法,取得相應(yīng)的字模。CGRAM是用戶自建字模區(qū),有時(shí)ASCII碼表不能滿足個(gè)人對字符的要求,可以在這里錄入想要的字模。
數(shù)字溫度傳感器的溫度轉(zhuǎn)換時(shí)間相對較長。數(shù)字溫度傳感器分辨率越高,所需顯示的溫度,數(shù)據(jù)轉(zhuǎn)換時(shí)間越長。因此,在實(shí)際應(yīng)用中,應(yīng)考慮分辨率和轉(zhuǎn)換時(shí)間。我們已經(jīng)使用高速臨時(shí)存儲(chǔ)器RAM的第1-5字節(jié)其余字節(jié)保持未使用狀態(tài),其余字節(jié)顯示完整邏輯1。在第9個(gè)字節(jié)被讀出之前,高速臨時(shí)存儲(chǔ)器RAM所有的8字節(jié)CRC碼,將被用來校驗(yàn)數(shù)據(jù)。
當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換命令。轉(zhuǎn)換完成后數(shù)字溫度傳感器的溫度值,存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。當(dāng)符號位S等于零時(shí),數(shù)字溫度傳感器顯示被測得的溫度值為大于零值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號位S為非零值時(shí),數(shù)字溫度傳感器顯示被測得的溫度值為小于值。
DS18B20內(nèi)部主要有,64位ROM。數(shù)字溫度傳感器完成溫度轉(zhuǎn)換后,DS18B20其中2字節(jié)溫度輸出寄存器、1字節(jié)上下警報(bào)寄存器(TH和TL),就把傳感器測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。當(dāng)被測溫度值大于設(shè)置的TH或溫度值小于設(shè)置的TL,則DS18B20內(nèi)的報(bào)警標(biāo)志位置位,對主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來計(jì)算循環(huán)冗余檢驗(yàn)碼值,并和存入DS18B20的循環(huán)冗余檢驗(yàn)碼值作比較,以判斷CPU收到的ROM數(shù)據(jù)是否正確。
DS18B20的亮點(diǎn)功能是能直接讀取外界溫度轉(zhuǎn)換成數(shù)字的溫度測量。DS18B20的溫度轉(zhuǎn)換模式還可以自定義不同位數(shù)的精 度。DS18B20的 溫 度 精 度 可 分 為0.5 OC、0.25 OC、0.125OC、0.0625OC分辨率。其原理圖如圖4所示。
圖4 DS18B20測溫原理圖
在Proteus中仿真:
將keil軟件生成的.hex文件調(diào)入Proteus電路圖的單片機(jī)中,將.hex文件程序初始化后,通過外部輸入手動(dòng)調(diào)節(jié)DS18B20溫度傳感器的數(shù)值,液晶顯示器會(huì)顯示相應(yīng)溫度。