|
楼主 |
发表于 2011-7-30 00:59:56
|
显示全部楼层
再说gps数据处理的问题,首先扫盲一下,大家拿到手的gps输出是叫做rs232或者串口格式gps,这里指的rs232或者是串口指的是输出“串行数据”指的是软件上输出的一串010101的信号。而这个信号是每8个0101二进制代码可以组成一个“0x00h”“数据”,当然实际的输出还有同步用的信号为。这就是我们常说的数据串口 波特率9600,数据位8,校验位 无 停止位1。gps软件上我们不需要管 校验位、停止位的问题。我们需要设置仅仅是
SCON = 0x50; //SCON: serail mode 1(模式1), 8-bit UART, enable ucvr这些在器件手册中还有每本51单片机书中都有,要好好看。
TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz如果使用11M赫兹的晶振是4800的通信速率。
//Baud:9600 fosc=22.1184MHz晶振频率翻倍通信率(波特率)也翻倍。在使用时记得根据自己的最小系统修改。
这样的设置保障了单片机能够识别异步串行通信的字节接收。正确与否。常常错在波特率设置、异步通信设成同步通信、数据位设置成9位,这样就变成我们不在一个频道上,用不同发报数度,说着不同语言。当然不能“听懂”对方所说。
再从硬件上说:串行通信不等于“RS232”rs232指的是通信电平的电气协议满足-15v代表0 +15v代表1 我们的电脑输出rs232大部分输出电平信号在此范围内。而单片机的串口输出叫"TTL232"。输出电气电平幅值是+-5v。也就是+5v代表1 -5v代表0,他们之间需要一个电平信号调理器件——max232芯片。标准的max232cpe芯片只需要0.1uF电容做电荷泵,不幸的我们能买到的芯片90%是假的,需要10uF,甚至22uF的电容才能满足升压的需求。阿莫老大的gps芯片我没有试过猜想估计是3.3v串行信号电平。那么一般的max232就不幸啦,输出信号最大能到+-8v的峰值电平,这样大部分电脑,传统的51单片机不能用的。仿制前一定用个示波器看看,这样成功率会高一些。或者+个三极管信号整理电路最好。
仿制不成功的tx,从这几处检查一下,晶振频率?对应的th1修改对了吗?gps输出5vTTL还是3.3vTTL?gps模块波特率一般是9600,motorola的是4800默认。可以自己修该。先用串口助手看看gps输出,在设置。
最后说一下,谣言的增强51芯片用来学习一下还行,我开源的程序,基本用stc的搞,很省成本的。毕竟玩玩的东西不靠这个吃饭,好用便宜就行。借某位大哥的话,“只动口不动手的"高手"就不要来了。”还补充一点搞高铁系统的也不要来,tmd wx,就想节约成本,我看不起!还有问题电邮我。最近迷上机加工在搞机器人玩。没有时间上论坛。 |
|