基于labView的温度采集系统设计1.docx
- 文档编号:30250861
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:19
- 大小:184.89KB
基于labView的温度采集系统设计1.docx
《基于labView的温度采集系统设计1.docx》由会员分享,可在线阅读,更多相关《基于labView的温度采集系统设计1.docx(19页珍藏版)》请在冰豆网上搜索。
基于labView的温度采集系统设计1
基于LabVIEW的温度采集系统设计
摘要:
设计了基于LabVIEW的温度采集系统。
它利用DS18B20数字温度传感器和STC公司生产的STC89C52单片机采集被测环境温度,将测得的数据经串口传给计算机。
计算机利用LabVIEW的VISA读取串口数据并进行处理和显示,实现基于VISA的串口温度采集。
关键词:
温度传感器;单片机;LabVIEW;温度采集
1引言
虚拟仪器(VirtualInstrument)是基于计算机的软硬件测试平台,它可代替传统的测量仪器。
LabVIEW是由美国国家仪器公司(NationalInstrumentsCo.)推出的、主要面向计算机测控领域的虚拟仪器软件开发平台,是一种基于图形开发、调试和运行的集成化环境[1]。
利用LabVIEW设计的数据采集系统,可模拟采集各种信号,但是配备NI公司的数据采集板卡比较贵,因此,可以选择单片机小系统作为前端数据采集系统,进行采集数据,然后通过RS-232串口通讯将数据送给计算机,在LabVIEW开发平台下,对数据进行各种处理、分析并对信号进行存储、显示和打印,从而实现了一种在LabVIEW环境下的单片机数据采集系统。
2温度采集系统设计
本系统采用STC公司生产STC89C52单片机作为温度数据采集和传输的主控芯片,温度传感器采用单总线方式的集成数字温度传感器DS18B20。
采集得到的数据利用单片机经串口通信的方式传输至计算机的串口。
计算机上位机软件采用数据处理能力超强的LabVIEW软件编写,利用其所带的VISA驱动进行串口的数据采集和处理,实现了基于VISA的串口温度采集。
2.1温度采集系统的硬件设计
本系统以AT89C51为中央处理单元,利用DS18B20数字温度传感器对温度信号进行采集,采集到的信号被送到AT89C51中,将采集到的温度值在LCD上显示并通过串口发送到上位机,其原理图如1所示(见附录1)。
2.1.1中央处理单元——STC89C51
本设计选用的中央处理单元是STC89C52单片机,STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandEras-ableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容[2]。
其优点有三:
(1)低功耗、低价;
(2)高速、高可靠;
(3)抗静电、干扰能力强;
STC89C52标识分别解释如下:
STC—表示芯片为STC公司生产的的产品。
8—表示该芯片为8051内核芯片。
9—标示内部含FalshE2PROM存储器。
C—标示该器件为COMS产品。
5—固定不变。
2—表示该芯片内部程序存储空间大小,1为4KB。
2为8KB,3为12KB。
2.1.2DS18B20数字温度传感器
DSI8B20是DALLAS公司的最新单线数字温度传感器,它体积小、经济。
是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念[3]。
它的测量温度范围为-55~+125℃。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DSI8B20可以程序设定9~12位的分辨率,精度为±0.5℃。
可以选择更小的封装方式,更宽的电压适用范围。
分辨率设定及用户设定的报警温度存储在EPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,继“一线总线”的早期产品后,DSI8B20开辟了温度传感器技术的新概念。
DS18B20和DS18B22使电压特性及封装有更多的选择,让用户可以构建适合自己的经济的测温系统。
DS18B20内部结构主要由4部分组成:
64位光刻ROM,温度传感器、非挥发的温度报警触发器TH和TL,配置寄存器。
本次设计智能温度报警系统的温度采集就由DSI8B20完成。
将DSI8B20的GND脚接地,VDD脚接高电平,而单总线DQ脚接单片机的外部中断1脚,具体的采集电路如图2所示。
图2温度采集电路
2.1.3LCD1602显示模块
本设计使用的1602液晶是一种点阵液晶显示器,电压驱动为5V,带背光,每行显示16个字符,一共可以显示两行。
1602是字符型液晶,即只能显示ASCII码字符,如数字、大小写字母、各种符号等,不能显示汉字。
内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。
工作温度一般在-10到+50度,存储温度一般在-20到+70度。
2.2温度采集系统的软件设计
下位机软件采用C语言编写,包括DS18B20的读写和串口通信[4]两个主要部分。
上位机软件采用当前测试测量应用最广泛的LabVIEW编写[5]。
LabVIEW
(LaboratoryVirtualInstrumentEngineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控
制软件。
2.2.1下位机软件软件设计
程序采用C语言进行编写,主要完成LCD1602初始化、DS18B20初始化从DS18B20读取数据、向DS18B20写数据及温度转化等子程序的编写。
此外,在进行程序的编写时,一定要严格保证DS18B20读写时序的正确性,否则无法读取测温结果。
其初始化时序和写时序的程序分别如下:
(1)DS18B20初始化时序
初始化时序包括一个主机发出的复位脉冲以及从机的应答脉冲,这一过程如图3所示,复位脉冲是一个480~960us的低电平,然后释放总线将总线拉至高电平,时间持续15~60us。
之后,从机开始向总线发出一个应答脉冲,该脉冲是一个60us~240us的低电平信号,表示从机已准备好。
在初始化过程中,主机接收脉冲的时间最少为480us。
voidds18B20_initial()//DS18B20初始化程序
{do
{DQ=1;
_nop_();
_nop_();
DQ=0;
Delay(36);
DQ=1;
delay(3);
result_ds18b20=DQ;
delay(18);
}
while(result_ds18b20==1);
}
(2)DS18B20的写时序
DS18B20的写时序如图4所示,分为写0和写1时序两个过程,主机把单线总线从高电平拉到低电平时,表示一个写周期的开始。
当要写0时序时,单总线要被拉至至少60us,当要写1时序时,单总线被拉低以后,在15us之内就得释放单总线,将总线拉为高电平。
此外,两个写周期之间至少要1us的恢复时间。
图4DS18B20的写时序
voidWriteOneChar(unsignedchardat)//写一个字节程序
{unsignedchark,m;
for(k=8;k>0;k--)
{DQ=0;
for(m=2;m>0;m--);
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
}
下位机软件流程图如图图5:
图5:
下位机软件流程图
2.2.2LabVIEW下的串口通讯的实现
LabVIEW的函数库中提供了串口通讯函数,可用来设计单片机与PC机的串口通讯[6]。
(1)串口初始化:
图6串口初始化
图6中包含以下参数:
<1>flowcontroletc该参数包括InputXON/XOFF、OutputXON/XOFF、InputHWHandshake、InputaltHWHandshake、XOFFbyte、XONbyte以及ParityErrorrbyte主要用于设置串口通讯的握手方式和奇偶效验方式。
<2>baudsizeLabVIEW分配给串行通讯输入/输出缓冲器的容量,可以由用户设置。
<3>portnumber串行端口号,在Windows操作系统中参数portnumber有以下选择:
0:
COM11:
COM22:
COM33:
COM44:
LPT1
<4>)baudrate波特率设置。
<5>databits一祯信息中的数据位数,LabVIEW允许5-8位数据。
<6>stopbits一祯信息中停止位的位数。
设置为0则有1位停止位,设置为1有1位半的停止位,设置位2有2个停止位。
<7>parity奇偶效验设置.0表示无奇偶效验,1表示奇效验,2表示偶效验。
<8>errorcode错误码输出。
(2)串口读程序
图7串口读程序
其中参数requestedbytecount用于设置所要读的字符数。
如果要读入当前串口中的所有字符,用参数bytecount的输出作为输入。
(3)主程序设计图
经过设计,波特率1200,自定义软件握手,无奇偶校验,数据位为8位,停止位设置为0,有1位停止位。
主程序的前面板如8图所示:
图8主程序的前面板
而主程序的流程框图如下:
图9主程序的流程框图
3结论
利用LabVIEW强大函数功能和RS232,结合以单片机为核心组成的小系统,可以很方便地完成数据采集及处理等功能,具有很强的工程实用性,可广泛应于测试控制领域。
参考文献:
[1]毛建东.基于LabVIEW的单片机数据采集系统的设计[J].微计算机信息2006.08
[2]郭天祥51单片机C语言教程.电子工业出版社。
2008
[3]彭敏基于的温度显示和报警装置的研制[J]可编程控制器与工厂自动化2007
[4]王水鱼,李宁,胡树燕.基于LabVIEW实现PC机与单片机的串行通信[J].中国新通信,2007(23):
36240.
[5]陈锡辉,张银鸿.LabVIEW8.20程序设计从入门到精通[M].北京:
清华大学出版社,2007.
[6]基于LabVIEW的单片机温度测控系统设计肖金壮.微计算机信息.2007/29
附录1:
图1温度采集系统硬件原理图
编制单片机C语言程序,实现C52单片机拾取18b20采集的温度数据
#include
#include
#defineBUSY1(DQ1==0)
sbitDQ1=P3^3;
unsignedcharidataTMP;
unsignedcharidataTMP_d;
unsignedcharf;
voidwr_ds18_1(chardat);
unsignedcharrd_ds18_1();
/***************延时程序,单位us,大于10us*************/
voidtime_delay(unsignedchartime)
{
time=time-10;
time=time/6;
while(time!
=0)time--;
}
/*****************************************************/
/*resetds18b20*/
/*****************************************************/
voidds_reset_1(void)
{
unsignedcharidatacount=0;
DQ1=0;
time_delay(240);
time_delay(240);
DQ1=1;
return;
}
voidcheck_pre_1(void)
{
while(DQ1);
while(~DQ1);
time_delay(30);
}
voidread_ROM(void)
{
intn;
intROM[8];
ds_reset_1();
check_pre_1();
wr_ds18_1(0x33);
for(n=0;n<8;n++){ROM[n]=rd_ds18_1();}
}
/*****************************************************/
/*Readabitfrom1820位读取*/
/*****************************************************/
bittmrbit_1(void)
{
idatachari=0;
bitdat;
DQ1=0;_nop_();
DQ1=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
dat=DQ1;
time_delay(50);
returndat;
}
/*****************************************************/
/*readabetyfromds18b20字节读取*/
/*****************************************************/
unsignedcharrd_ds18_1()
{
unsignedcharidatai,j,dat=0;
for(i=1;i<=8;i++)
{
j=tmrbit_1();
dat=(j<<(i-1))|dat;
}
returndat;
}
/*****************************************************/
/*writeabetyfromds18b20写字节*/
/****************************************************/
voidwr_ds18_1(chardat)
{
signedcharidatai=0;
unsignedcharidataj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
DQ1=0;
_nop_();
_nop_();
DQ1=1;
time_delay(60);
}
else
{
DQ1=0;
time_delay(50);
DQ1=1;
_nop_();
_nop_();
}
}
}
intget_temp_1(void)
{
unsignedcharidataa=0,b=0;
unsignedcharidatai;
EA=0;
ds_reset_1();
check_pre_1();
wr_ds18_1(0xcc);
wr_ds18_1(0x44);
while(BUSY1);
ds_reset_1();
check_pre_1();
wr_ds18_1(0xcc);
wr_ds18_1(0xbe);
a=rd_ds18_1();
b=rd_ds18_1();
i=b;/*若b为1则为负温*/
i=(i>>4);
if(i==0)
{
f=0;
TMP=((a>>4)|(b<<4));
a=(a&0x0f);
if(a>8)
{
TMP=(TMP+1);
}
}
else
{
f=1;
a=a>>4;
b=b<<4;
TMP=(a|b);
TMP=~TMP;
TMP=(TMP+1);
}
EA=1;
return(TMP);
}
intget_temp_d(void)
{
unsignedcharidataa=0,b=0;
unsignedcharidatai,m;
EA=0;
ds_reset_1();//复位
check_pre_1();
wr_ds18_1(0xcc);
wr_ds18_1(0x44);
while(BUSY1);
ds_reset_1();
check_pre_1();
wr_ds18_1(0xcc);
wr_ds18_1(0xbe);
a=rd_ds18_1();
b=rd_ds18_1();
i=b;/*若b为1则为负温*/
i=(i>>4);
if(i==0)
{
f=0;
TMP=((a>>4)|(b<<4));
a=(a&0x0f);
TMP_d=a;
}
else
{
f=1;
a=~a;
a=(a+1);
b=~b;
b=(b+1);
m=a;
a=a>>4;
b=b<<4;
TMP=(a|b);
m=(m&0x0f);
TMP_d=m;
}
EA=1;
return(TMP);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 labView 温度 采集 系统 设计