matlab环境下pc机与16位单片机串行通信的研究图文精.docx
- 文档编号:29329505
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:12
- 大小:60.88KB
matlab环境下pc机与16位单片机串行通信的研究图文精.docx
《matlab环境下pc机与16位单片机串行通信的研究图文精.docx》由会员分享,可在线阅读,更多相关《matlab环境下pc机与16位单片机串行通信的研究图文精.docx(12页珍藏版)》请在冰豆网上搜索。
matlab环境下pc机与16位单片机串行通信的研究图文精
入深的从概述USB和驱动程序的基本理论,继而根据DriverWorks的开发流程,重点介绍了其中的USB开发的设计,针对USB及驱动程序开发的初学者,使其能够便捷的了解USB和WDM模型驱动程序,并掌握开发工具中USB驱动开发的要点,快速的进入到驱动程序开发的工作中去。
参考文献
[1]王志强.USB设备驱动程序开发技术研究.
微计算机信息,2006
[2]宁立革.基于嵌入式操作系统的USB驱动程序开
发.微计算机信息,2005.
[3]武安河.Windows2000/XPWDM设备驱动程序
开发[….北京:
电子工业出版社,2006.
[4]薛园园.uSB应用开发技术大全[”]
北京:
人民邮电出版社,2007.
作者简介
田心~航天信息股份有限公司、数字技术研究院、芯片研发工程师,主要研究方向是信息安全领域的芯片研发与设计。
■
MATLAB环境下PC机与
16位单片机串行通信的研究
1.汉泽西1.郭正虹
2.彭宏文1.甘志强
(1.西安石油大学电子工程学院2.中国石油测井有限公司长庆事业部
摘要:
文章提出一种PC机与16位单片机串行通信的设计方案。
利用控制工具箱serial类对象实现PC机与单片机SPCE061A间的异步串行通信,给出设计方案的硬件电路和部分软件程序,并通过对实验结果的分析说明串行通信的可靠性。
关键词:
MATLAB,单片机,串行通信
ResearchofSeriaIComrnunicationbetweenPCandMCUInMATLABEnvironment
1.HanZexi1.6uoZhenghong
2.PengHongwen1.GanZhiqiang
(1.Xi’anShiyouUniversity,DepartmentofElectricEngineer
(2.ChinesePetroleumOilwellloggingLimitedcompany
ChangqingServicesdepartment
Abstract:
AmethodofserialcommunicationbetweenPCand16一bitSMCUinMATLABEnvironmentiSdescribed.ThiSarticleemploysserialClassobjectoftheInstrumentToolboxprovidedbyMATLABtorealizetheasynchronousserialcommunicationbetweenPCand16一bitSMCUw--SPCE061A.Concludesdesignmethod’ShardwareCircuitandpartofsoftwareprograme.ItalSOexplainthereliabilitvofthecommunicationresultthrougththeanalysiSofexperimentresult.
Keywords:
MATLAB,MCU,SerialCommunlcation
0.引言
随着计算机系统的广泛应用和网络的飞速发展,各种控制设备间的通信功能显得越来越重要。
串行通信具有高可靠性、低经济成本、遵循统一的标准等特点,已成为当代重要的通信手段。
Pc机的特点是具有较强的分析处理能力、友好的人机界面以及大容量的多种存储方式,而单片机的价格低、功能强、抗干扰能力强和面向控制的特点恰好与Pc机形成了互补。
在实际应用中,经常出现将单片机采集的数据或单片机控制的外围设备中的数据传送到上位机或者把上位机处理的数据或其它控制数据传送到单片机中的串行通信的情况。
本文以MATLAB环境下的PC机和16位单片机SPCE061A的串行通信为例说明PC机和单片机的串行通信实现方法。
1.总体设计原理
设计利用PC机配置的RS232标准串行接口COM和单片机SPCE061A通用异步串行接口UART连接,使用三线制(收、发、地实现数据传递,同时鉴于SPCE061A的I/0输出为3.3V和5.0V可选,与RS232标准接口的电气规范不一致,单片机与Pc机间要进行串行通信需经过MAX232进行电平转换。
串行通信总体设计原理框图如图l。
上位机(PC机下位机
/^——扒ⅢAX^—一(SPCE061ARS232Tjo
\广—叫232\r———、/
RXDTXDUART
GNDRXD
图l总体设计原理图
2.串行通信实现的硬件原理
凌阳16位单片机SPCE061A通用异步串行口模块提供了一个全双工标准通信口,用于完成SPCE061A于外围设备之间的串行通信。
鉴于SPCE061A单片机的串口采用TTL电平,与Pc机串行接口的电气规范不一致,通信中采用RS232C标准接口。
如图2所示。
RS232C电平采用负逻辑,即逻辑1:
一3~一15V,逻辑0:
+3~+15v。
而单片机使用的TTL电平中,高电平(3.5~5v为逻辑I,低电平(0~0.8V为逻辑0。
为实现数据通读,接口之问通过MAX232电平转换芯片把TTL高电平表示的l转换成RS232C的负电压信号,把低电平表示的0转换成RS232C的正电压信号。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,MAX232的第9脚、第10脚分别和单片机SPCE061A的RXD、TXD相连,电路如图3所示。
说明:
ST:
起始位;DO-D7:
8位数据;PA:
硬件奇校验位;SP:
停止位
图2串行通信采用数据帧格式
图3硬件接线图
3.MATLAB串行通信程序设计
在MATLAB6.0以上的版本中新增的设备控制工具箱(instrumentcontroltoolbox用来负责上、下位机之间的通信。
该设备控制工具箱的特色如下:
①支持基于串行接口(RS一232、RS一422、RS一485、GPIB总线(IEEE2488、HPIB标准、VISA总线的通信;
②通信数据支持二进制和文本(ASCII两种方式,文本方式支持SCPI(StandardC0mmandSforProgrammableInstrumentS语言;
③支持异步通信和同步通信;
④支持基于事件驱动的通信。
3.1MATLAB对串口的控制
MATLAB对串行口的控制操作过程如下:
①首先要创建串行口设备对象,这里用到的主要函数是setial0;
s=serial(’coml’创建COMl为串口对象并用s标识它
②定义串口设备对象的通信属性,主要有波特率、异步串行帧格式(包括起始位、数据位、校验位、停止位等和输出输入缓冲区的大小等:
BaudRate定义COMl的波特率(默认为9600bps,可取值为1200bps、2400bps等
parity定义校验方式(可取值:
none、odd、even、mark或space
InputBuffersiZ定义输入缓冲区大小‘
0utputBufferSize定义输出缓冲区大小
Stopbits定义停止位位数(1,1.5或2
Teminator定义结束字符串
③用函数fopen0实现设备对象与硬件设备的软连接(相对于硬件设备的连接,这样就可以进行数据的读写操作;
fopen(S打开s标识的串口
④进行MATLAB串行读写操作,主要用到的函数有fprintf0、fscanf0、fwrite0、fread0等;
A=fscanf(S,’%d’,[2,100]从串口设备对象S中读入2.100个数据填充到数组A[2,100]中,并以整型的数据格式存放。
fprintf(s,’%s’,’MATl3B',’async’将字符串’MATLAB’以字符的数据格式写入到串口设备S,写操作以异步的方式进行。
⑤关闭和删除设备对象,用到的是fcl0Se(、delete0和C1ear0等函数。
fclose(S关闭串口设备对象
delete(S删除内存中的串口设备对象
clearS清除工作空间中的串口设备对象
3.2MATLAB串行通信程序设计
MATLAB进行串行通信是十分方便的,程序较为简单。
而且,在MATLAB中串行通信的失误率很低,通信较为可靠。
本文增加握手信号和数据校验的方式进一步增加通信的可靠性。
在MATLAB环境下,读取串口数据的方法可以分为两种~查询和中断。
以查询的方式进行串行通信时,如下位单片机有大量的数据分时分批传送给Pc机,就需要不停查询串行口的缓冲区,有数据就读取。
虽然编程容易,但这样做不能对数据进行实时处理,系统实时性不高,而且会极大地占用系统的资源。
以中断的方式对串口进行控制实现串行通信,就可以实时处理下位机传送的数据。
但编程相对复杂一些,需要采用MATLAB的事件和回调函数机制。
由于采用了握手信号,使得串行通信中,PC机为主动,单片机为被动的一种主从方式。
串行通信部分程序如下:
functionyn=comtrans(ys,L:
s=serial(’COMI’:
S.parity=’even’:
S.StopBits=l:
S.BaudRate=9600:
S.InputBuffersize=1024:
S.0utputBuffefSize=1024:
S.ReadAsyncMode=’continuous’:
fopen(s:
B=[1085L]:
fprint(S,B:
fprint(S,ys:
M=input(’如果需要接收卷积结果请输入:
1\n’:
ifM==1
C=[10119L]:
fprint(S,’%s’,C:
yn=fread(S,L,’uint8’:
end
fclose(s:
delete(S:
clearS:
例4串行逋信程序流样图
3.3串行通信实现的正确性
为了验证实现的Pc机与凌阳16位单片机串行通信的正确性,利用单片机产生由两个频率分别为300HZ、800Hz正弦信号叠加得到的一个双频信号序列,通过串口将其传入单片机并进行截止频率为500Hz高通滤波运算,然后将滤波结果传入PC机。
值得注意一点是,在串行过程中会有一些随机噪声的加入。
另外,由于在传输过程中使用的数均为整型数,对单片机滤波结果也产生一定的影响。
对滤波后信号进行频谱分析知上述噪声主要集中在低频,再次对其进行截止频率为200Hz高通滤波。
各次滤波前后波形及其频谱分析如图5示,说明了滤波过程的可靠性。
图5各次滤波前后信号的波形及频谱分析(参见游览
4.结论
实验证明,本文介绍的基于MATLAB环境下的PC机利用MATLAB的InstrumentControlToolbox的serial类函数实现了与凌阳16位单片机的串行通信稳定可靠,处理数据方便,编程简单,充分利用MATLAB工具箱中的现有函数,方便地实现串行通信、数据分析处理和图
图5各次滤波前后信号的波彤及频谱分析
形显示,大大简化系统上位机软件的编程工作量。
但是,本文中所实现的串行通信采用的是查询的方式,使得整个串行通信系统不具有良好的实时性,不能对数据进行实时处理,且会极大占有系统资源。
在实际应用中,可以利用Matlab提供的instrcallback(obj,event回调函数,根据需要自行设置具体的串行通信事件。
当串口上有监视的事件发生时,MATLAB会自动调用回调函数进行通信事件的处理。
这样就实现了事件为驱动的中断式串行通信,从而可以解决实时性和系统资源浪费的问题。
参考文献
[1]雷思孝,李伯成,雷向莉.凌阳16位单片机原理
及应用[M1.西安.西安电子科技大学出版社.2004.
[2]陶锋等.凌阳16位单片机与上位机串行通信实
现[JJ.现代电子技术,2006,第2l期总第236期:
48—50.
[3]刘志俭,,张志勇.MATLAB应用程序接口用户
指南㈨.北京.科学出版社.2000.
[4]向先波等.Matlab环境下PC机与单片机的串行
通信及数据处理[J].单片机与嵌入式系统应用,
2006,第12期:
27-31.
[5]谢瑞和.串行技术大全[….
北京.清华大学出版社.2003
作者简介
汉泽西男,1948年生,1982年毕业于西安交通大学信息与控制工程系无线电技术专业。
现为西安石油大学电子工程学院教授,多年从事测试计量技术与仪器的教学和科研工作。
■
MATLAB环境下PC机与16位单片机串行通信的研究
作者:
汉泽西,郭正虹,彭宏文,甘志强,HanZexi,GuoZhenghong,PengHongwen,GanZhiqiang
作者单位:
汉泽西,郭正虹,甘志强,HanZexi,GuoZhenghong,GanZhiqiang(西安石油大学电子工程学院,彭宏文,PengHongwen(中国石油测井有限公司长庆事业部
刊名:
电子技术
英文刊名:
ELECTRONICTECHNOLOGY
年,卷(期:
2008,45(2
引用次数:
0次
参考文献(5条
1.雷思孝.李伯成.雷向莉凌阳16位单片机原理及应用2004
2.陶锋.刘晓东.赵帼英凌阳16位单片机与上位机串行通信实现[期刊论文]-现代电子技术2006(21
3.刘志俭.张志勇MATLAB应用程序接口用户指南2000
4.向先波.徐国华.张琴Matlab环境下PC机与单片机的串行通信及数据处理[期刊论文]-单片机与嵌入式系统应用2004(12
5.谢瑞和串行技术大全2003
相似文献(10条
1.期刊论文邓从阳.黄惟公.DENGCong-yang.HUANGWei-gong基于MATLAB与单片机的测控系统设计-仪表技术2007(9
提出一种基于MATLAB与单片机的教学测控系统的设计方法.通过MATLAB自带的通信类可以方便的和单片机串口进行通讯,实现对下位机采集的数据进行分析处理.利用MATLAB软件提供的GUI可以设计出一套友好的人机界面实现对单片机测控系统的实时控制.
2.期刊论文邓从阳.黄惟公.DENGCong-yang.HUANGWei-gong基于Matlab与单片机的教学测控系统设计-电气电子教学学报2007,29(3
本文提出一种基于Matlab与单片机的教学测控系统的设计方法.通过Matlab自带的通信类元件库可以方便地和单片机串口进行通讯,实现对下位机采集的数据进行分析处理.利用Matlab软件提供的GUI可以设计出一套友好的人机界面实现对单片机测控系统的实时控制.实验证明,该方法可以开发学生的思维,提高其动手能力,在教学实验中有很好的实用性.
3.期刊论文兰红莉.罗文广.LanHongli.LuoWenguang基于MATLAB的PC机与单片机串行通信实现-计算机应用与软件2006,23(6
介绍了基于MATLAB的PC机与PIC系列单片机串行通信的实现方法.串行系统主要由PC机、RS-232C电平转换器MAX232ACPE、单片机PIC16F874以及通信程序构成,单片机通信程序用其汇编语言设计,PC机通信程序则是用MATLAB的仪器控制工具箱的函数及通过建立事件和回调函数来实现.给出了具体的通信程序.
4.会议论文杨晓玲.朱群雄基于单片机和模糊控制的电熔焊机设计及应用2008
研制并开发了专用于塑料管道焊接的电熔焊机.给出了系统的工作原理、硬件结构及软件设计流程.该焊机以单片机为基本控制单元,采用模糊-PID算法实现对焊接温度的控制;采用带中文字库的点阵液晶显示模块LCM128645ZK作为显示器件,采用双线串行AT24C01芯片记忆用户的温度设定值,采用固态继电器SSR作为PWM控制的开关器件.对系统进行了MATLAB仿真,结果表明,采用模糊-PID控制算法,该控制器能够发挥模糊控制鲁棒性强、动态响应好、超调小的特点,同时又具有PID控制器的动态跟踪品质和稳态精度.具有很好的实时性。
实际应用表明,该控制装置具有体积小、抗干扰能力强、使用方便和通用性强的优点.
5.期刊论文郝宝根基于MATLAB和单片机的数字滤波器的设计-仪器仪表用户2008,15(3
本文从MATLAB和单片机的角度,实现了数字低通滤波器的设计.本设计搭建了以单片机为核心的硬件电路,通过MATLAB工具箱来设计数字低通滤波器,得到滤波器的系数,而后在单片机中编写汇编程序,用Proleus实现信号的仿真.
6.期刊论文向先波.徐国华.张琴Matlab环境下PC机与单片机的串行通信及数据处理-单片机与嵌入式系统应用2004(12
结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一种Matlab环境下PC机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理、文件存储、FIR滤波及图形显示;简化系统开发流程,提高开发效率.该方法已成功应用于一个PIC16F876单片机应用系统实例之中.
7.期刊论文龚昌来.GONGChang-lai基于MatLab/Simulink的单片机控制系统仿真-河海大学常州分校学报2006,20(1
单片机控制器是一种特殊的数字控制器.根据单片机控制器的工作特征,在MatLab/Simulink环境下建立了单片机控制系统的仿真模型,以PID控制系统为例,实现了单片机控制系统的仿真.
8.会议论文张军.罗维平基于单片机直流调速系统的MATLAB仿真设计2008
论文用工程设计法对双闭环直流调速系统进行设计,选用凌阳系列单片机为控制核心组成硬件电路,选择控制策略和控制算法,应用C语言在IDE的
好的控制效果.
9.期刊论文汉泽西.甘志强.HuanZexi.GanZhiqiangMATLAB环境下PC机与16位单片机串行通信实现-电子测试
2007(10
本文提出了一种MATLAB环境下PC机与16位单片机串行通信的没计方案.利用MATLAB提供的仪器控制工具箱serial类对象实现PC机与16位单片机
SPCE061A间的异步串行通信,给出了两者通信时的部分程序设计和电平转换说明.
10.期刊论文谭轶平.王振清VB和Matlab混编实现振动信号的频谱分析-物理测试2004(2
介绍了一种悬臂梁结构固有振动频率的计算机测试系统.该系统利用单片机作为下位机完成振动信号的采样和存储,VB和Matlab混编的上位机软件对测试过程进行控制并完成振动信号的频谱分析,自动找出一至三阶固有频率分量并显示.VB和Matlab的混编使用ActiveX技术.
本文链接:
下载时间:
2010年1月3日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 环境 pc 16 单片机 串行 通信 研究 图文