如何用电脑通过串行口把单片机的数据保存起来,以便下一步处理?代码如何写?

其实我要的是电脑端的程序,单片机的程序我已经搞定的。就是要上位机的解决方案

发送单片机数据到PC,首先要编写单片机程序,再编写PC端程序接收数据保存就可以了。

下面只列出单片机发送数据到串口的程序,PC端可以用串口调试软件测试,数据格式是ASCII码格式。

已经ISIS 7.7sp2 Professional和虚拟串口软件仿真测试通过了。

重新优化了代码:

/*单片机发送P1端口值到串口*/

/*数据格式为:Now P1 Status:[00000000]*/

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

char str[] = "Now P1 Status:[00000000]\r";

sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

sbit P14=P1^4;

sbit P15=P1^5;

sbit P16=P1^6;

sbit P17=P1^7;

main()

{

 uint j;

 //char k;

 uchar i;

 TMOD=0x20;     //定时器1方式2

 TH1=0xfd;     //波特率9600 晶振11.0592MHz

 TL1=0xfd;     

 SCON=0x50;     

 PCON &= 0xef;

 TR1=1;

 IE=0x00;

 while(1)

 { 

  //k=~P1 & 0xF0 ;  //替换P1高位显示   

  //k=k>>4; 

  //if (k < 10)

  //k=k+48;

  //else

  //k=k+55; 

  //str[17]=k;

  //k=~P1 & 0x0F ;    //替换P1低位显示

  //if (k < 10)

  //k=k+48;

  //else

  //k=k+55;

  //str[18]=k;

  str[15]=P17|48;     

  str[16]=P16|48;     

  str[17]=P15|48;     

  str[18]=P14|48;     

  str[19]=P13|48;     

  str[20]=P12|48;     

  str[21]=P11|48;     

  str[22]=P10|48;

       

  i=0;

  while(str[i]!='\0')//发送字符串

  {

  SBUF=str[i];

  while(!TI);

  TI=0;

  i++;

  }

  for(j=0;j<50000;j++);

 }

}

仿真图见http://hiphotos.baidu.com/zaxife/pic/item/f77a5a11c9ff624e203f2e6f.jpg

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-04
你是要编写PC程序,接收单片机数据并保存?网上有现成的串口调试助手,自己编也不难。留下邮箱,我发给你。
第2个回答  2011-01-04
那个蛮复杂的!手机不好输啊!
相似回答