标题: MATLAB与单片机串口通信仿真与源程序及说明 [打印本页]

作者: lllooeasd    时间: 2018-3-9 15:21
标题: MATLAB与单片机串口通信仿真与源程序及说明
利用MATLAB实现PC机和单片机串口通信实例的电路原理图:

PC将数字(0,1,2,3......255,转换为16进制)传给下位机。
下位机收到后回传这个数字,PC机接收到回传数据后显示出来。
如果PC发送和接收的数据相同,显示通信正常,否则通信不正常。
通信程序发送以16进制数00开始,以16进制数FF表示通信结束。

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


利用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. }
复制代码


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








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1