《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的多功能溫度控制器的設(shè)計(jì)
基于51單片機(jī)的多功能溫度控制器的設(shè)計(jì)
摘要: 文中以STC89C52RC單片機(jī)為控制核心,利用美國(guó)Dallas公司最新推出的單總線數(shù)字溫度傳感器DSl8820測(cè)量溫度,單片機(jī)處理后對(duì)溫度進(jìn)行控制,,并將溫度顯示在LCDl602上,還可通過(guò)按鍵設(shè)置溫度上下限值實(shí)現(xiàn)溫度超限報(bào)警等功能,。
Abstract:
Key words :

 

    在某些工業(yè)生產(chǎn)過(guò)程中,如恒溫爐,、倉(cāng)庫(kù)儲(chǔ)藏,、花卉種植、小型溫室等領(lǐng)域都對(duì)溫度有著嚴(yán)格的要求,,需要對(duì)其加以檢測(cè)和控制,。傳統(tǒng)的溫度測(cè)量方法是將溫度傳感器輸出的模擬信號(hào)放大后送至遠(yuǎn)端A/D轉(zhuǎn)換器,最后單片機(jī)對(duì)A/D轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行分析處理,。這種方法的缺點(diǎn)是模擬信號(hào)在傳輸?shù)倪^(guò)程中存在損耗并且容易受到外界的干擾,,導(dǎo)致測(cè)量的溫度精度不高,。

    文中以STC89C52RC單片機(jī)為控制核心,利用美國(guó)Dallas公司最新推出的單總線數(shù)字溫度傳感器DSl8820測(cè)量溫度,,單片機(jī)處理后對(duì)溫度進(jìn)行控制,,并將溫度顯示在LCDl602上,還可通過(guò)按鍵設(shè)置溫度上下限值實(shí)現(xiàn)溫度超限報(bào)警等功能,。

1 系統(tǒng)的組成和工作原理

    多功能溫度控制系統(tǒng)的結(jié)構(gòu)如圖1所示,,系統(tǒng)由六部分組成:控制核心部分,、溫度數(shù)據(jù)采集部分,、加熱裝置控制部分、液晶顯示部分,、按鍵輸入部分和報(bào)警提示部分,。單片機(jī)啟動(dòng)溫度采集電路完成溫度的一次轉(zhuǎn)換,然后讀出轉(zhuǎn)換后的數(shù)字量并轉(zhuǎn)化成當(dāng)前的溫度呈現(xiàn)在顯示模塊中,,并將當(dāng)前的溫度與通過(guò)按鍵輸入電路設(shè)定的保持恒溫度數(shù)進(jìn)行比較,,以實(shí)現(xiàn)溫度的控制。還可以通過(guò)按鍵設(shè)置溫度的上下限值以實(shí)現(xiàn)超溫或低溫報(bào)警提示功能,。本系統(tǒng)的設(shè)計(jì)目標(biāo)要對(duì)溫度的控制精度達(dá)到0.1℃,。

1.1 報(bào)警電路

    報(bào)警電路采用蜂鳴器作為發(fā)聲裝置,當(dāng)溫度高于設(shè)定的上限值或低于下限值,,給蜂鳴器送周期為1s,,占空比為50%的方波,報(bào)警的時(shí)間可以持續(xù)1分鐘或等待按鍵解除報(bào)警,,這由軟件控制實(shí)現(xiàn),。

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ù)即可。

1.3.3 DSl8820的控制步驟

    (1)首先對(duì)DSl8820進(jìn)行復(fù)位,。由單片機(jī)將數(shù)據(jù)線DQ拉至低電平480-960 μs,,然后將DQ拉高15-60 μs,以便單片機(jī)檢測(cè)到DSl8820送來(lái)的低電平響應(yīng),。然后檢測(cè)DQ,,若DQ仍然為高電平,則復(fù)位操作失敗,,可采用循環(huán)的方式再次對(duì)其進(jìn)行復(fù)位,;若DQ為低電平,,則復(fù)位操作成功,。

    (2)DSl8820的ROM操作命令。DSl8820復(fù)位后,,主機(jī)可以發(fā)器件ROM的操作命令如讀ROM[33H],、匹配ROM[55H]、跳過(guò)ROM[0CCH],,報(bào)警搜索[4EH]等,。在單點(diǎn)總線的情況下,可發(fā)跳過(guò)ROM[0CCH]操作命令,,以節(jié)省時(shí)間,。另外,文中有報(bào)警的功能,,溫度轉(zhuǎn)換后還需要發(fā)報(bào)警搜索命令,,該命令會(huì)將最近一次測(cè)得的溫度值T與高速RAM中的TH或TL作比較,若T>TH或T

    (3)DSl8820的存儲(chǔ)器操作命令,。如啟動(dòng)溫度轉(zhuǎn)換命令[44H],,寫(xiě)入命令[4EH](寫(xiě)入該命令后,緊接著要寫(xiě)入報(bào)警上限TH,,報(bào)警下限TL及配置寄存器字節(jié)),,讀暫存器RAM的內(nèi)容命令[0BEH](讀取將從第一個(gè)字節(jié)開(kāi)始一直到第9個(gè)字節(jié)結(jié)束,如僅需要部分字節(jié),,主機(jī)可以在合適的時(shí)刻發(fā)復(fù)位命令來(lái)終止讀取)及復(fù)制命令[48H](把暫存器RAM的第2,、3,、4字節(jié)轉(zhuǎn)存到DSl8820的EEROM中)等。

    (4)DSl8820的ROM或RAM操作的總線讀寫(xiě)時(shí)序,。對(duì)于讀時(shí)序,,首先將DQ拉低并延時(shí)1-15μs以內(nèi)(延時(shí)時(shí)間不能太長(zhǎng)),然后將DQ拉高并延時(shí)幾個(gè)μs后再讀取DQ的值,,讀完一位后需要延時(shí)45 μs以上才能讀取下一位,;對(duì)于寫(xiě)時(shí)序,先將DQ拉低10-15μs,,接著向總線寫(xiě)入數(shù)據(jù)并延時(shí)50μs以上,,最后將DQ拉高1μs以上再進(jìn)行下一位的寫(xiě)入。

1.4 液晶顯示模塊

    采用的是長(zhǎng)沙太陽(yáng)人電子有限公司生產(chǎn)的SMCl602A,。

1.4.1 主要技術(shù)參數(shù)

    芯片的工作電壓4.5~5.5V,,能顯示兩行,每行顯示16個(gè)字符,,字符的大小為2.95×4.35mm,。

1.4.2 接口信號(hào)說(shuō)明

    除電壓、背光引腳及8個(gè)I/O引腳外,,主要的控制引腳還有數(shù)據(jù)/命令選擇RS引腳,,該引腳為高電平時(shí)表示I/O引腳出現(xiàn)的是數(shù)據(jù),該引腳為低電平時(shí)表示I/O引腳出現(xiàn)的是命令,;讀/寫(xiě)選擇引腳及使能引腳E(該引腳為高電平時(shí)對(duì)SMCl602A的操作才有效),。

1.4.3 指令說(shuō)明

    (1)初始化設(shè)置
    a.顯示模式設(shè)置。指令碼:00111000b,,用于設(shè)置16×2顯示,,5×7點(diǎn)陣。
    b.顯示開(kāi)/關(guān)及光標(biāo)設(shè)置,。二進(jìn)制指令碼:00000DCB中D位用來(lái)控制顯示開(kāi)或關(guān),,C位用來(lái)控制顯示光標(biāo),B位控制光標(biāo)是否閃爍,。二進(jìn)制指令碼:000001NS中N位控制讀寫(xiě)一個(gè)數(shù)據(jù)后地址指針和光標(biāo)加或減1,,S位控制字符的移動(dòng)。
    c.?dāng)?shù)據(jù)指針設(shè)置,。指令碼:80H+地址碼(0-27H,,40H-67H)用于設(shè)置數(shù)據(jù)指針。
    (2)其他設(shè)置,。如指令碼01H:顯示清屏且數(shù)據(jù)指針清零,。

1.4.4 LCDl602的初始化步驟

    (1)延時(shí)15ms,寫(xiě)指令38H(不檢測(cè)忙信號(hào));
    (2)延時(shí)5ms,,寫(xiě)指令38H(不檢測(cè)忙信號(hào)),,上述過(guò)程執(zhí)行兩遍,后面的過(guò)程每次寫(xiě)指令,、讀/寫(xiě)數(shù)據(jù)之前均需要檢測(cè)忙信號(hào),;
    (3)寫(xiě)指令38H:顯示模式設(shè)置;
    (4)寫(xiě)指令08H:關(guān)閉顯示,;
    (5)寫(xiě)指令0lH:清屏且數(shù)據(jù)指針清零,;
    (6)寫(xiě)指令06H:字符不移動(dòng),光標(biāo)和指針加1,;
    (7)寫(xiě)指令0FH:顯示開(kāi),,光標(biāo)閃爍。

1.5 恒溫保持控制模塊

    選用6V固態(tài)繼電器作為開(kāi)關(guān)器件,,通過(guò)控制其斷與通的時(shí)序從而控制加熱器件的工作時(shí)長(zhǎng),,以實(shí)現(xiàn)樣品的恒溫保持功能。

2 系統(tǒng)硬件電路的設(shè)計(jì)

    該系統(tǒng)的主要電路原理圖如圖2所示,。系統(tǒng)中使用USB口提供5V電源的電路,;使用RS232串口通過(guò)P3.0和P3.1燒寫(xiě)程序的電路;以及使用繼電器控制的恒溫保持電路等在原理圖中并未畫(huà)出,。

 

3 系統(tǒng)的軟件設(shè)計(jì)

    系統(tǒng)總的流程圖如圖3所示,。系統(tǒng)程序主要有主程序和LCDl602初始化子程序及讀寫(xiě)時(shí)序子程序、DSl8820復(fù)位及讀寫(xiě)時(shí)序子程序,、鍵盤(pán)掃描子程序、溫度數(shù)據(jù)處理子程序等構(gòu)成,。

 

4 程序的編輯及調(diào)試

    編程語(yǔ)言可以采用匯編語(yǔ)言,,也可以采用C51語(yǔ)言。本文采用匯編語(yǔ)言,,使用Keil C軟件新建一個(gè)工程,,然后新建一個(gè)文件輸入源程序并保存成.a(chǎn)sm格式,并將該源文件添加到剛剛新建的工程,,隨后編譯鏈接后生成十六進(jìn)制文件(.HEX),,最后使用燒寫(xiě)軟件stc-isp-v3.9l通過(guò)RS232串口將十六進(jìn)制文件燒寫(xiě)進(jìn)單片機(jī)的Flash中運(yùn)行程序即可。

5 結(jié)論

    本文設(shè)計(jì)的多功能溫度控制器體積小,、功耗低,、可靠性高,實(shí)驗(yàn)表明,,對(duì)溫度的控制精度達(dá)到了0.1℃的設(shè)計(jì)目標(biāo),。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。