一種基于51單片機(jī)的多功能溫度控制器的設(shè)計(jì)
1.2 按鍵電路
采用2×3的小鍵盤(pán),鍵盤(pán)的識(shí)別可以采用兩種方法:行掃描法和行反轉(zhuǎn)法。兩種方法都要注意消除按鍵的抖動(dòng)。文中采用行掃描法并做成子程序,出口參數(shù)為按鍵的鍵值。定義鍵K1設(shè)置TH,K2設(shè)置TL,K3調(diào)高TH或TL,K4調(diào)低TH或TL,K5對(duì)TH或TL的數(shù)值進(jìn)行確認(rèn)。
1.3 溫度檢測(cè)電路
溫度檢測(cè)電路采用智能溫度傳感器DSl8820,它與單片機(jī)相連只需要3線,減少了外部的硬件電路。DSl8820主要性能特點(diǎn)如下:
(1)測(cè)溫的范圍為-55~125℃,最大分辨率可以達(dá)到0.0625℃;
(2)電源電壓范圍為3.0~5.5V;
(3)供電模式:寄生供電和外部供電;
(4)封裝形式有兩種:3腳的TO-92封裝和8腳的SOIC封裝;
(5)可編程的溫度轉(zhuǎn)換分辨率,分辨率為9~12位(包括1位符號(hào)位),由配置寄存器決定具體位數(shù),配置寄存器的格式如表1所示。
其中RlR0是用來(lái)設(shè)定分辨率的,分辨率的定義如表2所示。
由表2可以看出,分辨率設(shè)定得越高,溫度轉(zhuǎn)換所需要的時(shí)間就越長(zhǎng),因此應(yīng)根據(jù)實(shí)際應(yīng)用的需要來(lái)選擇合適的分辨率。本文中選取12位分辨率,每隔1秒檢測(cè)一次溫度。12位分辨率的溫度數(shù)據(jù)值格式如下:
當(dāng)S=0表示測(cè)得的溫度為正值,當(dāng)S=l表示測(cè)得的溫度為負(fù)值。
1.3.1 DSl8820的存儲(chǔ)器結(jié)構(gòu)
DSl8820的存儲(chǔ)器有高速暫存RAM和非易失性電擦寫(xiě)EEPROM。高速暫存RAM的內(nèi)容從低字節(jié)到高字節(jié)9個(gè)字節(jié)依次為:溫度LSB、溫度MSB、高溫限值字節(jié)TH、低溫限值字節(jié)TL、配置寄存器、保留、保留、保留,最后一個(gè)字節(jié)是前8個(gè)字節(jié)的CRC碼。EEPROM用來(lái)存儲(chǔ)TH和TL。
1.3.2 溫度數(shù)據(jù)的處理方法
從DSl8820讀出的兩個(gè)字節(jié)的二進(jìn)制值溫度必須先轉(zhuǎn)換成十進(jìn)制數(shù)值,然后才能將其ASCII碼送往LCDl602顯示。12位的分辨率,溫度是以0.0625步進(jìn)的,由于兩個(gè)字節(jié)的溫度采用補(bǔ)碼表示,所以先判斷讀出溫度的最高位是0還是1,即判斷是正溫還是負(fù)溫,然后對(duì)其求補(bǔ)碼轉(zhuǎn)化成正溫,之后將高字節(jié)的低4位和低字節(jié)的高4位組成一個(gè)字節(jié),這個(gè)字節(jié)的二進(jìn)制值不斷除以10得出的余數(shù)即為溫度值的個(gè)、十、百位值。若讀出的溫度數(shù)值是負(fù)數(shù),顯示處理時(shí),在溫度數(shù)的前面人為顯示負(fù)號(hào)即可。對(duì)小數(shù)部分的溫度只需將低字節(jié)的低4位乘以0.0625,然后對(duì)乘積取其小數(shù)點(diǎn)后的一位數(shù)即可。
評(píng)論