单片机接收GPS数据

我们现在用一个双串口的单片机STC12C5A60S2,一个串口和GPS相连,另一个和电脑连,调试的时候这样做,到时候会和GPRS模块连,当用电脑的众口调试助手直接和GPS相连时在波特率为4800能接收到正确的信息,别的波特率下都是乱码,照理说我把单片机接收GPS的波特率调为4800,然后发给另一个串口电脑应该能显示正确信息,我在接收串口的中断里只写了接收SBUF的数据发给S2BUF(另一个串口缓冲器),没有别的事了,可是电脑上显示出的却是乱码,哪位有经验的高手告诉小弟出现这种情况一般是什么原因

第一个,你加一个中间变量,有些单片机不能直接用寄存器赋值。
temp=SBUF;
S2BUF=temp;

第二个
你再查你的波特率。

乱码的原因说明你的硬件是对的
也说明你的通信线路基本上是没问题的
你的GPS的波特率如果在4800没有乱码的话
应该就是4800
你重点查你的单片机的波特率的值。

第三个,你直接让你的SBUF和S2BUF往电脑串口调试助手写数据
不断的发,看看你发送的数据是否正确。

个人经验,这就是一个波特率的设置问题。
不建议动不动就拿硬件说事。

再说,楼主选择双串口的目的,
应该是对GPS进行解码
然后通过另一个串口输出数据。
不仅仅只是想看GPS 的数据
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-29
这个问题太复杂了本回答被网友采纳
第2个回答  2010-11-29
您好:
建议你检查一下硬件电路,看串口的发送、接收、公共端有没有连接正确。而且GPS接口与单片机相连是要用max232进行电平转换的。
其实,你这样接电路是为了看GPS发出的数据么?如果是的话,不用这么麻烦,因为GPS本来就是RS232电平的,也就是说,GPS的接口可以直接通过串口线接到电脑串口上,再用串口调试助手看它发出的数据。
至于之后你想用单片机读取它发出的数据时,就要用到max232将GPS的232电平转到TTL电平再接到单片机的串口了。
至于GPS所用的协议,在百度文库里面有。
希望可以帮到您。
第3个回答  2010-11-29
如果你是单纯地想得到GPS的数据的话。不用非得用第二串口。一个串口就可以了。
第4个回答  2010-11-30
遇到过差不多的问题,我放弃了。原因是没找到答案。