一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3180|回复: 11
收起左侧

[51单片机] 让GPS速度程序搞的有点小崩溃。一旦定位好了,就显示不正常了

[复制链接]
发表于 2015-8-23 21:51 | 显示全部楼层 |阅读模式
本帖最后由 qduwg 于 2015-8-25 01:07 编辑

本来想完善一个GPS授时时钟和速度表的。我已经很好的显示了时间和日期了。还想试试显示一下速度信息。又增加了一个转换速度的过程。这下好了。导致问题屡屡出现了。该死不能让你好好的正常显示速度信息。不知道是哪里的毛病。找了两天了。没有弄明白怎么回事。

我是用的STC89C52RC的单片机。程序附在下面了。请高手回答。另外请教怎么用串口助手查看程序内某个点的数据结果?我知道用SBUF=变量名。设置好中断参数。但是好像不行。串口助手看不到结果。不知道为什么。我对用串口助手调试程序还不是很熟悉的。
我的程序附在下面了。
请高手帮我分析一下吧。
http://pan.baidu.com/s/1sjp8B8L


下面是未定位的时候:
未定位时显示.jpg



下面是成功定位的时候:时间日期不见了。
GPSSPEED问题12.jpg

发表于 2015-8-23 22:27 | 显示全部楼层
写个测试程序,瞄一眼感觉觉得buf是显示的数据,然后GetComma把数据破坏掉了。。。。
 楼主| 发表于 2015-8-23 22:47 | 显示全部楼层
jckimi 发表于 2015-8-23 22:27
写个测试程序,瞄一眼感觉觉得buf是显示的数据,然后GetComma把数据破坏掉了。。。。

getcomma怎么可能把BUF数据破坏了呢?这个值得探讨了。
发表于 2015-8-23 23:06 | 显示全部楼层
sudu[b+i]改成sudu[i]
 楼主| 发表于 2015-8-24 09:21 | 显示全部楼层

我看到了。我马上查看。
发表于 2015-8-24 18:03 | 显示全部楼层
似乎是数组指针的问题
 楼主| 发表于 2015-8-24 23:33 | 显示全部楼层
gongzhu 发表于 2015-8-24 18:03
似乎是数组指针的问题

请问是哪个地方的问题呢?
发表于 2015-8-25 00:47 | 显示全部楼层
本帖最后由 gongzhu 于 2015-8-25 00:48 编辑
qduwg 发表于 2015-8-24 23:33
请问是哪个地方的问题呢?

第一,你的速度数组在找小数点位置时错了,如下红色位置sudu[]不“干净”了,不崩溃算是奇迹了
          uchar idata buf[80], sudu[5];
.........
                    for(i = 0; i <= d; i++)
                        sudu = buf[b + i]; //把速度取出来放另外一个数组。

                    for(i = 0; i <= d; i++)
                    {
                        if(sudu[b + i] == '.')
                        {
                            j = i;
                            break;
                        }            //找小数点位置
                    }
.........


第二,你既然知道是在速度转换处出的问题,那不转换直接显示“节”看看能否正常那样不就很快找到故障点了?


第三,玩C51还是要打实C语音基本功的,字符、数组、指针是基础的基础。
其次如果我写程序的话,不会用那多for绕来绕去的,char和float转换直接
#include <stdlib.h>

tmp3 = atof(sudu ) * 1.852; //计算公里数



 楼主| 发表于 2015-8-25 01:03 | 显示全部楼层
gongzhu 发表于 2015-8-25 00:47
第一,你的速度数组在找小数点位置时错了,如下红色位置sudu[]不“干净”了,不崩溃算是奇迹了
         ...

呵呵,非常感谢,你说的那个数组的下标我已经修正过的了。懒得截图了。我已经解决了问题了。如你所说,可以用atof。不过,我自己写这个过程,按理也应该等同atof的。不知道为什么好像截取buf数组的速度信息时,取得不准确。用串口助手看过。好像很乱。


发表于 2015-8-25 08:47 | 显示全部楼层
qduwg 发表于 2015-8-25 01:03
呵呵,非常感谢,你说的那个数组的下标我已经修正过的了。懒得截图了。我已经解决了问题了。如你所说,可 ...

这种1602显示不正常的,按经验一般都是程序跑飞了,无非就是数组指针最容易出问题

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-14 21:28 , Processed in 0.068001 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表