基于單片機的數(shù)字溫度計的設計及顯示
機測量和控制技術在經(jīng)濟迅速發(fā)展的今天,已被廣泛應用于人類生活中,如工業(yè)控制、自動檢測、智能儀器儀表、家用電器、等各個方面。而主控制器是每個控制系統(tǒng)不可或缺的部分,正因為單片機有體積小,重量輕,抗干擾能力強,環(huán)境要求不高,價格低廉,可靠性高,靈活性好,開發(fā)較為容易等優(yōu)點,所以它是很多設計人員的首選控制器。而在人們的日常生活或工業(yè)生產(chǎn)中,經(jīng)常要對溫度進行檢測及控制。在許多場合器材設備對溫度的要求非常高,而傳統(tǒng)的溫度計反應速度慢、讀數(shù)麻煩、測量精度不高、誤差大,所以需要設計一種高精度的溫度計。為了在很大程度上提高對溫度的控制水平,因此以單片機為核心的溫度采集與控制系統(tǒng)很有用研發(fā)和應用意義。本文研究了一個可以實時存儲和顯示當前的溫度數(shù)據(jù),并且可以切換顯示當前的時間而且可對其時間進行修改的溫度顯示系統(tǒng)。文章以STC89C52單片機,DS18B20溫度傳感器以及DS1302時鐘芯為硬件基礎,主要介紹了相關的硬件電路和相關應用程序。硬件電路主要包括STC89C52單片機最小系統(tǒng),測溫電路、實時時鐘電路、數(shù)碼管顯示電路以及通訊模塊電路等。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計算溫度子程序、數(shù)碼管顯示程序以及按鍵控制程序等。
一、溫度顯示系統(tǒng)總設計原理
系統(tǒng)設計總框架如圖1.
1.控制模塊:通過應用單片機,對系統(tǒng)進行初始化,主要完成對數(shù)碼管顯示、按鍵的處理等功能,起到總體控制和協(xié)調各模塊工作的作用。
2.盤輸入模塊:主要完成與時間相關的設置和溫度、時間、日期的切換。
3.碼管顯示模塊:主要對單片機送來的時間、日期、溫度信息進行顯示。
4 .度采集模塊:采用D S 1 8 B 2 0溫度傳感器,向單片機提供實時溫度信息。
5.子鐘模塊:采用時鐘芯片DS1302,該芯片可以進行時、分、秒的計數(shù),DS1302通過串行方式與單片機進行數(shù)據(jù)傳送,向單片機提供包括秒、分、時、日、月、年等在內(nèi)的實時時間信息。
二、各模塊實現(xiàn)
1.主控制模塊
在文章設計的溫度顯示系統(tǒng)設計中,控制核心是STC89C52單片機,該單片機51系列增強型8位單片機,它有32個I/O口,片內(nèi)含4KFLASH工藝的程序存儲器,便于用電的方式瞬間擦除和改寫,而且價格便宜,其外部晶振為12MHz,一個指令周期為1μS.使用該單片機完全可以完成設計任務,其最小系統(tǒng)主要包括:
位電路、震蕩電路以及存儲器選擇模(EA腳的高低電平選擇),電路如圖2.
2.鍵盤輸入模塊
鍵盤輸入模塊(見圖3)上“0”、“4”、“8”、“C”可以配置成獨立按鍵,通過跳帽J11切換,在獨立按鍵中,應該把跳帽接到左端。
功能介紹:本文中,P3.0-P3.3四個獨立按鍵分別時間調整按鍵、功能加減、日歷切換按鍵、溫度切換按鍵。當P3.0(set)按下系統(tǒng)進入時調整狀態(tài):分單元閃爍,再按下P3.1(up)時,對顯示的數(shù)碼管的時段進行加一功能,達到對時調整,再次按下P3.0(set)時進入分鐘調整狀態(tài),分單元閃爍,通過按鍵P3.1(up)加一調整分的顯示,秒不進行調整,時間調整結束后,再次按下P3.0(set)進入正常時鐘顯示;當按下P3.2(switchriqi)時,切換到日歷的顯示;當按下P3.3(setwendu)時,切換到溫度的顯示。
3.數(shù)碼管顯示模塊
顯示原理:因為所有位數(shù)碼管的段選線被并聯(lián)在一起,位選線控制哪一位數(shù)碼管有效的有效,所以就需要為每一位數(shù)碼管配一個鎖存器,進而簡化了硬件電路。點亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應的位選,利用發(fā)光管的余輝和人眼視覺殘留作用,使人感覺到各位數(shù)碼管似乎同時在顯示。由于動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的限流電阻。數(shù)碼顯示模塊電路見圖4.
4.溫度采集部分
文章采用一線制數(shù)字溫度傳感器DS18B20.
傳感器輸出信號進4.7K的上拉電阻直接接到單片機的P1.0引腳上。該器件將半導體溫敏器件、A/D轉換器、存儲器等做在一個很小的集成電路芯片上。在本設計中采用外部供電方式實現(xiàn)DS18B20傳感器與單片機的連接,其接口電路下如圖5所示。
工作原理:溫度以16bit帶符號位擴展的二進制補碼形式讀出,下表給出了溫度值和輸出數(shù)據(jù)的關系。程序中需將16進制溫度值轉化為十進制,再轉化為數(shù)碼管顯示需要的段碼表數(shù)據(jù)格式。
5.電子鐘模塊
采用時鐘芯片DS1302,該芯片可以進行時、分、秒的計數(shù),DS1302通過串行方式與單片機進行數(shù)據(jù)傳送,向單片機提供包括秒、分、時、日、月、年等在內(nèi)的實時時間信息。
DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄,因此廣泛應用于測量系統(tǒng)中。讀寫時序說明:
DS1302是SPI總線驅動方式。它不僅要向寄存器寫入控制字,還需要讀取相應寄存器的數(shù)據(jù)。要想與DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如圖6.
控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。
位6:如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1(A4~A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進行寫操作,為1表示進行讀操作。
重要位:
秒寄存器時鐘停止位CH=0,振蕩器工作允許;CH=1,振蕩器停止。
控制寄存器寫保護位WP=0,允許寫入;WP=1,禁止寫入外部引腳分配(如圖7所示)。
三、系統(tǒng)軟件設計
軟件設計總流程圖(如圖8所示)。
四、結果顯示
?。?)時間顯示如圖9.
?。?)按下“0”鍵時分設置,時分閃爍等待設置。
(3)按下“4”鍵時或分加一,按“0”確認。
?。?)按下“A”鍵顯示溫度,如圖10.
(5)按下“8”鍵顯示日期,如圖11.