单片机与PC机通信

来源:互联网 发布:网络写作大神 编辑:程序博客网 时间:2024/05/01 19:23

单片机获取和管理传感器的数据,然后通过串口通信将数据发送给PC。
利用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,不允许接收}

主程序中

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;//工作方式一:8位异步收发,波特率可变,允许接收数据  PCON=0x90;//SMOD=0  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; //开串口中断}
原创粉丝点击