- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab与51单片机的串口通信
数字信号处理
2012电子信息工程专业答辩报告
姓名 杨全 任伟 学号 201252241 201251779 成绩
Matlab与51单片机的串口通信
简介
从Matlab6.0版本开始,Mathworks公司在软件中增加了设备控制箱(instrument control toolbox),提供了对RS-232/RS-485通信标准串口(九针串口)通信正式支持(本实验采用USB转串口)利用该工具箱serial类及instrcallback()回调函数,能可靠地进行实时串地通信。Matlab支持面向对象技术,用一个对象将计算机串口封装起来,只要创建串口对象,对串口对象操作就是对串口操作,非常方便。使用serial函数就可创建串口对象,通过定义串口对象的属性,能定义串口的通信模式,从串口对象属性也能了解串口的状态,即可以通过MATLAB的串口通讯函数读写数据。
Matlab串口函数
serial 创建一个串口对象,格式:s = serial(coml )fopen 打开串口对象,格式:fopen(s)
fwrite 其他程序能对该串口进行读写操作fwrite(s,’’)fread 读取串口数据,格式: fread(s)fclose 关闭串口对象,格式:fclose(s)free?? 解除Matlab对串口对象的控制,使delete 删除对象s,格式:delete(s)clear 从工作空间中删除对象s,格式:clear(s)
实现功能
利用MATLAB串口通信函数,读写51单片机(STC89C52R+)数据,运用keil编写时钟程序,烧录到单片机中,时钟程序实现的功能是实现时钟的显示,并且能用开发板上的三个按钮进行时钟的修改,一个按钮进入修改模式(复位),另两个实现时间的增减。编辑MATLAB程序,实现对单片机的控制。读写串口操作。初始化并打开串口调协对象之后,现在可以对串口设备对象进行读写操作,串口读写操作支持二进制和文本(ASCII)两种方式。当Matlab通信数据采用西方(ASCII)方式时,读写串口设备命令分别是fscanf、fpritf;当Matlab通信数据采用二进制方式时,读写串口设备命令分别是fread、fwrite。
具体实现
4.1开发板
4.2 实现流程
先创建创建串口设备对象,配置串口初始化的对象属性,连接窗口物理设备(开发板),写发送通信握手信号;进行读写操作(串口发送接收数据)。
4.3 时钟程序
见附录(添加串口接收部分)
4.4 Matlab的操作如下
%%%%%%默认COM4属性设置%%%%%
s=serial(com4)%开启串口COM4的函数并设置属性
Serial Port Object : Serial-COM4
Communication Settings
Port: COM4
BaudRate: 9600
Terminator: LF
Communication State
Status: closed
RecordStatus: off
Read/Write State
TransferStatus: idle
BytesAvailable: 0
ValuesReceived: 0
ValuesSent: 0
fopen(s);%打开s(COM4串口)
fwrite(s
fwrite(s%显示清零;
及时拍下数码管显示如下图
fwrite(s,00 0C FE)%数码管显示00010
及时拍下数码管显示如下图
fwrite(s,00 0C FE)%写入数据
v=fread(s,30); %读取前30个数据
dec2hex(v) %转换成16进制输出
ans =
80
80
A0
88
80
80
A8
89
80
80
08
80
80
80
MATLAB串口输出的数据与串口输出的数据作比较可以发现读取的数据一样,由于时钟程序反馈的数是变化的所以不能够比较准确的将它们一个不差的比较出来。
五、总结:
用MATLAB的串口功能与一般的串口调试助手的功能是一样的,都能准确的读写数据,可以接受和发送一般十六进制的数。总的来说本实验还有一些要改的地方比如说,在51程序的设计方面有些地方编写的不太好(基本功能:波特率9600,发出十六进制的数据,触发串口中断,接收十六进制
文档评论(0)