新闻中心

EEPW首页>嵌入式系统>设计应用> AVR单片机和Matlab串口通信的计时器系统

AVR单片机和Matlab串口通信的计时器系统

作者: 时间:2013-11-12 来源:网络 收藏

AVR单片机和Matlab串口通信的计时器系统

图3 单片机主程序流程图

3 下位机和上位机的

  本系统下位机为单片机,信号电压是TTL电平0~+5 V,而上位机为PC机,串口电平是RS232电平-10~+10 V。为了实现,需要经过MAX232电平转换,才能匹配。考虑到应用的灵活性、方便性,以及多个下位机与一个上位机进行的通信,本设计在单片机和上位机之间接入ZigBee无线通信模块,使用的是SZ05-ZigBee无线通信模块。SZ05ZigBee无线通信模块接线图如图4所示。

AVR单片机和Matlab串口通信的计时器系统

图4 SZ05ZigBee无线通信模块接线图

  该模块数据接口包括TTL电平接收发送接口、RS232发送接收接口,还可以按照广播方式发送数据和按照目标地址发送数据,除可实现一般的点对点数据通信功能外,还可实现多点之间的数据通信。使用方法简单、便利,可以大大缩短模块的嵌入匹配时间进程。它具有通信距离远、抗干扰能力强、组网灵活、性能可靠稳定等优点。[4]

  将SZ05ZigBee无线通信模块CONFIG跳线短接,系统进入配置状态。打开计算机的超级终端,超级终端的设置为:波特率38 400、数据位8、校验NONE、停止位1、流控无。主要参数配置如下:网络类型网——星型网;发送模式——主从模式;数据类型——HEX;数据位——8+0+1;波特率——38 400;单片机端连接的设备类型——终端设备(DEVICE跳线短接);上位机端连接的设备类型——中心节点(CENTER端口与地短接)。每个终端设备需设置自己不同的MAC_ADDR设备地址,范围为0000~0xFFFE。主从模式下,终端设备发送数据无需目标地址,数据默认给中心节点,而中心节点发送数据则必须加上终端设备的目标地址。

  无线通信模块在测试上电时,会自动发送一串随机数据。为了防止干扰,自定义了一项通信协议,定义3字节数据为一帧,数据包格式为0xAABB××,在检测到数据头AA BB时,才接收数据,保证接收到数据的准确性。

4 基于GUI的串口通信和计时器的实现

4.1对串口RS232的编程

  从6.0版本开始,软件中增加了设备控制箱功能,提供了对RS232/RS485通信标准的串口通信的正式支持。利用该工具箱的串口类及fopen、fread等函数,能可靠地进行实时串行通信。[5]

  从建立串口通信到结束串口通信的完整流程包括以下几个步骤[6]:

① 为应用程序创建串口对象。实现该功能的函数为obj=serial(“port”,“PropertyName”, PropertyValue,…)。其中,参数port为完整的串口名称,如COMl;PropertyName为串口通信参数,如baudrate、startbits等。

② 连接打开串口。其函数为fopen(obj)。

③ 设置或者修改串口通信参数。在能够有效地进行串口通信前,必须设置正确的串口通信参数。实现该功能的函数为props=set(obj,“PropertyName”,PropertyValue,…)。

④ 关闭串口以及释放串口对象占用的存储空间。关闭串口函数为:fclose(obj)。释放串口对象占用的内存空间,函数为delete(obj)。释放串口对象在Matlab工作区中占用的存储空间函数为clear obj。

  要实现自动收发数据,还需要定义串口中断处理函数以及触发串口中断的方式如下:

① 触发串口中断的方式。涉及到串口读写的事件包括:Bytes available、Output empty。其中,Bytes available事件有两种:一种是接收到的字符数达到人工设定的数目时,系统产生该事件;另一种是当接收到指定字符时,系统产生该事件。本文采用前一种,当接收字节数达到3时,触发中断。

单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理


通信相关文章:通信原理


光电开关相关文章:光电开关原理


评论


相关推荐

技术专区

关闭