MATLAB与单片机的串行通信接口设计
matlab中的串口通信通信系统设计

文章标题:探索Matlab中的串口通信系统设计在当前的现代通信系统中,串口通信系统设计已经成为一项至关重要的任务。
在Matlab中,借助各种工具和函数,我们可以设计出高效、稳定和灵活的串口通信系统。
本文将从简单到复杂、由浅入深地探讨Matlab中的串口通信系统设计,为读者提供全面的了解和深入的思考。
1. 串口通信系统概述在进行Matlab中的串口通信系统设计之前,我们首先需要了解串口通信系统的基本概念和原理。
串口通信是通过串行接口进行数据传输的一种通信方式,它在各种领域中都有着广泛的应用,包括嵌入式系统、通信设备、工业控制等。
Matlab作为强大的工程计算软件,为我们提供了丰富的工具和函数来进行串口通信系统设计,包括串口对象、串口配置、数据读写等功能。
2. Matlab中的串口通信基本操作在Matlab中,我们可以通过串口对象来进行串口通信的基本操作。
我们需要创建一个串口对象,并进行相应的配置,包括波特率、数据位、停止位、校验位等参数。
我们可以使用该串口对象来进行数据的读写操作,可以发送数据到外部设备,也可以接收来自外部设备的数据。
通过Matlab中丰富的串口函数,我们可以轻松实现串口通信系统的基本功能。
3. Matlab中的串口通信系统设计在实际的工程应用中,我们通常需要设计更加复杂和灵活的串口通信系统。
在Matlab中,我们可以借助信号处理工具箱、通信工具箱等功能来进行串口通信系统的设计。
通过信号处理工具箱,我们可以实现对串口数据的解调、调制、滤波等操作,从而提高通信系统的稳定性和性能。
而通信工具箱中的各种算法和工具则可以帮助我们实现更加复杂的通信协议和数据处理。
4. 个人观点和总结在我看来,Matlab是一款非常适合进行串口通信系统设计的软件,它不仅提供了丰富的工具和函数,还具备强大的计算能力和灵活的编程环境。
通过Matlab,我们可以实现从简单到复杂的串口通信系统设计,为各种应用场景提供定制化的解决方案。
matlab环境下pc机与16位单片机串行通信的研究_图文(精)

入深的从概述USB和驱动程序的基本理论,继而根据DriverWorks的开发流程,重点介绍了其中的USB开发的设计,针对USB及驱动程序开发的初学者,使其能够便捷的了解USB和WDM模型驱动程序,并掌握开发工具中USB驱动开发的要点,快速的进入到驱动程序开发的工作中去。
参考文献[1]王志强.USB设备驱动程序开发技术研究.微计算机信息,2006[2]宁立革.基于嵌入式操作系统的USB驱动程序开发.微计算机信息,2005.[3]武安河.Windows2000/XP WDM设备驱动程序开发[….北京:电子工业出版社,2006.[4]薛园园.uSB应用开发技术大全[”]北京:人民邮电出版社,2007.作者简介田心~航天信息股份有限公司、数字技术研究院、芯片研发工程师,主要研究方向是信息安全领域的芯片研发与设计。
■MATLAB环境下PC机与16位单片机串行通信的研究1.汉泽西1.郭正虹2.彭宏文1.甘志强(1.西安石油大学电子工程学院2.中国石油测井有限公司长庆事业部摘要:文章提出一种PC机与16位单片机串行通信的设计方案。
利用控制工具箱serial类对象实现PC机与单片机SPCE061A间的异步串行通信,给出设计方案的硬件电路和部分软件程序,并通过对实验结果的分析说明串行通信的可靠性。
关键词:MATLAB,单片机,串行通信Research of SeriaI Com rnunication between PC and MCU In MATLAB Envi ronment1.Han Zexi1.6uo Zhenghong2.Peng Hongwen1.Gan Zhiqiang(1.Xi’an Shiyou University,Department of Electric Engineer(2.Chinese Petroleum Oil wel l logging Limited companyChangqing Services departmentAbstract:A method of serial communication between PC and16一bitS MCU in MATLAB Environment iS described.ThiS article employs serial Class object of the Instrument Toolbox provided by MATLAB to real ize the asynchronous serial communication between PC and16一bitS MCUw--SPCE061A.Concludes design method’S hardware Circuit and part of software programe.It alSO explain the reliabilitv of the communication result througth the analysiS of experiment result.Keywords:MATLAB,MCU,Serial Communlcation0.引言随着计算机系统的广泛应用和网络的飞速发展,各种控制设备间的通信功能显得越来越重要。
基于Matlab和AVR单片机的串行数据通信设计

关键词 :串行通信 ;S r l e a 类对 象;A R单片机 ;Ma a i V tb串行通信 l
中图分类号 : P 1 T 99 文献标志码 : A 文章编号 : 0 6 8 2 ( 0 2)3 3 — 2 10 — 2 8 2 1 0 — 3 0
fpns: 开 C M 1 口 。 oe( 打 ) O 串
( 设置 串口的属性参数 , 3 ) 需要用到 的函数为
poss( ‘r ey a e, oey a e…)设 置 正 确 r =e s Po r N m ’ r r V l , : p t, p t Ppt u 的串口通信参数 。 目前常用的串行通讯协议有 R -3 、S42 R -8等 。 S22R -2 和 S  ̄5 - 通过 定义 串口对 象的属性 , 就能 定义 串口的通信模式 , 也 从M t . aa 6 版本开始, l 0 b 软件中增加了设备控制箱(s m n I t et nr u 可 以了解 串口的状态 。串口对象几个 比较重要的属性如下。 Cn o T o o ) 能 , ot l ol x功 r b 提供 了对 R 一 3/S 45 信标 准 的 S 22 一8 通 R B uR t: ad a 定义传输波特率 , e 常用的波特率有 10 、40 20 20 、 串 口通信 的正式支持 。利用该 工具箱 的 s i 类 及 fpn f a ea rl oe 、 e rd 4 0 、6 0 12 0 15 0 等 , 8 0 9 0 、9 0 、1 2 0 缺省值为 9 0 ; 6 0 等函数 , 能可靠地进行 实时串行通信 。根据 Maa 的设备控制 tb l D t i: a Bt 定义数据帧 的比特位数 ; a s 箱功能 , tb 生的数 据 , Ma a产 l 例如 图像数 据 、 音频数 据 等 , 通过 串 口输 出作 为传输 的数据 源 , 可通过 控制 电路 由 A R 片 并 V 单 机 实现 。这种 方法将 Maa 的数据运 算 与单 片机 的数据处 理 tb l 有机结 合起 来 , 具有一 定的实 际意义 。 Pry定义校验方式 ; a t: i SoBt: t i 定义数据停止位。 p s
emlc——让MATLAB的代码进入单片机

emlc——让MA TLAB的代码进入单片机通常情况下,如果我在MATLAB上完成了某个功能(比如某图像识别的算法),却想把它用在单片机上,需要自己再写一遍C的代码。
(我这里说的单片机确切的来说还是指所有微控制器比较好)。
但有了emlc,事情将被大大简化。
本文旨在初步介绍emlc,更多内容请查看MathWorks公司的官方资料。
emlc是MATLAB中的一条命令,可以将MA TLAB的代码转为C语言,在我看来,这应该算得上是每一位嵌入式开发者的有力工具了。
在MATLAB中输入help emlc,就可以看到它的帮助文件,其中第一句话就是非常令人兴奋的:"EMLC Generate C code from MATLAB code.―,接下来是它的用法:"EMLC [-options] [files] fun1 [fun2 ...]‖。
读者在看emlc用法之前最好先看看这3篇文章,确保各项准备工作齐全后再进行试验。
《在emlc之前要做好的事情(1)》《在emlc之前要做好的事情(2)》《在emlc之前要做好的事情(3)》本人认为emlc中比较重要的参数有以下几个:-T <TYPE> 用来控制输出格式。
其中<TYPE>有如下几种选择:MEX - 生成一个C-MEX的函数(默认)。
RTW - 生成嵌入式C代码,并生成相应的库文件。
RTW:LIB - 同上。
RTW:EXE - 生成C代码,并生成相应的EXE文件。
-c 意思是只生成代码,不进行编译(没有.o文件),这样做的前提是在-T RTW的情况下。
这样做可以方便快速的进行转换和更改。
-d 设置输出目录。
-eg 设置函数参数的类型。
一般如果你的函数有输入的参数,那最好在emlc中加上这个。
具体用法见下面的实例。
-o 设置输出文件的文件名-report 返回emlc的提示信息,包括错误信息,这个会有助于程序的调试。
MATLAB与51单片机通信

桂电二院科协出品,版权所有,转载不究。
maswell_xiao@
程序的最后用 dat = fread(s)读取单片机给 MATLAB 发送的数据,显然 dat 的数据对应的 ASCALL 码正好是单片机程序里对应的‘has been received’
桂电二院科协出品,版权所有,转载不究。
以上三种格式等价,都可以设置串口 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)
当使用 serial 函数创建一个串口对象而不用时要用该函数删除对象 s。这个与 fclose 不 同的是,fclose 仅仅是关闭串口对象暂时不用,delete 函数是直接删除,若使用 delete 函数删除对象还想再用时就要用 serial 函数重新创建串口对象用 fopen 打开对象。而 fclose 不用再创建对象。当使用 MATLAB 占用串口时,其他软件不能使用该串口,如串 口小助手。
在串口中可以这样用 clear(s)。clear 函数从工作空间删除变量,并释放系统内存。
Matlab的GUI单片机串口PC的通信

基于Matlab GUI的单片机串口与PC的通信概述1.采用51单片机,atmel的STC89C52RC芯片,主要用到的是七段数码管用来做一个时钟,程序编写软件为keil,烧录软件为STC-ISP 4.88,串口调试软件用的是sscom42。
2.运用Matlab的GUI工具编辑一个可视化界面,用以跟单片机进行串口通信实现功能1.运用keil编写时钟程序,烧录到单片机中,时钟程序实现的功能是实现时钟的显示,并且能用开发板上的三个按钮进行时钟的修改,一个按钮进入修改模式,另两个实现时间的增减。
2.编辑GUI界面,实现对单片机的控制,其中,GUI界面通过串口能不断的采样开发板上时钟的数值,并在GUI界面上进行显示。
同样的,可以通过GUI界面实现对开发板上时钟的修改。
具体实现1.开发板部分:A)时钟显示程序如下(并且加入了串口接收部分)Main.c#include <REGX52.H>#define LED_SELECT P2#define LED_DATA P0#define KEY_PIN P3//变量定义unsigned char light[]={3,2,0,7,5,4,1,6};static unsigned char count_1s=0 ;typedef enum{NULL, KEY_ENTER, KEY_UP, KEY_DOWN}TYPEDEF_KEY;enum SHOW_STATE{SHOW_NORMAL, SHOW_SEC_ADJ, SHOW_MIN_ADJ,SHOW_HOUR_ADJ, }ShowState;unsigned char code LEDMAP[] = //共阴极显示代码{0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90,0xff, //熄灭};enum{LED_GOOUT = 10,};unsigned char LEDBuffer[6]; //显示缓冲区unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char count;bit Timer1sFlg;//函数声明void A T89S51Config(void);void VariableInitial(void);void ShowNormal(void);void ShowSecondAdj(void);void ShowMinuteAdj(void);void ShowHourAdj(void);void Delay(unsigned int t);void Display(unsigned char * buf, unsigned char number); //动态显示unsigned char GetKey(void);/*——————————————————————————————主函数————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/main(void){AT89S51Config(); //A T89S51配置VariableInitial(); //变量初始化while(1){switch(ShowState){case SHOW_NORMAL:ShowNormal();break;case SHOW_SEC_ADJ:ShowSecondAdj();break;case SHOW_MIN_ADJ:ShowMinuteAdj();break;case SHOW_HOUR_ADJ:ShowHourAdj();break;default:break;}Display(LEDBuffer,6);}}/*——————————————————————————————配置函数————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void A T89S51Config(void){ TMOD|=0x20; //串口配置————————————————————————————————————————PCON&=0x7f;TH1=TL1=0xfd;TR1=1;SCON=0x50; //串口配置————————————————————————————————————————RCAP2H=0x0F;//T2定时器初值RCAP2L=0x00;ET2=1;//允许T2定时器中断TR2=1;//启动T2定时器EA=1;//开总中断}/*——————————————————————————————变量初始化————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void VariableInitial(void){ShowState = 0;Second = 0;Minute = 0;Hour = 0;Timer1sFlg = 0;count=0;}/*——————————————————————————————延时函数————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void Delay(unsigned int t){for (t; t>0; t--) ;}/*——————————————————————————————正常显示界面————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void ShowNormal(void){ unsigned char i;TYPEDEF_KEY key;//1秒钟到,显示值更新if(Timer1sFlg){Timer1sFlg = 0;Second++;if(Second >= 60){Second = 0;Minute ++;if(Minute >= 60){Minute = 0;Hour ++;if(Hour >= 24){Hour = 0;}}}for(i=0;i<6;i++){if(TI==0) //——————————给串口送数据,既给matlab 送数据———————————————————————————{ //———————————————————————————————————————————————————————SBUF=LEDBuffer[5-i];while (!TI ); //操作对象是TITI=0 ;}}}LEDBuffer[0] = Second % 10; //秒个位送显示缓冲区LEDBuffer[1] = Second / 10; //秒十位送显示缓冲区LEDBuffer[2] = Minute % 10;LEDBuffer[3] = Minute / 10;LEDBuffer[4] = Hour % 10;LEDBuffer[5] = Hour / 10;key = GetKey();if(key == KEY_ENTER){ShowState = SHOW_SEC_ADJ;}if(RI==1){RI=0;TI=0;ShowState = SHOW_SEC_ADJ;}}/*——————————————————————————————秒钟调整————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void ShowSecondAdj(void){ unsigned char i;TYPEDEF_KEY key;LEDBuffer[0] = Second % 10; //秒个位送显示缓冲区LEDBuffer[1] = Second / 10; //秒十位送显示缓冲区LEDBuffer[2] = LED_GOOUT; //熄灭LEDBuffer[3] = LED_GOOUT; //熄灭LEDBuffer[4] = LED_GOOUT; //熄灭LEDBuffer[5] = LED_GOOUT; //熄灭Display(LEDBuffer,6);key = GetKey();switch(key){case KEY_ENTER:ShowState = SHOW_MIN_ADJ;break;case KEY_UP:Second++;if(60 == Second){Second = 0;}break;case KEY_DOWN:if(0 == Second){Second = 59;}else{Second--;}break;}for(i=0;i<6;i++){LEDBuffer[2]=0;LEDBuffer[3]=0;LEDBuffer[4]=0;LEDBuffer[5]=0;if(TI==0) //——————————给串口送数据,既给matlab 送数据———————————————————————————{ //———————————————————————————————————————————————————————SBUF=LEDBuffer[5-i];while (!TI ); //操作对象是TITI=0 ;}}if(RI==1){ RI=0;Second=SBUF;TI=0;LEDBuffer[0] = Second % 10; //秒个位送显示缓冲区LEDBuffer[1] = Second / 10; //秒十位送显示缓冲区ShowState = SHOW_MIN_ADJ;for(i=0;i<100;i++){Display(LEDBuffer,6);}}}/*——————————————————————————————分钟调整————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void ShowMinuteAdj(void){unsigned char i;TYPEDEF_KEY key;LEDBuffer[0] = LED_GOOUT; //熄灭LEDBuffer[1] = LED_GOOUT; //熄灭LEDBuffer[2] = Minute % 10; //分个位送显示缓冲区LEDBuffer[3] = Minute / 10; //分十位送显示缓冲区LEDBuffer[4] = LED_GOOUT; //熄灭LEDBuffer[5] = LED_GOOUT; //熄灭Display(LEDBuffer,6);key = GetKey();switch(key){case KEY_ENTER:ShowState = SHOW_HOUR_ADJ;break;case KEY_UP:Minute++;if(60 == Minute){Minute = 0;}break;case KEY_DOWN:if(0 == Minute){Minute = 59;}else{Minute--;}break;}for(i=0;i<6;i++){LEDBuffer[0] = Second % 10; //秒个位送显示缓冲区LEDBuffer[1] = Second / 10; //秒十位送显示缓冲区LEDBuffer[4]=0;LEDBuffer[5]=0;if(TI==0) //——————————给串口送数据,既给matlab 送数据———————————————————————————{ //———————————————————————————————————————————————————————SBUF=LEDBuffer[5-i];while (!TI ); //操作对象是TITI=0 ;}}if(RI==1){ RI=0;Minute=SBUF;LEDBuffer[2] = Minute % 10; //分个位送显示缓冲区LEDBuffer[3] = Minute / 10; //分十位送显示缓冲区TI=0;Display(LEDBuffer,6);ShowState = SHOW_HOUR_ADJ;for(i=0;i<100;i++){Display(LEDBuffer,6);}}}/*——————————————————————————————时钟调整————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void ShowHourAdj(void){ unsigned char i;TYPEDEF_KEY key;LEDBuffer[0] = LED_GOOUT; //熄灭LEDBuffer[1] = LED_GOOUT; //熄灭LEDBuffer[2] = LED_GOOUT; //熄灭LEDBuffer[3] = LED_GOOUT; //熄灭LEDBuffer[4] = Hour % 10; //小时个位送显示缓冲区LEDBuffer[5] = Hour / 10; //小时十位送显示缓冲区Display(LEDBuffer,6);key = GetKey();switch(key){case KEY_ENTER:ShowState = SHOW_NORMAL;break;case KEY_UP:Hour++;if(24 == Hour){Hour = 0;}break;case KEY_DOWN:if(0 == Hour){Hour = 23;}else{Hour--;}break;}for(i=0;i<6;i++){LEDBuffer[0] = Second % 10; //秒个位送显示缓冲区LEDBuffer[1] = Second / 10; //秒十位送显示缓冲区LEDBuffer[2] = Minute % 10;LEDBuffer[3] = Minute / 10;if(TI==0) //——————————给串口送数据,既给matlab 送数据———————————————————————————{ //———————————————————————————————————————————————————————SBUF=LEDBuffer[5-i];while (!TI ); //操作对象是TITI=0 ;}}if(RI==1){ RI=0;Hour=SBUF;TI=0;LEDBuffer[4] = Hour % 10; //小时个位送显示缓冲区LEDBuffer[5] = Hour / 10; //小时十位送显示缓冲区ShowState = SHOW_NORMAL;for(i=0;i<100;i++){Display(LEDBuffer,6);;}}}/*——————————————————————————————显示函数————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/void Display(unsigned char * buf, unsigned char number){unsigned char i;for (i = 0; i < number; i++){LED_SELECT = 0x00; //关所有LED (防止出现闪烁现象)LED_DATA = LEDMAP[*(buf + i)]; //送数据LED_SELECT = ~(1<<light[i]); //显示某1位数码管,其余关闭Delay(90); // 延时约1ms,参数与晶振大小有关}}/*——————————————————————————————定时器五————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/Timer2_server(void) interrupt 5 //*{TF2=0;count_1s++;if(20 == count_1s){Timer1sFlg = 1;count_1s =0;}}/*——————————————————————————————得到按键值————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/TYPEDEF_KEY GetKey(void){TYPEDEF_KEY key = NULL;if( ~KEY_PIN & 0x1c) //有键按下{Delay(1000); //去抖动if(~KEY_PIN & 0X04){key = KEY_ENTER;}else if(~KEY_PIN & 0X08){key = KEY_UP;}else if(~KEY_PIN & 0X10){key = KEY_DOWN;}else{return(NULL);}while(KEY_PIN != 0XFF) //等待键抬起{Delay(2);}return(key);}return(NULL);}B) Matlab GUI界面的编辑效果图如下,操作说明:START点击开始,采集单片机时钟时间,ADJUST点击进入修改模式,同时单片机开发板亦会进入修改模式,EXIT点击关串口,退出界面,GET点击获取当前值,另外一些辅助按钮,滑块按钮都有各自功能,易于理解。
matlab环境下pc机与16位单片机串行通信的研究_图文(精)

入深的从概述USB和驱动程序的基本理论,继而根据DriverWorks的开发流程,重点介绍了其中的USB开发的设计,针对USB及驱动程序开发的初学者,使其能够便捷的了解USB和WDM模型驱动程序,并掌握开发工具中USB驱动开发的要点,快速的进入到驱动程序开发的工作中去。
参考文献[1]王志强.USB设备驱动程序开发技术研究.微计算机信息,2006[2]宁立革.基于嵌入式操作系统的USB驱动程序开发.微计算机信息,2005.[3]武安河.Windows2000/XP WDM设备驱动程序开发[….北京:电子工业出版社,2006.[4]薛园园.uSB应用开发技术大全[”]北京:人民邮电出版社,2007.作者简介田心~航天信息股份有限公司、数字技术研究院、芯片研发工程师,主要研究方向是信息安全领域的芯片研发与设计。
■MATLAB环境下PC机与16位单片机串行通信的研究1.汉泽西1.郭正虹2.彭宏文1.甘志强(1.西安石油大学电子工程学院2.中国石油测井有限公司长庆事业部摘要:文章提出一种PC机与16位单片机串行通信的设计方案。
利用控制工具箱serial类对象实现PC机与单片机SPCE061A间的异步串行通信,给出设计方案的硬件电路和部分软件程序,并通过对实验结果的分析说明串行通信的可靠性。
关键词:MATLAB,单片机,串行通信Research of SeriaI Com rnunication between PC and MCU In MATLAB Envi ronment1.Han Zexi1.6uo Zhenghong2.Peng Hongwen1.Gan Zhiqiang(1.Xi’an Shiyou University,Department of Electric Engineer(2.Chinese Petroleum Oil wel l logging Limited companyChangqing Services departmentAbstract:A method of serial communication between PC and16一bitS MCU in MATLAB Environment iS described.ThiS article employs serial Class object of the Instrument Toolbox provided by MATLAB to real ize the asynchronous serial communication between PC and16一bitS MCUw--SPCE061A.Concludes design method’S hardware Circuit and part of software programe.It alSO explain the reliabilitv of the communication result througth the analysiS of experiment result.Keywords:MATLAB,MCU,Serial Communlcation0.引言随着计算机系统的广泛应用和网络的飞速发展,各种控制设备间的通信功能显得越来越重要。
基于MATLAB的PC机与单片机串行通信实现

REALI ZATI ON ERI OF S AL COM M UNI CAT ON I ON C P AND I M CRO CONTROLLER BAS E
Lu e g n o W n ua g
为了实现 R 一3 C串行 通信 , 要 图 1所 示 的硬 件 支持 。 S22 需
1 引 言
在控制工程 中, 使用大量 的数据采集 系统 , 该类系统 通常是 微处理器 ( 片机) 单 系统 , 其处理 、 分析数据 的能力相对 较低 , 一 般是将这些数据传 送到 P c机 , 由相应 的应用 软件 系统 进行 处 理、 分析和形成 图表 、 打印 , 因此 , 两类 系统必须要实现通 信。实 现方法 和应 用平 台很 多 。。MA L B以其 强大 的科 学 计算 与 TA 可视化功能 、 简单 易用 、 开放式可扩 展环 境 , 别是诸多 的面向 特 不同应用领域的工具箱支持 , 使其在信号处理 、 自动控制等许 多 领域获得广泛的应用 , 成为计算机辅助设计 和分析 、 算法研究 和
维普资讯
第2 卷第6 3 期
20 0 6年 6月
计 算机 应 用与软件
Co u e pl ainsa d S fwa e mp tr Ap i to n ot r c
Vo. 3, . 1 2 No 6
Jn 2 0 u .0 6
基 于 MAT A L B的 P C机 与单 片 机 串行 通 信 实 现
Ab t a t sr c Re l a in meh d o ei l o a i t t o fs ra mmu i ain o C a d P C mir o t l rb s d o T AB i s de . h e ils se i z o c n c t n P n I c o c n r l a e n MA L s t i d T e s r y t m s o oe u a
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MA T L A B与单片机 的串行通信接 口设计
谢芳 芳 , 王焱 玉
( 湖南工业职业技术学院电气工程系 , 湖南 长沙 , 4 1 0 2 0 8 )
[ 摘
要] 为了 在M A T L A B环境 下对单片机现场 采集数据进行 分析处理 , 需要设计单片机与 MA T L A B之 间的 串 行通信
t h e MCU i f e l d . T h e d e s i g n u s e s D S I 8 B 2 0 a n d S T C8 9 C5 2 RC t o c o l l e c t t h e t e mp e r a t u r e d a t a ,a nd t h e MA TL AB o f u p p e r c o mp u t e r a d o p t s he t c a l l ba c k
【 A b s t r a c t J 1 1 1 e s e i r a l c o m m u n i c a t i o n i n t e f r a c e b e t w e e n M A T I AB a n d M C U s h o u l d b e d e s i g n e d f o r t h e a n a l y s i s a n d t r e a t m e n t o f t h e c o l l e c t e d d a m i n
Th e De s i g n o f S e r i a l Co mm u n i c a t i O n I n t e r f a c e Be t we e n M ATLAB a n d M CU
XI E Fa n g — f a ng。 W ANG Ya n —y u
( E l e c t r i c E n g i n e e i r n g D e p a r t m e n t 。 Hu n a n I n d u s t r y P o l y t e c h n i c , C h a n g s h a , 4 1 0 2 0 8 . H u n a n )
e n v i r o n me n t o f MA1 LAB .
[ Ke y w o r d S ] M A T I AB ; M C U ; s e r i a l c o m m u n i c a t i o n ; i n t e r f a c e d e s i g n
第 l 3卷第 6 期
2 0 1 3年 1 2月
湖 南 工 业 职 业 技 术 学 院 学 报
J OU I t NA L OF HU N AN I N D U S T R Y P OL Y T E C HN I C
Vo 1 .1 3 No . 6
De c .2 0 1 3
引言
单片机 系统结构简单 , 成 本低 , 使用方便 , 能适应恶劣 的工 业现场环境 , 在 自动控 制中有着广泛应用 , 但难 以实 现数据的 复杂处理 , 如滤波、 频谱分析等 , 实 时性也不 强。MA T L A B拥有 强 大的数据处理能力及功能丰富的工具箱 , 广泛应用于信号处 理与 自动控制… 。在实 验研 究 中经常将两者结合起 来 , 构建实 时测控系统口 1 。 为了在 MA T L A B环境下对单 片机 现场采集数据 进行分 析处 理 ,需要设计单片机与 M A T L A B之间 的串行 通信
接 口。本设计利用 DS I 8 B 2 0和 S T C 8 9 C 5 2 RC现场采集温度数据 , 上位机 中的 MA T L A B软件采 用回调 函数 实时获取 单片
机传 来的数据并在 图形界面上显示 , 设计给 出了串行通信接 口的硬件方案与程序 。 运行调试 结果表明 , 单 片机与 MAT L A B
i f mc l i o nt o o b t a i nd a t af r o m MC U a n d s h o wt h ed a t ao nt h eg r a p h i c a li n t e r f a c e s , n dt a he h a r d wa r e s c h e mea n dp r o g r a ma l ' eg i v e ni nt h e d e s i n. g T h e r e s u l t s o f o p e r a t i o n a n d d e b u g g i n g s h o w c o r r ct e n e s s a n d e f e c i t v e n e s s o f t h e d a t a c o mmu n i c a l i o n , b a s e d o n w h i e h t h e d a a t a l e d e e p l y na a ly z e d a n d t r at e d e u n d e r t h e