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