新闻中心

EEPW首页 > 测试测量 > 设计应用 > 基于Matlab的一种小型温度检测系统的设计

基于Matlab的一种小型温度检测系统的设计

作者:时间:2010-01-02来源:网络收藏

  4 上位机部分(PC)

  上位机通过串口向下位机发送命令实现对下位机的控制,并实时地接受下位机传送过来的数据,对其分析处理,将结果用图形显示并存储,完成人机交互过程。

  并不具备直接访问硬件的能力,但是支持面向对象技术,通过调用Instrument Control Toolbox中的serial类函数来创建串口对象,对串口对象操作就是对串口操作,使用起非常方便。同时,封装的串口对象支持对串口的异步读写操作,使得计算机在读写串口时能同时进行其他处理工作,因而能大大提高计算机执行效率。用多线程技术实现这种异步操作,通过异步读写设置,计算机在执行读写串口函数时能立即返回不必等待串口把数据传输完毕, 当指定的数据传输结束时就触发事件,执行事件回调函数,可以在事件回调函数中编程,进行数据处理,这样就不会造成因等待串口传输数据引起的时间浪费。

  4.1 Matlab下串口编程

  MATLAB的Instrument Control Toolbox提供了 MATLAB与仪器仪表通信的功能 ,它支持 GPIB 通用接口总线 、VISA、TCP/ IP、UDP、RS2232等多个协议 ,具有同步和异步读写功能以及事件处理和回调操作功能,可读写和记录二进制和ASCII文本数据。与串口有关的主要函数如下[3]:

  (1)建立串口对象函数:obj=seril(’port’,’property name’,propertyvalue……),其中主要的属性有:baudrate(波特率),databits(数据位),parity(校验方式),stopbits(终止位)等,可以在初始化时进行赋值或者使用set函数。

  (2)打开串口设备对象:fopen(obj)

  (3) 串口读写操作:当matlab通信数据采用二进制格式时,读写串口设备的命令为fread()和fwrite();当通行数据采用文本(ASCII)格式时,读写串口设备的命令为fscanf()和fprintf()。

  (4)关闭并清除设备对象:

  Fclose(obj);%关闭串口设备对象

  Delete(obj);%删除内存中的串口设备对象

  基于本系统串口通信协议,对串口对象的读写部分程序如下:

  Obj=serial(’com1’,’baudrate’,9600,’parity’,’none’,’databits’,8,’stopbits’,1);%初始化串口

  Fopen(obj);%打开串口对象

  Fwrite(obj,256);%向串口发送握手信号0xff

  TMP=fread(obj,3,’unit8’);%从串口读取3字节数据,后2个即是16bit温度数据

  If TMP(1)= =256 %判断第一个字节受否是握手信号

   For i = 1:3

  Dat(i)=TMP(i+1);%剔除第一个握手信号字节

  End

  End

  Fclose(obj);%关闭串口设备对象

  Delete(obj);%删除内存中的串口设备对象

  4.2 Matlab数据分析

  单片机一般能处理简单的8位无符号数的四则运算,而DS18B20可以程序设定9~12位的分辨率,精度可达±0.5℃,温度以16bit带符号位扩展的二进制补码形式读出,如果使用单片机进行快速的实时处理则比较费力,同时单片机还要与DS18B20及上位机通信,系统资源也比较紧张。因而可以将读取的16bit温度数据直接送往PC机,由上位机来完成。Matlab强大的计算能力和绘图功能给数据分析带来了极大的方便,这不仅可以合理利用系统资源,也使得系统的通信过程更流畅。



评论


相关推荐

技术专区

关闭