单片机与PC机通信

单片机获取和管理传感器的数据,然后通过串口通信将数据发送给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,(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;//清发送完中断标志
        }
  • 8
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机双机通信涉及到两个单片机之间的实时数据传输和显示,而LCD(液晶显示器)则是一种常用的显示设备。在单片机双机通信中,可以通过将数据通过串口(例如UART)发送到另一个单片机,然后再由另一个单片机将接收到的数据经过处理后显示在LCD上。 首先,需要在两个单片机之间建立双向通信。可以使用串口通信,其中一个单片机作为发送方,另一个单片机作为接收方。发送方和接收方需要通过相同的波特率进行设置,以确保数据的正确传输。发送方将要传输的数据发送到串口,接收方通过串口接收到数据。 其次,接收方单片机需要对接收到的数据进行处理,以便在LCD上显示。这可以通过使用适当的程序进行解析和处理。例如,如果要显示的数据是字符串,可以使用适当的字符串处理函数将接收到的字符转换为字符串,并将其存储在适当的变量中。之后,可以使用LCD显示函数将这些数据显示在LCD上。 需要注意的是,双机通信中的通信协议和数据格式需要在两个单片机之间事先约定好。这样可以确保发送方和接收方之间能够正确地解析和处理数据,以便准确地在LCD上显示。 综上所述,单片机双机通信LCD既涉及到实时数据传输,也涉及到LCD的显示。通过使用串口通信和适当的程序处理,可以实现在两个单片机之间传输数据并在LCD上显示。这样可以实现实时数据的双向传输和显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值