我們生活中經常遇到需要測量兩種溫度的情況,比如測居室的內外溫度、小車的內外溫度等。筆者製作了一款同時測定室內、室外溫度的數字溫度計(見圖9.1),它利用1602顯示屏同時顯示室內外溫度,測溫快速、直觀。
硬體電路
本製作的硬體電路如圖9.2所示。它由AT89S52單片機、2隻溫度傳感器DS18B20以及LCD1602顯示屏構成。工作時,IC1和IC2中的傳感器把測得的溫度轉換成數位訊號傳到單片機IC3,單片機通過數值轉換後,再調用相應的顯示程序驅動顯示器件IC4,把溫度值顯示出來。IC1、IC2中的兩個傳感器將室內外溫度轉換成十六進位,佔兩個字節的數位訊號。IC1、IC2的I/O口分別接單片機的P3.6、P3.7口,避免單口測定DS18B20序列號的麻煩。

電路採用6V的乾電池供電,整機用電約15mA。電源電壓經二極體VD降壓後為電路提供5V的電壓。為了節約用電,這裡接有開關S,可以讓電池間歇工作,延長電池壽命。C1和R1組成復位電路,每次使用前讓單片機復位。C2、C3、B為振蕩電路,晶體振蕩器為12MHz。
單片機IC3的P3.2、P3.3、P3.4接口分別接IC4的RS、RW、E接口,由於這些接口用於定義寄存器、信號讀寫以及是否執行指令等,故不能接錯。單片機的數據接口P2.0~P2.7與IC4的D0~D7連接,主要用於傳送顯示的數據和各種指令。


軟體設計
本電路用單片機的兩個I/O口控制2個DS1820傳感器。單片機對液晶屏1602進行初始化,並進行讀寫操作,最後將數據轉換為十進位數送到顯示屏顯示出內外溫度值。軟體的主流程圖如圖9.3所示。為了穩定地顯示溫度值,顯示字母(OUT、IN、℃)和溫度(如+025.5℃)的程序獨立執行,互相不幹擾。因此,它調用的子程序相對較長。由於要顯示兩種溫度,如DS18B20的初始化、精度設置、顯示地址、讀寫等程序都要執行2次,子程序相對較多。只有16進位數轉化為十進位數隻執行一次。
由於1602字符庫無「℃」的符號,作者對字符庫中所有字符進行查找(包括英文字母大小寫、常用符號、日文假名),發現其中日文假名中的一個符號很接近「℃」中的「°」,於是將那個符號加上「C」即成符號「℃」,這樣就避免單獨編程的麻煩。
該溫度計設計精度為±0.5℃,解析度在0.5℃,可以顯示-55~+125℃的溫度值。
硬體製作
圖9.4為筆者製作好的電路板,採用萬能板安裝元器件。1602顯示屏直接裝在萬能板上,這樣可以減小軟線的移動,使電路工作更可靠。元件之間的連接儘量用背面的銅箔連線,點與點之間可以用焊錫絲連接。焊接時烙鐵的溫度不要太高,否則不易連接成功,背面焊錫連線如圖9.5所示。元件中,內溫傳感器IC1裝在電路板的外側,外溫傳感器IC2用1m長的不同顏色三絞線,一端焊在傳感器DS18B20上,另一端焊在電路板上,並用熱縮管套住DS1820防水,如圖9.6所示。
安裝單片機IC3需要先將一個40腳的雙排底座焊在電路板上,這樣便於燒寫單片機時的插拔。開關S採用小型按鈕開關,上面套上按鈕套,這樣開關更方便。
元件和連線焊接完成後,需要檢查一遍,看焊接是否有錯誤,若無錯誤,通電即可工作,無需調試,通電後LCD1602顯示的效果如圖9.7所示。
如有條件,再找一個塑料外殼將電路板裝入固定,塑料殼需要開一個開關孔,並且塑料殼靠傳感器IC1的一側再開一些小孔,便於DS18B20對環境溫度的檢測。裝入塑料殼的雙顯溫度計如題圖所示。實際使用時,把室外傳感器IC2裝在窗外,不靠牆,並且陽光不會直射到的地方即可。



