多功能溫度控制系統的結構如圖 1 所示,系統由控制核心部分、溫度數據采集部分、加熱裝置控制部分、液晶顯示部分、按鍵輸入部分和報警提示部分六部分組成。單片機啟動溫度采集電路,完成溫度轉換,然後讀出轉換後的數字量,轉化為當前溫度顯示在顯示模塊中,並將當前溫度與按鍵輸入電路設定的恒溫度數進行比較,實現溫度控制。還可以通過按鍵設置溫度的上下限值,實現超溫或低溫報警功能。本系統的設計目標是實現 0.1 ℃ 的控溫精度。
1.1報警電路
報警電路采用蜂鳴器作為發聲裝置,當溫度高於設定的上限值或下限值時,向蜂鳴器發出周期為1s、占空比為50%的方波,報警可持續1分鐘或等待按鍵解除警報,由軟件控制實現。
1.2按鍵電路
采用 2×3 鍵盤,對鍵盤的識別可采用兩種方法:行掃描法和行反轉法。這兩種方法都要註意消除按鍵抖動。在行掃描法的文本中並入壹個子程序,退出參數為按鍵的鍵值。定義按鍵 K1 用來設置 TH,K2 用來設置 TL,K3 用來向上調整 TH 或 TL,K4 用來向下調整 TH 或 TL,K5 用來確認 TH 或 TL 的值。
1.3 溫度檢測電路
溫度檢測電路采用智能溫度傳感器 DSl8820,與單片機之間僅用 3 根導線連接,減少了外部硬件電路。
(1)溫度測量範圍為 -55 至 125 ℃,最大分辨率可達 0.0625 ℃;
(2) 溫度檢測電路采用智能溫度傳感器 DSl8820,與單片機之間僅用 3 根導線連接,減少了外部硬件電路。
(2) 電源電壓範圍為 3.0 至 5.5V;
(3) 電源供電模式:寄生供電和外部供電;
(4) 有兩種封裝類型:3 引腳 TO-92 封裝和 8 引腳 SOIC 封裝;
(5)可編程溫度轉換分辨率,分辨率為 9 位至 12 位(含 1 位符號位),由配置寄存器決定具體位數,配置寄存器格式如表 1 所示。
其中 RlR0 用於設置分辨率,分辨率的定義如表 2 所示。
從表 2 可以看出,分辨率設置得越高,溫度轉換所需的時間就越長,因此應根據實際應用的需要選擇合適的分辨率。本文選擇 12 位分辨率,每 1 秒檢測壹次溫度。12 位分辨率的溫度數據值格式如下:
當 S=0 時表示測量溫度為正值,當 S=l 時表示測量溫度為負值,則 S=1 表示測量溫度為負值。
1.3.1 DSl8820 存儲器結構
DSl8820 存儲器包括高速臨時存儲器 RAM 和非易失性可電擦除 EEPROM。高速暫存器 RAM 的內容從低字節到高字節 9 個字節依次為:溫度 LSB、溫度 MSB、高溫極限字節 TH、低溫極限字節 TL、配置寄存器、保留、保留、保留、保留、保留、最後壹個字節、最後壹個字節、最後壹個字節、最後壹個字節、最後壹個字節、最後壹個字節、最後壹個字節、最後壹個字節。最後壹個字節是前 8 個字節的 CRC 碼。EEPROM 用於存儲 TH 和 TL。
1.3.2 溫度數據處理方法
從 DSl8820 讀取的兩個字節的二進制溫度值必須轉換為十進制值,然後才能將其 ASCII 編碼發送到 LCDl602 顯示。12 位分辨率,溫度以 0.0625步,因為溫度的兩個字節采用互補碼,所以首先判斷讀出的溫度的最高位是0還是1,即判斷是正溫度還是負溫度,然後將其互補碼轉換成正溫度,再將高字節的低4位和低字節的高4位組成壹個字節、該字節的二進制值為溫度值除以 10 的余數,即為常數的溫度值 a 如果讀出的溫度值為負數,則為第 10 位、第 10 位和第 100 位的值。如果讀出的溫度值為負數,可以在溫度數字前人為地顯示壹個負號來處理顯示。對於溫度的小數部分,只需將低字節的低 4 位乘以 0.0625,然後將乘積取到小數點後壹位。
1.3.3 DSl8820 控制步驟
(1) 首先,DSl8820 復位。單片機將數據線 DQ 拉至低電平 480-960 μs,然後將 DQ 拉高 15-60 μs,以便單片機檢測 DSl8820 發送的低電平響應。然後檢測 DQ,如果 DQ 仍為高電平,則復位操作失敗,可使用壹個周期再次復位;如果 DQ 為低電平,則復位操作成功。
(2)DSl8820 ROM 操作命令:DSl8820 復位後,主機可發出讀 ROM [33H]、匹配 ROM [55H]、跳過 ROM [0CCH]、警報搜索 [4EH] 等設備 ROM 操作命令。在單點總線情況下,可發出跳過 ROM[0CCH] 操作命令以節省時間。此外,文本中的報警、溫度轉換等功能,還需要發送報警搜索命令,該命令將最近測得的溫度值 T 與高速 RAM 中的 TH 或 TL 進行比較,如果 T & gt; TH 或 T & lt; TL,則設備內的報警標誌位被置位,並對主機發出的報警搜索命令做出響應。
(3)DSl8820 存儲器操作命令。如啟動溫度轉換命令[44H]、寫命令[4EH](寫命令後,依次為報警上限TH、報警下限TL和配置寄存器字節)、讀取臨時存儲器RAM內容命令[0BEH](讀取時將從第壹個字節開始壹直讀到第九個字節結束,如需要部分字節、主機可在適當的時候發送復位命令終止讀取)和復制命令(讀取將從第壹個字節開始壹直到第 9 個字節結束,如只需要部分字節,主機可在適當的時候發送復位命令終止讀取)以及復制命令 [48H] (將寄存器 RAM 的第 2、3 和 4 個字節轉儲到 DSl8820 的 EEROM 中)等。
(4) DSl8820 的 ROM 或 RAM 操作的總線讀/寫時序。對於讀取時序,先拉低 DQ 並延遲 1-15 μs 或更短(延遲時間不能太長),然後拉高 DQ 並延遲幾 μs 再讀取 DQ 的值,讀取時延遲 45 μs 或更長時間讀取下壹位;對於寫入時序,先拉低 DQ 10-15 μs,然後向總線寫入並延遲 50 μs 或更長時間,最後拉高 DQ 1 μs 或更長時間寫入下壹位。下壹位數據在延遲 50 μs 以上後寫入總線,然後將 DQ 提升 1 μs 以上。
1.4 液晶顯示模塊
長沙太陽人電子有限公司生產的 SMCl602A 液晶顯示模塊、
1.4.1主要技術參數
芯片的工作電壓為 4.5-5.5V,可顯示兩行,每行 16 個字符,字符尺寸為 2.95×4.35mm。2 接口信號說明
除電壓、背光引腳和 8 個 I/O 引腳外,主要控制引腳有數據/命令選擇 RS 引腳,當 I/O 引腳為數據時該引腳為高電平,當 I/O 引腳為命令時該引腳為低電平;讀/寫選擇引腳和使能引腳 E(當 SMCl602A 工作時該引腳為高電平)。當該引腳為高電平時,SMCl602A 操作有效)。
1.4.3 指令說明
(1) 初始化設置
a. 顯示模式設置。顯示模式設置。指令代碼:00111000b,用於設置 16×2 顯示、5×7 點陣。
b.顯示開/關和光標設置。二進制指令代碼:00000DCB中的D位用於控制顯示的開或關,C位用於控制顯示光標,B位控制光標是否閃爍。二進制指令代碼:000001NS N 位控制地址指針和光標在讀寫數據後加 1 或減 1,S 位控制字符的移動。
c.數據指針設置。指令代碼:80H + 地址碼(0-27H,40H-67H)用於設置數據指針。
(2) 其他設置。例如,指令代碼 01H:顯示清屏,數據指針清零。
1.4.4 LCDl602 的初始化步驟
(1)延時 15ms,寫入指令 38H(不檢測忙信號);
(2)延時 5ms,寫入指令 38H(不檢測忙信號),上述過程執行兩次,後面的過程每次都需要檢測忙信號後才能寫入指令和讀/寫數據;
(3)延時 5ms,寫入指令 38H(不檢測忙信號)。
(3)寫入指令 38H:顯示模式設置;
(4)寫入指令 08H:關閉顯示屏;
(5)寫入指令 0lH:清屏,數據指針清零;
(6)寫入指令 06H:字符不動,光標和指針加 1;
(7)寫入指令 0FH:顯示屏打開,光標閃爍。
1.5恒溫維護控制模塊
選用 6V 固態繼電器作為開關器件,通過控制其通斷時序從而控制加熱裝置的工作時長,以實現樣品的恒溫維護功能。
2 系統硬件電路設計
系統主電路原理圖如圖 2 所示。系統使用 USB 端口提供 5V 電源電路;使用 RS232 串口通過 P3.0 和 P3.1 燒錄程序電路;使用繼電器控制恒溫器進行恒溫的電路原理圖未畫出。
3 系統軟件設計
系統總體流程圖如圖 3 所示。系統程序主要由主程序和 LCDl602 初始化子程序及讀寫定時子程序、DSl8820 復位及讀寫定時子程序、鍵盤掃描子程序、溫度數據處理子程序等組成。
4 程序編輯與調試
編程語言可以是匯編語言或 C51 語言。本文采用匯編語言,利用 Keil C 軟件新建壹個工程,然後新建壹個文件輸入源程序並保存為 asm 格式,並將源文件添加到新建的工程中,然後編譯並鏈接生成十六進制文件(.HEX),最後利用刻錄軟件 stc-isp-v3.9l 通過 RS232 串口將十六進制文件刻錄到單片機的閃存中運行程序。最後,使用刻錄軟件 stc-isp-v3.9l 通過 RS232 串口將十六進制文件刻錄到單片機的 Flash 中以運行程序。
5 結語
本文設計的多功能溫度控制器體積小、功耗低、可靠性高,實驗表明控溫精度達到設計目標的 0.1℃。