MATLAB与51单片机通信
桂电二院科协出品,版权所有,转载不究。 maswell_xiao@foxmail.com
MATLAB 与 51 单片机通信通信
本文介绍 MATLAB 与 51 单片机进行简单的数据通信。首先介绍几个 MATLAB 关于串口
的几个小函数。
1. serial函数,该函数用来创建一个串口对象,格式为
obj = serial('port')
obj = serial('port','PropertyName',PropertyValue,...)
...
桂电二院科协出品,版权所有,转载不究。 maswell_xiao@foxmail.com
MATLAB 与 51 单片机通信通信
本文介绍 MATLAB 与 51 单片机进行简单的数据通信。首先介绍几个 MATLAB 关于串口
的几个小函数。
1. serial函数,该函数用来创建一个串口对象,格式为
obj = serial('port')
obj = serial('port','PropertyName',PropertyValue,...)
serial函数括号内为串口名,用单引号引起。该函数返回串口对象 s。可以
将之当一个“文件”使用。当然可以用该函数设置该串口的波特率,格式为
s = serial('COM1','BaudRate',4800);
s = serial('COM1','baudrate',4800);
s = serial('COM1','BAUD',4800);
以上三种格式等价,都可以设置串口 1 的波特率为 4800。
2. fopen 函数,打开串口对象,格式为
fileID = fopen(filename)
fileID = fopen(filename, permission)
fileID = fopen(filename, permission, machineformat)
fileID = fopen(filename, permission, machineformat, encoding)
[fileID, message] = fopen(filename, ...)
fIDs = fopen('all')
[filename, permission, machineformat, encoding] = fopen(fileID)
如同文件一样打开串口对象。该函数返回串口 ID,如果串口无法打开,则返
回-1。
3. fread 函数,读取串口数据,格式为
A = fread(fileID)
A = fread(fileID, sizeA)
A = fread(fileID, sizeA, precision)
A = fread(fileID, sizeA, precision, skip)
A = fread(fileID, sizeA, precision, skip, machineformat)
[A, count] = fread(...)
该函数执行是等待一段时间,如果没有接收到数据,该函数自动结束。
4. fclose 函数,关闭串口对象,格式为
桂电二院科协出品,版权所有,转载不究。 maswell_xiao@foxmail.com
fclose(fileID)
fclose('all')
status = fclose(...)
在串口中使用该函数 fclose(s),关闭串口对象。当成功关闭该串口时,函数返回状态 0,
否则返回状态-1.
5. free 函数,解除 Matlab 对串口对象的控制。格式为
free(s)
释放 s 指向的内存空间。
6. delete 函数,删除对象 s,格式为
delete('fileName1', 'filename2', ...)
delete(h)
delete(handle_array)
delete fileName
当使用 serial 函数创建一个串口对象而不用时要用该函数删除对象 s。这个与 fclose 不
同的是,fclose 仅仅是关闭串口对象暂时不用,delete 函数是直接删除,若使用 delete
函数删除对象还想再用时就要用 serial 函数重新创建串口对象用 fopen 打开对象。而
fclose 不用再创建对象。当使用 MATLAB 占用串口时,其他软件不能使用该串口,如串
口小助手。
7. clear 函数,从工作空间中删除对象 s,格式为
clear
clear name
clear name1 name2 name3 ...
clear global name
clear -regexp expr1 expr2 ...
clear global -regexp expr1 expr2 ...
clear keyword
clear('name1','name2','name3',...)
在串口中可以这样用 clear(s)。clear 函数从工作空间删除变量,并释放系统内存。
桂电二院科协出品,版权所有,转载不究。 maswell_xiao@foxmail.com
先给 51 单片机写个小程序让之发送、接收数据。
/**************************************************************************
author : maswell xiao
email : maswell_xiao@foxmail.com
frist date : 5/4/2012 15:13
**************************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define BufferLength 32
uchar Buffer[BufferLength]={0};
bit flag=1;
bit SendByte(uchar byte)
{
SBUF=byte;
while(TI==0);
TI=0;
return 1;
}
bit SendString(uchar *pString)
{
uint i,length;
length=strlen(pString);//#include
for(i=0;i
本文档为【MATLAB与51单片机通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。