<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于51單片機的多功能溫度控制器的設計

基于51單片機的多功能溫度控制器的設計

作者: 時(shí)間:2011-10-06 來(lái)源:網(wǎng)絡(luò ) 收藏

0概述

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

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

1 系統的組成和工作原理

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

1.1 報警電路

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

1.2 按鍵電路

采用2×3的小鍵盤(pán),鍵盤(pán)的識別可以采用兩種方法:行掃描法和行反轉法。兩種方法都要注意消除按鍵的抖動(dòng)。文中采用行掃描法并做成子程序,出口參數為按鍵的鍵值。定義鍵K1設置TH,K2設置TL,K3調高TH或TL,K4調低TH或TL,K5對TH或TL的數值進(jìn)行確認。

1.3 溫度檢測電路

溫度檢測電路采用智能溫度傳感器DSl8820,它與單片機相連只需要3線(xiàn),減少了外部的硬件電路。DSl8820主要性能特點(diǎn)如下:

(1)測溫的范圍為-55~125℃,最大分辨率可以達到0.0625℃;
(2)電源電壓范圍為3.0~5.5V;
(3)供電模式:寄生供電和外部供電;
(4)封裝形式有兩種:3腳的TO-92封裝和8腳的SOIC封裝;
(5)可編程的溫度轉換分辨率,分辨率為9~12位(包括1位符號位),由配置寄存器決定具體位數,配置寄存器的格式如表1所示。


其中RlR0是用來(lái)設定分辨率的,分辨率的定義如表2所示。


由表2可以看出,分辨率設定得越高,溫度轉換所需要的時(shí)間就越長(cháng),因此應根據實(shí)際應用的需要來(lái)選擇合適的分辨率。本文中選取12位分辨率,每隔1秒檢測一次溫度。12位分辨率的溫度數據值格式如下:

當S=0表示測得的溫度為正值,當S=l表示測得的溫度為負值。

1.3.1 DSl8820的存儲器結構

DSl8820的存儲器有高速暫存RAM和非易失性電擦寫(xiě)EEPROM。高速暫存RAM的內容從低字節到高字節9個(gè)字節依次為:溫度LSB、溫度MSB、高溫限值字節TH、低溫限值字節TL、配置寄存器、保留、保留、保留,最后一個(gè)字節是前8個(gè)字節的CRC碼。EEPROM用來(lái)存儲TH和TL。

1.3.2 溫度數據的處理方法

從DSl8820讀出的兩個(gè)字節的二進(jìn)制值溫度必須先轉換成十進(jìn)制數值,然后才能將其ASCII碼送往LCDl602顯示。12位的分辨率,溫度是以0.0625步進(jìn)的,由于兩個(gè)字節的溫度采用補碼表示,所以先判斷讀出溫度的最高位是0還是1,即判斷是正溫還是負溫,然后對其求補碼轉化成正溫,之后將高字節的低4位和低字節的高4位組成一個(gè)字節,這個(gè)字節的二進(jìn)制值不斷除以10得出的余數即為溫度值的個(gè)、十、百位值。若讀出的溫度數值是負數,顯示處理時(shí),在溫度數的前面人為顯示負號即可。對小數部分的溫度只需將低字節的低4位乘以0.0625,然后對乘積取其小數點(diǎn)后的一位數即可。

1.3.3 DSl8820的控制步驟

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

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

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

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

1.4 液晶顯示模塊

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

1.4.1 主要技術(shù)參數

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

1.4.2 接口信號說(shuō)明

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

1.4.3 指令說(shuō)明

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

1.4.4 LCDl602的初始化步驟

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

1.5 恒溫保持控制模塊

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

2 系統硬件電路的設計

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

3 系統的軟件設計

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

4 程序的編輯及調試

編程語(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)單片機的Flash中運行程序即可。

5 結論

本文設計的體積小、功耗低、可靠性高,實(shí)驗表明,對溫度的控制精度達到了0.1℃的設計目標。

電能表相關(guān)文章:電能表原理
溫濕度控制器相關(guān)文章:溫濕度控制器原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>