于蘭浩 董漢政 王 賀 吳國良
(山東科技大學(xué)機(jī)械電子工程學(xué)院 山東 青島 266590)
基于vb6.0與51單片機(jī)的溫度采集與監(jiān)控系統(tǒng)設(shè)計(jì)
于蘭浩 董漢政 王 賀 吳國良
(山東科技大學(xué)機(jī)械電子工程學(xué)院 山東 青島 266590)
引言
在現(xiàn)代信號采集與監(jiān)控系統(tǒng)中,單片機(jī)因具有信號采集方便、操作靈活、成本低等優(yōu)點(diǎn),廣泛運(yùn)用于溫度等信號的采集中,而其缺點(diǎn)為單片機(jī)的人機(jī)交互界面較弱,我們并不能直觀地看到采集到的諸如溫度液位等信號,尤其是當(dāng)需要采集多路信號并顯示時(shí),用數(shù)碼管來顯示比較繁瑣。而pc機(jī)的人機(jī)交互界面已發(fā)展的很強(qiáng)大了,vb6.0運(yùn)行于Windows操作系統(tǒng)下,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,提供可視化的編程工具,向程序設(shè)計(jì)人員提供了豐富的圖形對象(窗體、控件、菜單)進(jìn)行應(yīng)用程序的界面設(shè)計(jì),這就使得其人機(jī)交互功能非常強(qiáng)大,彌補(bǔ)了單片機(jī)顯示界面不足的缺點(diǎn)。因此我們用單片機(jī)采集數(shù)據(jù),用pc機(jī)顯示數(shù)據(jù),實(shí)現(xiàn)溫度采集與監(jiān)控系統(tǒng)設(shè)計(jì)。本文主要進(jìn)行的工作有:用DS18B20數(shù)字式溫度傳感器采集蔬菜大棚溫度,將STC89C52單片機(jī)采集到的溫度送到vb6.0中顯示,單片機(jī)程序設(shè)計(jì),用vb6.0設(shè)計(jì)pc機(jī)溫度顯示界面編程。
(一)傳感器選型及溫度采集電路
根據(jù)傳感器工作的環(huán)境以及測量溫度范圍,我們選擇美國DALLAS半導(dǎo)體公司的數(shù)字式溫度傳感器DS18B20,所謂數(shù)字式傳感器意思是無需經(jīng)過A/D轉(zhuǎn)化而直接將采集到的溫度轉(zhuǎn)換為數(shù)字量,輸送到單片機(jī)的I/O端口,以數(shù)字碼的方式串行輸出,從而簡化了單片機(jī)與傳感器的接口。DS18B20的性能參數(shù)為:電壓范圍在3到5.5V,測溫范圍為-55°到+125°。傳感器與單片機(jī)連接:傳感器GND端接地,VCC端接5V電源,并且串4.7kΩ電阻,DQ端與VCC并起來接到P2.6口即可。接口電路如圖1:
(二)串口通信電路
pc機(jī)上的串口是RS232口,其電平特性:邏輯1為-3V到-15V,邏輯0為3V到15V。而單片機(jī)的串口為TTL電平,邏輯1位5V,邏輯0為0V,因兩者電平不同故不能直接通信,需要用MAX232芯片進(jìn)行電平轉(zhuǎn)換,轉(zhuǎn)換電路圖如圖2:
圖1 圖2
連接好電路后我們就可編程了,論文的主要工作在于單片機(jī)編程與vb6.0上位機(jī)界面編程,c語言程序如下。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit ds=P2^6;//溫度傳感器信號線
sbit motor=P2^3;//溫度過低時(shí)開啟電機(jī)加熱
uint temp;//定義整形溫度變量
float f_temp;//定義浮點(diǎn)型溫度變量
uint lowtepm=250;//溫度下限值,乘以10后結(jié)果
void delay(uint z)//延時(shí)函數(shù)
{uintx,y;for(x=z;x>0;x——)for(y=110;y>0;y——);}
viod dsrest(void)//DS18B20復(fù)位,初始化函數(shù)
{uint i;ds=0;i=103;
while(i>0)i——;
ds=1;i=4;
while(i>0)i——;}
void tempchange(void)//DS18B20開始獲取溫度并轉(zhuǎn)換
{derest();
delay(1);tempwritebyte(0xcc);tempwrite(0xbe);
a=tempread();b=tempread();temp<<=8;temp=temp|a;//讀低8位,讀高8位,
f_temp=temp*0.0625;temp=f_temp*10+0.5;//分辨率0.0625
return temp;}
void deal(uint t)//溫度低于25°啟動(dòng)電機(jī)
{if(t void init_com()//串口初始化 {TMOD=0X20;PCON=0X00;SCON=0X50;TH1=0XFD;TL1=0XFD;TR1=1;} void comm(char*parr)//串口發(fā)送函數(shù) {do{sbuf=*parr++;while(!TI);TI=0;}while(*parr)}} void main()//主函數(shù) {uchar buff[4],i;init_com(); while(1){tempchange();deal(temp);sprintf(buff,“%f”,f_temp);comm(buff;}}//調(diào)用分塊函數(shù) vb左側(cè)工具欄常用控件有:文本框,標(biāo)簽,按鈕,定時(shí)器,列表框等,將需要的控件雙擊放到窗體中,運(yùn)行界面如圖3所示,vb程序設(shè)計(jì)及注解如圖4所示。 圖3 圖4 該設(shè)計(jì)已用于蔬菜大棚溫度采集與檢測現(xiàn)場,效果顯著,提高了蔬菜產(chǎn)量。將接口電路改變以及改動(dòng)程序中參數(shù),可以應(yīng)用于其他信號的采集。 [1]郭天祥,《51單片機(jī)C語言教程》,北京,電子電工出版社,2009 [2]秦曾煌,姜三勇,《電工學(xué)》,北京,高等教育出版社,2005 于蘭浩(1993-),男,山東科技大學(xué)機(jī)械電子工程學(xué)院,在讀碩士研究生。三、vb上位機(jī)界面開發(fā)及編程
四、結(jié)束語