找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7183|回复: 0
收起左侧

MATLAB与单片机串口通信仿真与源程序及说明

[复制链接]
ID:289672 发表于 2018-3-9 15:21 | 显示全部楼层 |阅读模式
利用MATLAB实现PC机和单片机串口通信实例的电路原理图:
07010621261955.jpg
PC将数字(0,1,2,3......255,转换为16进制)传给下位机。
下位机收到后回传这个数字,PC机接收到回传数据后显示出来。
如果PC发送和接收的数据相同,显示通信正常,否则通信不正常。
通信程序发送以16进制数00开始,以16进制数FF表示通信结束。

利用MATLAB实现PC与单片机串口通信任务文件包:
0.png

利用Keil C51实现单片机与PC串口通信任务单片机源程序如下:
  1. /*PC机通过串行口将数字(1,2,3...255)传给单片机,单片机收到后回传这个数字,
  2. 并存入自己内部一段连续的空间中,PC机接收到回传数据后显示出来,直至传送完结束符255*/
  3. # pragma db code
  4. # include<reg51.h>
  5. # define uchar unsigned char
  6. void rece(void);
  7. void init(void);
  8. uchar re[17];
  9. /*主程序*/
  10. void main(void)
  11. {
  12. uchar temp;
  13. init();
  14. do{
  15.    while(RI==0);
  16.    temp=SBUF;
  17.    if(temp==0x00)
  18.     {rece();}
  19.    else break;
  20.   }while(1);        
  21. }
  22. /*串口初始化*/
  23. void init(void)
  24. {
  25. TMOD=0x20;           //定时器1--方式2
  26. PCON=0x80;           //电源控制
  27. SCON=0x50;           //方式1
  28. TL1=0xFa;            
  29. TH1=0xFa;            //22.1184MHZ晶振,波特率为4800 0xf3   9600        0xfa   19200 0xfd
  30. TR1=1;               //启动定时
  31. }
  32. /*接收返回数据*/
  33. void rece(void)
  34. {
  35. char i;
  36. i=0;
  37. do{while(RI==0);
  38.   re[i]=SBUF;
  39.   RI=0;
  40.   SBUF=re[i];
  41.   while(TI==0);
  42.   TI=0;
  43.   i++;
  44.   }while(re[i-1]!=255);
  45. }
复制代码
0.png

所有资料51hei提供下载:
03.PC机与单片机串口通信实例1.rar (69.84 KB, 下载次数: 90)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表