单片机与PC机通信
2017-12-21 21:11
190 查看
单片机获取和管理传感器的数据,然后通过串口通信将数据发送给PC。
利用proteus仿真单片机和PC口通信时,需要用到串口调试助手和虚拟串口配置软件。
串口助手用于PC进行数据发送和接收,虚拟串口用于将PC的串口虚拟连接。
P3.0口RXD
P3.1口TXD
对应接上compim的接口
传值给PC
启动工作方式后,由独立按键触发,开始传值。
串口输入相关字符串后,51上显示
利用proteus仿真单片机和PC口通信时,需要用到串口调试助手和虚拟串口配置软件。
串口助手用于PC进行数据发送和接收,虚拟串口用于将PC的串口虚拟连接。
P3.0口RXD
P3.1口TXD
对应接上compim的接口
传值给PC
程序中先设定工作方式
//设定工作方式 void port() { TMOD=0x20; //((T1工作方式2、软启动,设置串口波特率) //串口初始化 TH1=0xfd; //波特率9600 TL1=0xfd; TR1=1; PCON=0x00; SCON=0X40;//串口工作方式1,(REN=0)不允许接收,若允许接收,则SCON=0x50 }
主程序中
SBUF=key[keynum];//发送值至串口端显示 while(!TI);//检测发送标志位TI, TI=0,未发送完 TI=0;//一个字节发送完,TI清0
串口传值到单片机
//设定工作方式 void serial() { SCON=0x50;//串行口方式1 SM0=0;SM1=1;REN=1;(允许接收) PCON=0x00;//T1初始化, TMOD=0x20;//T1设为方式2 TH1=0xFD;//选9600波特,fosc=11.0592MHz TL1=0xfd; TR1=1;//启动T1 }
主程序中
if(RI)//如果接收到数据,就把接收到的数回发给PC { RI=0;//清接收标志 a=SBUF;//读串行口数据 a=a-'a'+'A';//接小收大 SBUF=a;//把从PC机发送过来的数据返回给PC机 while(!TI);//没有发送完等待 TI=0;//清发送完中断标志 }
void uart_init(unsigned int bps) { unsigned char t; SCON=0x80;//工作方式一:9位异步收发 PCON=0x90;//SMOD=1 TI=0;//软件清零,表示未发送完成 EA=1;//开总中断 ET1=1;//开T1中断 ES=1; //开串口中断 TMOD=0x20;//8位自动装载模式 switch(bps) { case 1200:t=0xe8;break; case 2400:t=0xf4;break; case 4800:t=0xfa;break; case 9600:t=0xfd;break; } TH1=t; TL1=t; TR1=1;//开启T1 } /********************循环发送数据 ch为数据口**********************************/ void uart_send(unsigned char ch) { ES=0; //关串口中断 SBUF=ch; while(TI==0);//等待发送完成 TI=0; //清除中断标记 ES=1; //开串口中断 } /*------------------------------------------------ 把读取值转换成一个一个的字符,给串口显示 (两位小数) ------------------------------------------------*/ void To_ascii(unsigned char num) { SBUF=num/100+'0'; delay(200); SBUF=num/10%10+'0'; delay(200); SBUF=num%10+'0'; delay(200); }
单片机传字符串给串口
SBUF=s[b];//发送s数组至sbuf,电脑串口助手赋值
a=SBUF ;//读串行口数据,电脑串口送过来的数据进行赋值
启动工作方式后,由独立按键触发,开始传值。
if(K1==0)//如果独立按键被按下 { b=0;//计数器清零 a=strlen(s);//取数组长度 for(;b<a;b++)//循环取数据发送,从0到a { SBUF=s[b];//发送s数组至sbuf while(!TI);//没有发送完,则等待 TI=0;//清发送结束标志 } while(!K1);//如果按键没有松开,等待 }
串口输入相关字符串后,51上显示
if(RI)//如果接收到数据,就把接收到的数回发给PC { RI=0;//清接收标志 a=SBUF ;//读串行口数据 SBUF=a;//把从PC机发送过来的数据返回给PC机 while(!TI);//没有发送完等待 TI=0;//清发送完中断标志 }
相关文章推荐
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- 基于Arduino的GPS与单片机通信 GPS与PC机的通信
- PC机串口调试助手与单片机通信字符问题
- 单片机与PC机通信USB2COM
- 单片机与PC机之间的通信
- PC机与多个单片机间的通信
- Windows环境下PC机与单片机串行通信的实现
- PC机如何实现与单片机间串行通信
- 【转】用VC++6.0实现PC机与单片机之间串行通信的方法
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- measurement studio测控与单片机通信上位机
- PC机串口通信的工作原理
- labview与单片机串口通信
- 《基于C/S模式的android手机与PC机通信系统的开发》项目
- 基于STC15F2K08S2单片机和JDY-10蓝牙模块的串行通信
- 嵌入式 TCP/IP 协议单片机技术在网络通信中的应用
- 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及需要注意的问题
- 单片机C51串口中断接收和发送测试例程(含通信协议的实现)
- 单片机-串口与PC通信