如何进行单片机与PC机的串口数据读取通信?

别人的一块做好的旧板子,片上资源不够,想从串口读数据直接实时存储到PC机上。用c自己写程序,需要知道哪些资源?以前没做过,想自己学着弄,请教下基本流程如何?
比如,如何或获取定义协议、数据格式?谢谢各位~

首先硬件要有MAX232芯片做电平转换 或者直接用pl2303做usb转串口.
软件要有一个串口调试工具.
至于程序就是 (1):设置串口相关寄存器 注意波特率设置
(2):把数据放在sbuf里面
(3):检查是否发送完毕没完等待 发完了就继续放

各种单片机设置方法不一样就给你一个51 的程序你参考一下:

//wx原创 串口调试程序 向pc发送数据 用于调试观察数据
#include<reg52.h>
#include<hdy.h>
sbit k1=p10;
void ckfszf(char zf);
void ckfszfc(char fsgs,char zfc[]);
bit cksnbzw=0;
char fsb[]={"abcdef"};
main()
{
PCON=0x80; //串口设置
TMOD=0x20; // 以T1定时器为波特发生器 波特率:19200
TH1=0xfD;
TL1=0xfD;
TR1=1;
SCON=0X50; //串口设置模式一完毕
while(1)
{
TI=1;
ckfszfc(6,fsb);
ckfszf(' ');
ckfszfc(9,"1234567890");
ckfszf(' ');
ckfszf(' ');
ckfszf(' ');
ckfszfc(12,"AABBCCDDEEFFGG");
ckfszf(' ');
while(1);
}
}
//字符 串口发送函数 由串口向外发送一个字符
//参数1:要发送字符
//返回值:无
//备注: 本函数内部检查上次发送是否结束
// 全局初始化要求:TI=1 保证第一次进入此函数之前TI=1
void ckfszf(char zf)
{
while(TI==0); //等待发送完毕
TI=0;
SBUF=zf;
}
//字符串 串口发送函数 由串口向外发送一个字符串
//参数1:要发送字符串个数 取值:0~255
//参数2:要发送字符串数组名 或字符串本身
//返回值:无
//备注: 本函数内部检查上次发送是否结束
// 全局初始化要求:TI=1 保证第一次进入此函数之前TI=1
void ckfszfc(uchar fsgs,char zfc[])
{
uchar i;
cksnbzw=1;
for(i=0;i<fsgs;i++)
{
ckfszf(zfc[i]);
}
}

纯手打 原创程序 给分!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
有个max232芯片转电平就行了,有卖那种里面有232芯片的线,
一头接单片机串口,一头接电脑串口,没有串口有那种串口转usb的口。

程序么,就是设置下波特率,
想发啥,就往sbuf里面放,就上去了,就这么简单追问

你是说,不需要自己设置协议、数据格式,直接买条你说的含有232芯片的数据线,就可以?
有配套的程序么?还是要自己编写的?
我主要是要读取数据,不是写数据到单片机
这种和串口调试助手有区别么?

追答

协议只是考虑了传输中各种状况。而且不是为了两个点互相传涉及的。目的是多点,有总线的是吧,
你就两个点,上啥协议啊。送数据就这么简单。单片机的程序就是一个串口发送。

要看啥送啥,串口调试助手不就是吧单片机东西送上来吗

本回答被提问者和网友采纳
第2个回答  2013-09-25
百度文库 里的文档很多
相似回答