秦 偉
(陜西理工學院 物理與電信工程學院,陜西 漢中 723003)
溫度與濕度與人們的生活息息相關(guān),與人的生理與心理狀態(tài)與環(huán)境溫度密切相關(guān)。傳統(tǒng)的溫濕度計,溫度是用水銀柱來顯示的,濕度是用機械式指針顯示、價格便宜,但是它精確度不高,不易讀數(shù)。采用單片機對溫濕度進行檢測,用LCD來顯示溫濕度的數(shù)值,不僅具有測量方便、簡單和靈活等優(yōu)點,而且可以大幅度提高溫濕度檢測的精度,示數(shù)也更加直觀易讀。
數(shù)字溫濕度傳感器AM2301是一款含有已校準數(shù)字信號輸出的溫濕度復合型傳感器,包括一個NTC測溫元件和一個電容式感濕元件,并與一個高性能8位單片機相連接,因此該產(chǎn)品具有超快響應、抗干擾能力強、性價比極高等優(yōu)點。
AM2301數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:40bit數(shù)據(jù)=16bit濕度數(shù)據(jù)+16bit溫度數(shù)據(jù)+8bit校驗和。濕度高8位+濕度低8位+溫度高8位+溫度低8位=校驗和(末8位)。例如:接收40bit數(shù)據(jù)如下:
byte4 byte3 byte2 byte1 byte0
0000 0010 1000 1100 0000 0001 0101 1111 1110 1110
濕度數(shù)據(jù):0000 0010 1000 1100
溫度數(shù)據(jù):0000 0001 0101 1111
0000 0010+1000 1100+0000 0001+0101 1111=1110 1110
所以校驗和為1110 1110。
由以上數(shù)據(jù)就可得到濕度和溫度的值計算方法:
hum(濕度)=byte4.byte3=65.2(%RH)
temp(溫度)=byte2.byte1=35.1(℃)
Verify(校驗)=byte4+byte3+byte2+byte1
當溫度低于0℃時溫度數(shù)據(jù)的最高位置1。
例如:-10.1℃表示為1000 0000 0110 0101
系統(tǒng)硬件電路主要由AT89C51單片機、AM2301溫濕度傳感器、FM1602C液晶顯示三部分電路構(gòu)成。AM2301用于檢測環(huán)境溫濕度,單片機AT89C51讀取AM2301的溫濕度數(shù)據(jù)并對數(shù)據(jù)進行校驗、數(shù)據(jù)處理,處理后AT89C51控制液晶FM1602C將處理的數(shù)據(jù)顯示出來。系統(tǒng)電路如圖1所示。
圖1 系統(tǒng)電路圖
(1)AM2301溫濕度傳感器電路。AM2301為4針單排引腳封裝,4個引腳分別為:VDD、DATA、GND、NC。VDD供電范圍為直流3.3~5.5V,電源引腳VDD和GND之間可增加一個100nF電容,用于去耦濾波。設計中用5V直流供電;DATA用于和處理器之間的通訊和同步,采用單總線格式,設計中將該引腳接5KΩ上拉電阻并連接到AT89C51的P2.0;GND接地;NC空腳,設計中該引腳懸空。
(2)液晶顯示電路。FM1602C為16針單排引腳封裝,16個引腳分別為:VSS、VDD、VEE、RS、RW、E、DB0-DB7、BLA、BLK。VSS電源地;VDD電源,設計中接+5V電源;VEE液晶驅(qū)動電壓,設計中VEE經(jīng)10KΩ可調(diào)電阻接+5V;RS寄存器選擇,設計中RS接單片機P2.3,當P2.3輸出高電平時表示數(shù)據(jù)輸入,當P2.3輸出低電平時表示指令代碼輸入;RW讀寫信號,RW接單片機P2.2,當P2.2為高電平時表示讀數(shù)據(jù),當P2.2為低電平時表示寫數(shù)據(jù);E使能信號,E接單片機P2.2;DB0-DB7數(shù)據(jù)線,DB0-DB7分別對應接至單片機P0.0-P0.7,并且P0.0-P0.7作為準雙向IO口,在使用時外接10K上拉排阻;BLA背光源負,實際測試中接地;BLK背光源正,實際測試中接+5V電源。
(3)電源電路。設計采用市電或備用電源供電,市電供電使用通用LM7805穩(wěn)壓芯片,即將市電轉(zhuǎn)換為9V交流經(jīng)整流濾波后用LM7805穩(wěn)壓獲得5V直流。備用電源用三節(jié)1.5V 7號電池供電。
(1)系統(tǒng)主程序設計。系統(tǒng)上電,AT89C51首先完成對串口及LCD1602的初始化工作,然后開始讀取am2301的溫濕度數(shù)據(jù),對讀取的數(shù)據(jù)進行校驗,如果錯誤則重新讀取,如果數(shù)據(jù)正確則將讀取的溫濕度數(shù)據(jù)存入內(nèi)部數(shù)據(jù)寄存器,然后對該數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換將結(jié)果存入數(shù)據(jù)顯示寄存區(qū),將待顯示數(shù)據(jù)送LCD1602顯示,并將該數(shù)據(jù)發(fā)送至串口,然后重新進行下一輪溫濕度數(shù)據(jù)讀取與顯示。系統(tǒng)主程序如圖2所示。
圖2 系統(tǒng)主程序流程圖
(2)AM2301溫濕度讀取程序設計。通過單總線訪問AM2301。首先主機發(fā)開始信號,然后主機等待接收AM2301響應信號,當AM2301發(fā)出響應信號后,主機則連續(xù)接收AM2301送出的40位數(shù)據(jù),對40位數(shù)據(jù)校驗正確后則存入內(nèi)部數(shù)據(jù)寄存區(qū)。
基于AM2301的家用溫濕度計,經(jīng)實驗驗證,溫度絕對偏差最大為0.5℃,濕度絕對偏差最大為3%RH,設計運行穩(wěn)定。LCD顯示數(shù)字讀數(shù)方面,便于掌握環(huán)境溫濕度數(shù)據(jù),適合醫(yī)院、倉庫、家庭環(huán)境等測量溫濕度。