喬學增
(安徽醫(yī)學高等??茖W校,安徽 合肥 230006)
單片機技術(shù)的發(fā)展為快速且精準獲取信息提供了有效的途徑,單片機在日常生活中和工業(yè)生產(chǎn)中有效應用得到逐漸普及。當今社會對安全越來越重視,與安全密切相關(guān)的其中之一就是溫度,溫度在日常生活中和工農(nóng)業(yè)生產(chǎn)中具有重要地位,人們經(jīng)常關(guān)注的一個數(shù)值是溫度的高低,在很多方面對溫度不但有要求,而且對溫度的要求還比較高,因此能有一個對當前溫度實時檢測和數(shù)字顯示[1]儀器還是很有必要,該儀器最好能根據(jù)需要任意設(shè)定溫度范圍,如果當前溫度超過設(shè)定范圍時就會報警提醒,引起人們注意[2],該儀器應該是一款具有較高靈敏性和較高精確度的溫度報警裝置。設(shè)計一種溫度報警器,用單片機為該設(shè)備核心部分,單片機型號為STC89c52,溫度傳感器使用數(shù)字溫度傳感器,其型號為DS18B20,以LED 數(shù)碼管、蜂鳴器等為外圍電路共同組成的溫度報警器。對于這個溫度報警器,如果我們需要設(shè)置報警范圍,通過按鍵就可以設(shè)置上、下限[3]。當使用溫度報警器去測溫,所測得溫度不在不報警溫度范圍中時,報警器能夠及時報警提醒。該報警器具有制作簡單容易,攜帶方便,使用簡單。
利用STC89c52芯片和DS18B20型溫度傳感器為溫度報警器核心部件。STC89c52負責整個溫度報警器運行,數(shù)字溫度傳感器DS18B20負責測溫,所測得結(jié)果需經(jīng)A/D轉(zhuǎn)換,再由單片機進行一系列處理,最后由LED 數(shù)碼管進行顯示。如果我們想查看該溫度報警器的報警溫度范圍,只需按設(shè)置鍵和加、減溫度鍵就可以實現(xiàn),也可重新設(shè)定上、下限值。如果溫度報警器所需要檢測物體的溫度值不在所設(shè)定的不報警溫度范圍內(nèi)時,單片機就會驅(qū)動蜂鳴器進行報警,二極管發(fā)光,溫度報警器報警時人們既能聽到蜂鳴器響聲,也能看到二極管發(fā)光,實現(xiàn)聲光同時報警,整體結(jié)構(gòu)見圖1。
單片機中最重要的就是單片機最小系統(tǒng),也可以說是單片機的最小配置,最小配置主要由單片機、復位電路、晶振電路和供電電源構(gòu)成。電源也是電子設(shè)備的必備,STC89c52單片機用5伏直流電源供電。STC89c52單片機有功耗低、運行速度快和抗干擾能力強[4]等特點,有著容量可達8K的系統(tǒng)在線可編程Flash 存儲器[5],還可以任意選擇12時鐘/機器周期或者6時鐘/機器周期[6]等性能。單片機復位電路作用跟電腦重啟按鍵的作用非常相似,如果想讓單片機再次重新運行,只需要按下這個復位電路的復位鍵,單片機就可以重新從頭開始運行。只要給單片機的9腳輸入持續(xù)兩個機械周期高電平,單片機程序從頭執(zhí)行,也就是說單片機復位了。在單片機剛一開機時,復位電路中的RC電路進行充放電,會給與其連接的9腳有一段時間的高電平輸出,單片機就會重頭執(zhí)行其程序進行復位,也可以通過按鍵來讓單片機復位。在常態(tài)時9腳保持低電平,只有在復位時才需要高電平。51單片機晶振電路中的晶振采用是一個無源晶體,普遍選擇6MHz和11.0592MHz的晶振,晶振相當于單片機的工作速度,一般選取都不會超過24MHz,如果太高速度可能會出現(xiàn)不穩(wěn)定。本文所使用的這個單片機最小系統(tǒng),其晶振電路是采用兩個電容量都是30pF的電容c1、電容c2和一個常用的石英晶振[7]共同組成,電容c1和石英晶振共同連接放大器輸入端,電容c2與石英晶振共同連接單片機放大器的輸出端,電容c1和電容c2的一端與地連接。晶振電路提供給單片機一個穩(wěn)定的時鐘信號作為時鐘基準,單片機最小系統(tǒng)見圖2。
在溫度報警器設(shè)計中,溫度傳感器是直接探測溫度,因此也是非常重要。目前市場上的溫度傳感器分兩類。一類叫模擬溫度傳感器,如果用模擬溫度傳感器去測溫,所得到的結(jié)果只是模擬量,但是單片機是數(shù)字電路,不會處理模擬量,因此還需要經(jīng)A/D轉(zhuǎn)換處理,,再把經(jīng)A/D轉(zhuǎn)換后的結(jié)果送給單片機進行一系列處理,才能得到模擬溫度傳感器檢測到的溫度值,在市場上由于價格低,應用較為廣泛。另一類叫數(shù)字溫度傳感器,DS18B20型數(shù)字溫度傳感器在數(shù)字溫度傳感器中較具代表性,形狀有直插式和貼片式。貼片式測溫不是很方便,所以在這里用直插式。單從外形上很容易把直插式DS18B20型傳感器和三極管弄混淆,DS18B20傳感器除了檢測溫度的范圍廣和精度高外,還存在運行穩(wěn)定、抗干擾等特點,外圍不需要任何器件。系統(tǒng)中DS18B20傳感器的DAT端既是信號輸入端也是輸出端,芯片DS18B20型數(shù)字溫度傳感器通過DAT端與單片機進行相應的讀和寫雙向信號通訊,DAT端與單片機引腳之間串聯(lián)一個10KΩ的上拉電阻,串聯(lián)這個電阻的目的就是為了穩(wěn)定信號。DS18B20內(nèi)部電路連接見圖3,外形及外部電路連接見圖4。
所設(shè)計的溫度報警器使用LED 數(shù)碼管顯示檢測到的溫度值,數(shù)碼管有七段數(shù)碼管和八段數(shù)碼管之分,設(shè)計中顯示器使用的是四位一體八段共陽數(shù)碼管。LED數(shù)碼管連接在三極管集電極與單片機之間,三極管相當于開關(guān),當單片機讓三極管導通,電流會由電源通過三極管的發(fā)射極、集電極到LED數(shù)碼管的位選端,最后通過LED數(shù)碼管段選流入單片機。在單片機、電源和三極管的共同作用下使得數(shù)碼管的位選是高電平,根據(jù)共陽數(shù)碼管的特性,在位選處于高電平,段選處于低電平的數(shù)碼管部分就會亮,數(shù)碼管根據(jù)單片機提供給位和段選的高低電完成數(shù)值顯示。
報警電路由兩部分構(gòu)成,一部分是一個LED二極管與一個2.2KΩ的分壓電阻串聯(lián)組成的通路,電源是5V而LED二極管只需3V的驅(qū)動電壓,因此必須加一個分壓電阻來分壓,當單片機引腳給出低電平時,LED二極管就會亮;正常情況下引腳是高電平,LED燈不亮,單片機通過這種方式控制LED燈亮滅。 另一部分是由電源、三極管和蜂鳴器組成一個由PNP型三極管8550[8]充當電路開關(guān)的通路,三極管的導通與否是由單片機進行控制。我們在三極管8550基極和單片機引腳之間連接一個2.2KΩ的電阻,該電阻的作用是防止通過三極管的電流過大。當單片機給出三極管基極一個低電平,三極管就會導通,有電流流過蜂鳴器,蜂鳴器發(fā)聲報警,單片機通過對蜂鳴器和LED二極管的控制實現(xiàn)溫度報警器的報警功能。
設(shè)計采用獨立按鍵輸入,除去單片機復位電路中的復位按鍵(RESET)外,還有設(shè)置鍵(SET)、加溫鍵(ADD)、減溫鍵(DEC),外加單片機的一個開關(guān)鍵共5個按鍵。把設(shè)置鍵、加溫鍵和減溫鍵的一端連接到一起,把連到一起的那一端與地相連,剩下的一端分別與單片機上不同的引腳連接起來。如果三個鍵中的某一個鍵被按下,與該鍵相連的單片機引腳就是低電平,單片機就會執(zhí)行與之相應的功能。設(shè)計供電部分是把報警器上所有模塊的電源(VCC)正極相連給各模塊供電。因為設(shè)計每個模塊電源都是使用5VDC電源供電,只需一根電源線連接到報警器DC電源輸入接口,整個報警器就可以通過接口自鎖開關(guān)供電,用電腦或者充電寶均可以供電,既簡單又方便。
軟件系統(tǒng)主要根據(jù)設(shè)計目的和要求設(shè)計程序流程圖,見圖5。程序使用C語言編程[9],下面只給出一部分程序代碼,代碼如下:
void int0(void) interrupt 0
{
EX0=0; if(!DEC&&set_st==1)
{
do{
Disp_alarm(shangxian);
}
while(!DEC);
shangxian--;
if(shangxian } else if(!DEC&&set_st==2) { do{ Disp_alarm(xiaxian); } while(!DEC); xiaxian--; if(xiaxian<-10)xiaxian=-10; } }void int1(void) interrupt 2 { EX1=0; if(!ADD&&set_st==1) { do{ Disp_alarm(shangxian); } while(!ADD); shangxian++; if(shangxian>85)shangxian=85; } else if(ADD==0&&set_st==2) { do{ Disp_alarm(xiaxian); } while(!ADD); xiaxian++; if(xiaxian>shangxian)xiaxian=shangxian; } } 硬件系統(tǒng)我們還需要對電路進行設(shè)計,電路設(shè)計好后就可以準備焊接元器件和按圖連線了。按設(shè)計購買相應的元器件,檢查元器件的質(zhì)量、規(guī)格型號和數(shù)量等,必要時還需對購買來的元器件進行相應的檢測,以防焊接出錯導致?lián)p壞或影響產(chǎn)品效果,在檢查好后再進行連線焊接元器件。為了操作方便[10],焊接時按照電路圖將元器件核對清楚后分開歸類放置、焊接,這樣可以盡量避免操作失誤導致返工。焊接時先焊接相對較小的元器件,然后再焊接相對較大的元器件,遵循焊好小的再焊大的原則。特別注意焊接那些易損壞或較為精密的元器件,焊好后最好檢測一下。完成焊接后接上電源看電路能否正常,如正常把程序燒入再進行調(diào)試,直到實現(xiàn)測溫報警。 溫度報警器制作成功后可以設(shè)置報警溫度范圍。報警溫度范圍設(shè)置方法為:接通電源啟動溫度報警器,溫度報警器初始化后,就會檢測到當下溫度,溫度數(shù)值就會在數(shù)碼管上顯示,顯示數(shù)值的最后一位是溫度符號℃,這里用C代替。用手按一下設(shè)置鍵(SET),數(shù)碼管的顯示結(jié)果為H+溫度值,按加溫鍵(ADD)增加溫度,按減溫鍵(DEC)減小溫度,每按一次加或減溫度按鍵,溫度值增加0.1℃,如果想快速增加或減小溫度,可以按著加或減鍵不動,直到達到想設(shè)置的上限溫度值。停止按加溫或減溫鍵,再次按下設(shè)置鍵,完成報警溫度上限設(shè)置。這時數(shù)碼管顯示結(jié)果為L+溫度值,用同樣的方法設(shè)置報警溫度下限,完成報警溫度下限設(shè)置后,用手再按一下設(shè)置鍵,報警器退出設(shè)置,數(shù)碼管再次回到設(shè)置前的顯示狀態(tài),這樣報警溫度范圍就設(shè)置好了。 本溫度報警器可設(shè)置報警溫度值范圍為:報警溫度上限為85℃,下限為-10℃,當上下限設(shè)置數(shù)值相同時報警器不報警,即退出報警功能。如果報警器檢測到當前溫度比上限溫度值高,或者比下限報警溫度值低,報警系統(tǒng)就會自動報警,蜂鳴器會不停地響,LED二極管會伴隨蜂鳴器不停閃爍發(fā)光。如果想查看報警溫度設(shè)置范圍,方法與設(shè)置報警溫度范圍相似,按下設(shè)置鍵,你會看到數(shù)碼管顯示為H+數(shù)值,這個數(shù)值也就是為溫度報警器已設(shè)置的報警值上限,用手再次按設(shè)置鍵后去看數(shù)碼管顯示,你會發(fā)現(xiàn)顯示的數(shù)值已變成L+數(shù)值,這個數(shù)值也就是溫度報警器已設(shè)置的報警值下限,再按一次設(shè)置鍵數(shù)碼管顯示就會回到查看前狀態(tài)。為了檢測設(shè)計的溫度報警器的可靠性,對報警器溫度顯示,溫度報警范圍設(shè)置、報警功能等進行測試,測試結(jié)果顯示,該報警器的溫度顯示、溫度報警設(shè)置等可靠性高,效果較好。 設(shè)計的溫度報警器可以準確顯示當下溫度,最小顯示到0.1℃,誤差不超過0.1℃,可以根據(jù)具體需要在-10℃到85℃范圍內(nèi),通過按鍵任意設(shè)置報警溫度范圍,如果想擴大最大或最小報警溫度范圍,可通過修改程序?qū)崿F(xiàn)。這個溫度報警器具有操作簡單、便于使用、制作容易、成本低下、攜帶也方便等優(yōu)點,也能實現(xiàn)其測溫報警功能,經(jīng)實測得出運行中性能穩(wěn)定等特點,經(jīng)過實際焊接使用,能達到預測的目標,但也存在功能較少的不足,在未來,就進一步優(yōu)化溫度報警器的體積、檢測精度、靈敏度、功能設(shè)計等方面有待更深的探究,設(shè)計出體積更小、精度更高、靈敏度更好、功能更全面的溫度報警器。3 硬件系統(tǒng)組裝
4 溫度報警器功能實現(xiàn)
5 結(jié) 語