陶 佳
(廣東省技師學(xué)院,廣東惠州,516100)
基于VB 和單片機(jī)的溫濕度及火焰監(jiān)控報警系統(tǒng)設(shè)計
陶 佳
(廣東省技師學(xué)院,廣東惠州,516100)
本文介紹了運(yùn)用VB6.0的MSComm控件完成計算機(jī)與單片機(jī)的串行通信,采用數(shù)字溫濕度傳感器和火焰?zhèn)鞲衅魍瓿蓪?shù)據(jù)的采集。單片機(jī)將處理后的數(shù)據(jù)上傳到PC機(jī),利用VB控件顯示,并根據(jù)監(jiān)測到的數(shù)據(jù)進(jìn)行判斷發(fā)送控制信號給單片機(jī),進(jìn)而驅(qū)動執(zhí)行機(jī)構(gòu)實(shí)現(xiàn)相應(yīng)的控制。
VB6.0;傳感器;單片機(jī);串行通信
自動化、智能化是未來的趨勢,特別是在企業(yè)、學(xué)校機(jī)房等一些特殊環(huán)境為了更好的維護(hù)一些儀器設(shè)備,使其能夠正常工作并且避免火災(zāi)的產(chǎn)生,需要對機(jī)房的溫濕度及是否有火焰進(jìn)行監(jiān)控,并且不用手動控制空調(diào)、火災(zāi)報警器,通過計算機(jī)實(shí)現(xiàn)對空調(diào)及報警器的控制,大大提高了工作效率。單片機(jī)利用溫濕度傳感器和火焰?zhèn)鞲衅鞑杉瘮?shù)據(jù),采集完的數(shù)據(jù)傳送給 PC 機(jī)作出處理,為了使數(shù)據(jù)快速有效的傳輸, PC 機(jī)與單片機(jī)必須有可靠的通信方法,本文先介紹了PC機(jī)和單片機(jī)通信接口的設(shè)計,然后基于 VB 軟件平臺的PC 機(jī)一方面接收單片機(jī)從傳感器采集的數(shù)據(jù),另一方面發(fā)送信號給單片機(jī)對執(zhí)行機(jī)構(gòu)進(jìn)行控制實(shí)現(xiàn)溫濕度的調(diào)節(jié)及火焰報警。
本系統(tǒng)PC機(jī)與單片機(jī)之間串行通信使用RS232接口進(jìn)行,PC機(jī)可以實(shí)時的顯示采集到的溫濕度和光線(火焰)數(shù)據(jù),并且把得到的數(shù)據(jù)每隔一分鐘進(jìn)行保存,根據(jù)檢測到的數(shù)據(jù)對空調(diào)的溫度進(jìn)行控制,可以選擇所期望的溫度,發(fā)指令給單片機(jī)控制溫濕度值;PC機(jī)還可以顯示是否有火焰產(chǎn)生,一旦火焰產(chǎn)生,發(fā)指令給單片機(jī)控制報警器報警。單片機(jī)負(fù)責(zé)對溫濕度和火焰信號采集,以及控制調(diào)溫設(shè)備和報警器的運(yùn)行,傳感器分別采用 SHT71溫度傳感器和telesky公司的火焰?zhèn)鞲衅?。單片機(jī)將采集到的數(shù)據(jù)按照串行通信協(xié)議發(fā)送給PC機(jī),由PC機(jī)進(jìn)行實(shí)時顯示,根據(jù)顯示的情況設(shè)定期望的溫度和濕度值,發(fā)送控制信號給單片機(jī)控制執(zhí)行機(jī)構(gòu)?;?VB 的人機(jī)交互平臺,達(dá)到數(shù)據(jù)采集處理進(jìn)而控制執(zhí)行機(jī)構(gòu)的目的。由于計算機(jī)串行接口與 ATemga16 單片機(jī)的驅(qū)動電平不一致,故采用MAX232作為兩者的接口電平轉(zhuǎn)換芯片。
下位機(jī)系統(tǒng)由單片機(jī)、傳感器和控制執(zhí)行機(jī)構(gòu)三個部分組成,主要負(fù)責(zé)數(shù)據(jù)的采集和執(zhí)行命令。單片機(jī)采用的是ATmega16,ATmega16 在片內(nèi)集成了 16KB 的 Flash 程序存儲器、1KB 的 RAM 數(shù)據(jù)存儲器和 512字節(jié)的 EEPROM數(shù)據(jù)存儲器,32個可編程的 I/O總線,2個 8 位、1個 16位的定時/計數(shù)器和1個串行收發(fā)器 USART。
溫濕度傳感器采用SHT71,它具有數(shù)字輸出、低功耗、 高精度、快速響應(yīng)、抗干擾能力強(qiáng)、性價比高等優(yōu)點(diǎn),相對濕度的工作范圍在0%~100%,溫度的工作范圍—40°C~123.8°C 。
火焰?zhèn)鞲衅鞑捎蒙钲谔焓縿P(telesky)電子公司的紅外線火焰?zhèn)鞲衅?,火焰探頭探測角度為前方60度左右,可根據(jù)實(shí)際需要使用多個該型號傳感器,實(shí)現(xiàn)全角度覆蓋,輸出接口可以與單片機(jī)I/O口直接相連,具有數(shù)字和模擬兩種信號輸出形式,靈敏度可調(diào)。
系統(tǒng)上位機(jī)和下位機(jī)采用 RS-232協(xié)議進(jìn)行通信,因?yàn)閱纹瑱C(jī)輸入和輸出電平為 TTL電平,PC機(jī)上配備的異步通信口符合RS-232 標(biāo)準(zhǔn),RS-232C 的邏輯“0”電平規(guī)定為+5~+15V ,邏輯“1”電平規(guī)定為?15~?5V ,因此不能直接與 TTL/CMOS 電路連接,要實(shí)現(xiàn)單片機(jī) ATmega16與 RS-232 進(jìn)行通信,必須經(jīng)過電平轉(zhuǎn)換,MAX232經(jīng)常用于 RS-232C 電平轉(zhuǎn)換。
軟件系統(tǒng)主要包括 PC 機(jī)與單片機(jī)的通信程序的設(shè)計。PC機(jī)(上位機(jī))采用串行通信控件 MSComm與單片機(jī)進(jìn)行通信,利用MSComm 控件的 Input 和 Output 屬性完成串口數(shù)據(jù)的接收和發(fā)送功能。單片機(jī)(下位機(jī))接收 PC 機(jī)發(fā)送的命令并判斷是否為標(biāo)志位,如果相符的話就向 PC 機(jī)發(fā)送采集的數(shù)據(jù),并且根據(jù)PC機(jī)發(fā)出的控制命令對執(zhí)行機(jī)構(gòu)進(jìn)行相應(yīng)的動作。
4.1 PC機(jī)通信設(shè)計
PC機(jī)通信程序設(shè)計包括通信初始化,接收單片機(jī)上傳的溫濕度和光線(火焰)數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行顯示以及存儲,向單片機(jī)發(fā)送控制命令,從而使執(zhí)行機(jī)構(gòu)在單片機(jī)控制下完成相應(yīng)的動作。
4.1.1 利用MSComm 控件通信初始化
單片機(jī)與PC機(jī)進(jìn)行異步通信,采用RS-232標(biāo)準(zhǔn)接口,為了實(shí)現(xiàn)信息的同步,要求兩者之間有一定的通信協(xié)議,上、下位機(jī)之間以波特率為 9600 b/s 的傳輸速率通信,無校驗(yàn)位,8位數(shù)據(jù)位和1位停止位。傳送的數(shù)據(jù)類型為二進(jìn)制格式,單片機(jī)一次性傳輸六個字節(jié),高字節(jié)在前,低字節(jié)在后,包括起始與結(jié)束字符。設(shè)置VB中MSComm控件參數(shù),以下部分程序代碼:
MSComm1.CommPort=1
MSComm1.Settings=”9600,n,8,1”
MSComm1.InputMode=1
MSComm1.InputLen=0
MSComm1.SThreshold=1
MSComm1.InBufferCount=0
MSComm1.OutBufferCount=0
MSComm1.RThreshold=6
4.1.2 PC機(jī)用 MSComm 控件接收數(shù)據(jù)
利用 MSComm 控件的 Input 屬性中以接收數(shù)據(jù),Input 屬性從接收緩沖區(qū)中返回一串?dāng)?shù)據(jù),它在設(shè)計階段是無效的, 在運(yùn)行階段也只能讀。單片機(jī)發(fā)送采集的數(shù)據(jù),每收到6個字符引起Oncomm事件,將接收的數(shù)據(jù)經(jīng)過相應(yīng)的處理后實(shí)時顯示在文本框中,以下是部分接收數(shù)據(jù)的程序:
DimexchAsString //用來從接收緩沖區(qū)讀取數(shù)據(jù)
DimresultAsLong
DimtempAsDouble //用來存儲溫度、溫度
DimhumiAsDouble
Dimrd()AsByte //接收數(shù)據(jù)數(shù)組
Dimsd()AsByte //發(fā)送數(shù)據(jù)數(shù)組
ConstSOH=&H1 //數(shù)據(jù)初始標(biāo)志位
ConstEOT=&H4 //接收數(shù)據(jù)結(jié)束標(biāo)志位
4.2 單片機(jī)程序設(shè)計
單片機(jī)程序設(shè)計主要包括串口初始化,接收 PC機(jī)發(fā)送命令是否為標(biāo)志位,將 SHT71傳感器和火焰?zhèn)鞲衅鞑杉降臄?shù)據(jù)發(fā)送給PC 機(jī),接受PC機(jī)發(fā)控制指令給相關(guān)裝置,使其完成動作。
4.2.1 單片機(jī)串口初始化
ATmega16單片機(jī)提供全雙工串行通信接口 RXD、TXD,片內(nèi)集成一個全雙工的通用同步/異步串行收發(fā)器 USART,它具有相互獨(dú)立的接收數(shù)據(jù)寄存器 RXB 和發(fā)送數(shù)據(jù)寄存器 TXB,能夠支持同步和異步的傳輸,有獨(dú)立的高精度波特率發(fā)生器,不占用定時/計數(shù)器,波特率寄存器 UBRRL和 UBRRH用于設(shè)置波特率。
部分初始化程序如下:
UCSRA=0x00;
UCSRB=0xD8;//USART模式:異步,USART接收器與發(fā)送器使能。
UCSRC=0x86;//通信參數(shù);
UBRRH=0x00;//USART波特率為9600
UBRRL=0x19;
4.2.2 單片機(jī)發(fā)送和接收數(shù)據(jù)
通過設(shè)置UCSRB 寄存器中的發(fā)送允許位TXEN,使USART發(fā)送數(shù)據(jù);設(shè)置接收允許位 RXEN,使USART發(fā)送數(shù)據(jù)。當(dāng)TXEN 和RXEN 使能時,TXD引腳和 RXD 引腳的通用數(shù)字 I/O功能被代替,分別作為發(fā)送器的串行輸出引腳和接收器的串行輸入引腳使用。發(fā)送緩沖器中需要發(fā)送的數(shù)據(jù),由CPU寫入 UDR 發(fā)送數(shù)據(jù)寄存器來實(shí)現(xiàn),一旦移位寄存器準(zhǔn)備發(fā)送下一幀時,緩沖器中的數(shù)據(jù)將被移到移位寄存器中。只要新的數(shù)據(jù)被加載到移位寄存器中,則數(shù)據(jù)就會按指定的幀格式進(jìn)行發(fā)送。狀態(tài)標(biāo)志位 RXC為1時,代表在接收緩沖器中收到的一個數(shù)據(jù)未被讀取。當(dāng) RXC 為0時,代表數(shù)據(jù)接收器沒有數(shù)據(jù)。
本文在 windows下利用 VB6.0和單片機(jī) Atmega16的進(jìn)行串行通信,單片機(jī)負(fù)責(zé)處理溫濕度傳感器和火焰?zhèn)鞲衅鞑杉臄?shù)據(jù),PC 機(jī)負(fù)責(zé)接收命令和發(fā)送指令給單片機(jī),并將采集得到的數(shù)據(jù)在VB 界面上顯示出來,發(fā)出命令執(zhí)行控制執(zhí)行機(jī)構(gòu)。PC機(jī)中利用MSComm 接受和發(fā)送數(shù)據(jù),屏蔽了通信過程的低層操作。通過設(shè)置控件的相應(yīng)屬性,完成數(shù)據(jù)的接收和發(fā)送,其編程簡單,容易實(shí)現(xiàn),大大節(jié)省了開發(fā)時間。
[1]周靄如,官士鴻.VisualBasic 程序設(shè)計講義.廣州:華南理工大學(xué)教材供應(yīng)中心.1999年
[2]范逸之,陳立元.VisualBasic 與RS-232 串行通信控制.北京:清華大學(xué)出版社.2002年
[3]馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐.北京:北京航空航天大學(xué)出版社.2007年.
陶佳,男,廣東省技師學(xué)院,講師,研究方向:智能控制工程,無線通信技術(shù)
Design of Temperature, Humidity and Flame Monitoring and Alarming System Based on VB and Single - chip Microcomputer
Tao Jia
(Guangdong Technician College, Huizhou Guangdong,516100)
This paper describes the use of VB6.0 MSComm control complete computer and microcontroller serial communication, the use of digital temperature and humidity sensors and flame sensors to complete the data collection. MCU will be processed data uploaded to the PC, the use of VB control display, and in accordance with the monitoring data to determine the sent control signal to the microcontroller, and then drive the implementing agencies to achieve the appropriate control.
VB6.0; sensor; MCU; serial communication