基于單片機(jī)與PC機(jī)的溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
摘要:設(shè)計(jì)了基于單片機(jī)和PC機(jī)的溫度監(jiān)測(cè)系統(tǒng),溫度傳感器采用DS18B20。下位機(jī)采用AT89S52單片機(jī),可以顯示溫度和超限報(bào)警。PC機(jī)作為上住機(jī)設(shè)定上下限報(bào)警溫度,接收單片機(jī)的溫度數(shù)據(jù),處理后實(shí)時(shí)顯示溫度和繪制溫度曲線,還實(shí)現(xiàn)了超限報(bào)警和保存數(shù)據(jù)功能。上位機(jī)利用Matlab強(qiáng)大的數(shù)值計(jì)算、圖形顯示和串口操作功能,具有友好人機(jī)交互界面,實(shí)現(xiàn)了溫度動(dòng)態(tài)監(jiān)測(cè)。
關(guān)鍵詞:單片機(jī);PC機(jī);溫度監(jiān)測(cè);Matlab;串口
溫度是一個(gè)重要的物理量,在工農(nóng)業(yè)生產(chǎn)和日常生活中,經(jīng)常需要對(duì)環(huán)境溫度進(jìn)行監(jiān)測(cè)。本文設(shè)計(jì)了一個(gè)溫度監(jiān)測(cè)系統(tǒng),溫度傳感器采用DS18B20,下位機(jī)采用AT89S52單片機(jī),實(shí)現(xiàn)溫度測(cè)量、顯示、超限報(bào)警等功能,上位機(jī)采用PC機(jī),利用Matlab設(shè)計(jì)了友好人機(jī)交互界面,實(shí)現(xiàn)溫度的采集、顯示、繪圖、報(bào)警、保存數(shù)據(jù)等功能。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)采用AT89S52單片機(jī)作為下位機(jī),PC機(jī)作為上位機(jī),二者通過(guò)串口發(fā)送或接收數(shù)據(jù),實(shí)現(xiàn)環(huán)境溫度的測(cè)量、顯示、超限報(bào)警、測(cè)溫?cái)?shù)據(jù)保存等功能。系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。
單片機(jī)最小系統(tǒng)包括單片機(jī)工作所必需的復(fù)位電路、時(shí)鐘電路和電源電路。溫度傳感器采用DS18B20芯片,測(cè)量溫度范圍為-55~+125 ℃,該芯片不需要外接電源,可編程的分辨率為9~12位,測(cè)溫分辨率最高可達(dá)0.062 5℃,數(shù)據(jù)傳送只需要一條通信線,接單片機(jī)的P2.0口。溫度顯示部分使用4個(gè)八段LED共陽(yáng)極數(shù)碼管,采用動(dòng)態(tài)驅(qū)動(dòng)方式,數(shù)碼管的a,b,c,d,e,f,g,DP八段由單片機(jī)P0.0—P0.7口控制,單片機(jī)的P1.0—P1.3口控制4個(gè)數(shù)碼管輪流動(dòng)態(tài)顯示。超限溫度報(bào)警采用蜂鳴器,由單片機(jī)的P2.1口控制發(fā)聲。
PC機(jī)的串行口采用的是標(biāo)準(zhǔn)的RS 232接口,而單片機(jī)的串行口電平是TTL電平,與RS 232的電氣特性不匹配,所以系統(tǒng)采用常用芯片MAX 232來(lái)完成電平的轉(zhuǎn)換,使單片機(jī)的串行口能與RS 232接口通信。上位機(jī)動(dòng)態(tài)溫度監(jiān)測(cè)系統(tǒng)利用Matlab軟件設(shè)計(jì)友好人機(jī)交互界面,實(shí)現(xiàn)溫度數(shù)據(jù)的設(shè)置、采集、計(jì)算、顯示與保存等功能。
2 下位機(jī)程序設(shè)計(jì)
單片機(jī)作為下位機(jī),其主要任務(wù)是:
1)通過(guò)DS18B20實(shí)現(xiàn)溫度數(shù)據(jù)的采集和處理,并在LED數(shù)碼管上實(shí)時(shí)顯示當(dāng)前溫度,保留小數(shù)點(diǎn)后1位;
2)通過(guò)串口接收上位機(jī)設(shè)定的上下限報(bào)警溫度,并在LED數(shù)碼臂上顯示;
3)通過(guò)串口接收要求發(fā)送溫度數(shù)據(jù)的命令,向上位機(jī)發(fā)送溫度數(shù)據(jù);
4)判斷當(dāng)前溫度,如果超限啟動(dòng)蜂鳴器報(bào)警,設(shè)定不同頻率的方波驅(qū)動(dòng)蜂鳴器發(fā)出不同聲音,用來(lái)區(qū)分超上限還是超下限。
單片機(jī)采用Keil C51編寫(xiě)程序,DS18B20分辨率設(shè)為12位,其主程序流程圖如圖2所示。主程序主要完成系統(tǒng)的初始化,主要包括DS18B20和串口的初始化;4個(gè)LED數(shù)碼管顯示“0000”,等待上位機(jī)發(fā)送上限溫度數(shù)據(jù);接收數(shù)據(jù)后顯示,等待上位機(jī)發(fā)送下限溫度數(shù)據(jù);接收數(shù)據(jù),顯示下限溫度并延遲約2秒后開(kāi)始測(cè)濕。讀DS18B20溫度值,將讀取的低8位字節(jié)和高8位字節(jié)組成16位無(wú)符號(hào)整型溫度數(shù)據(jù)(其中低4位為沮度的小數(shù)部分,中間8位為溫度的整數(shù)部分),處理沮度數(shù)據(jù)并在數(shù)碼臂上顯示溫度值;判斷溫度,超限報(bào)警;接收到上位機(jī)發(fā)送的命令字“255”就向上位機(jī)發(fā)送由DS18B20讀出的16位溫度數(shù)據(jù),先發(fā)送低8位字節(jié),后發(fā)送高8位字節(jié);返回讀DS18B20溫度值。
評(píng)論