利用MATLAB实现PC机和单片机串口通信实例的电路原理图:
PC将数字(0,1,2,3......255,转换为16进制)传给下位机。
下位机收到后回传这个数字,PC机接收到回传数据后显示出来。
如果PC发送和接收的数据相同,显示通信正常,否则通信不正常。
通信程序发送以16进制数00开始,以16进制数FF表示通信结束。
利用MATLAB实现PC与单片机串口通信任务文件包:
利用Keil C51实现单片机与PC串口通信任务单片机源程序如下:
- /*PC机通过串行口将数字(1,2,3...255)传给单片机,单片机收到后回传这个数字,
- 并存入自己内部一段连续的空间中,PC机接收到回传数据后显示出来,直至传送完结束符255*/
- # pragma db code
- # include<reg51.h>
- # define uchar unsigned char
- void rece(void);
- void init(void);
- uchar re[17];
- /*主程序*/
- void main(void)
- {
- uchar temp;
- init();
- do{
- while(RI==0);
- temp=SBUF;
- if(temp==0x00)
- {rece();}
- else break;
- }while(1);
- }
- /*串口初始化*/
- void init(void)
- {
- TMOD=0x20; //定时器1--方式2
- PCON=0x80; //电源控制
- SCON=0x50; //方式1
- TL1=0xFa;
- TH1=0xFa; //22.1184MHZ晶振,波特率为4800 0xf3 9600 0xfa 19200 0xfd
- TR1=1; //启动定时
- }
- /*接收返回数据*/
- void rece(void)
- {
- char i;
- i=0;
- do{while(RI==0);
- re[i]=SBUF;
- RI=0;
- SBUF=re[i];
- while(TI==0);
- TI=0;
- i++;
- }while(re[i-1]!=255);
- }
复制代码
所有资料51hei提供下载:
03.PC机与单片机串口通信实例1.rar
(69.84 KB, 下载次数: 90)
|