一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 4163|回复: 10
收起左侧

[其他综合] GPS自动授时万年历第三阶段成果汇报

[复制链接]
发表于 2013-12-5 20:32 | 显示全部楼层 |阅读模式
本帖最后由 gongzhu 于 2013-12-5 20:42 编辑

      玩万年历,不得不提醒自己生日到了,拼了命也要搞出点儿进展来,今日倒算清闲无人打扰,算是阶段成果最后一版了,即将完工,再测试几天无大问题就力争下周上程序!

     单独调试GPS时间和定位采集都没有问题,集成到大数字版万年历后首先出现变量溢出,不得不重新维护变量,逐步定义为xdata、idata。编译OK,下载后开机死机加乱码故障。

死机故障

死机故障


     而后把两个结构都定义为xdata,全局字符串定义为idata,砍掉无关变量, 修改了写12864LCD时序问题,然后基本正常!     

    单独GPS版中:
void write_data(uchar Dispdata)
{
    chk_busy();
    RS = 1;
    RW = 0;
    E = 1;
    Lcd_Bus = Dispdata;
    delay(5);   
    E = 0;
    delay(5);
}

    大数字万年历中:
void write_data(uchar Dispdata)
{         
        chk_busy();
        LCM_RS=1; LCM_RW=0; LCM_EN=1;
        Lcd_Bus=Dispdata;
        LCM_EN=0;
}
在写LCD前都加上以下两句就不用中间再加延时了:
        write_com(0x30);
        write_com(0x06);

     GPS和万年历同时开机,电脑同步接收监控gps串口数据,很快万年历显示gps时间,然后定位信息,运行一段时间后万年历时间假死,可电脑程序正常,赶紧捕捉保存接收到的串口数据,通过分析发现:
     $GPRMC数据长度逐渐增加时,接收完全没有问题,可一旦长度减少就“死机”了,待长度增加到正常的72字节时时间又复活走动。
     下载单独GPS版,发现无论数据长短都走时正常,显然程序是没有毛病的,难道移植后出现了变量冲突?
     心想反正有LCD可以显示信息,便将关键节点的 if...else 前后信息显示于LCD同步观察,使用电脑手动输入刚才出现问题的一段串口数据。
     后逐步判断到 sprintf语句后增加了写LCD 就正常了,心想不就是等效增加点儿延时吗,就换成 Delay(50);后再测试就正常了
     一个小疑问:手上的一个大数字版万年历中使用的星期是自编的日期转换函数而不是使用DS1302内部寄存器数据。

可提供一组数据供测试(我的程序标志尾是'\r'回车,手动发送时需注意增加回车键):
$GPRMC,,V,,,,,,,,,,N*53
$GPRMC,235953.00,V,,,,,,,,,,N*76
$GPRMC,082716.00,V,,,,,,,231113,,,N*74
$GPRMC,002030.00,A,3333.89114,N,11858.99972,E,0.070,8.54,281113,,,A*65
$GPRMC,002031.00,A,3333.89095,N,11858.99971,E,0.440,356.21,281113,,,A*62
$GPRMC,002300.00,A,3333.90825,N,11858.99433,E,0.037,3.10,281113,,,A*66
$GPRMC,002301.00,A,3333.90835,N,11858.99434,E,0.033,150.16,281113,,,A*64
$GPRMC,072233.00,A,3333.90255,N,11859.00407,E,0.072,358.99,041213,,,A*6B
$GPRMC,072234.00,A,3333.90257,N,11859.00408,E,0.053,18.70,041213,,,A*52
$GPRMC,072235.00,A,3333.90260,N,11859.00411,E,0.198,4.09,041213,,,A*6A
$GPRMC,072455.00,A,3333.89520,N,11859.00192,E,0.543,184.37,041213,,,A*69
$GPRMC,072728.00,A,3333.88778,N,11859.00346,E,0.353,3.77,041213,,,A*68
$GPRMC,072729.00,A,3333.88746,N,11859.00339,E,0.271,3.74,041213,,,A*6E
$GPRMC,072738.00,A,3333.88653,N,11859.00367,E,0.336,184.79,041213,,,A*61

准备的改进是:
1、改19264或更大的屏幕,把24节气和节日做进来,本公司四班三运转的班别也做进来
2、自动修正时间功能。通过计算两次校时的时间差值,自动计算修正的时间基数。
3、可辅助读取 $GPGSA 数据,判断是否有卫星信息,一旦出现一颗卫星即可以认定此时 $GPRMC 时间准确(非gps模块内部时间)。


基本算完成的系列图片:

首界面

首界面



gps界面

gps界面



一乐中淘的相关配件

一乐中淘的相关配件



蜘蛛网

蜘蛛网



定位成功

定位成功




纪念意义

纪念意义

发表于 2013-12-5 20:42 | 显示全部楼层
祝你生日快乐
发表于 2013-12-5 20:44 | 显示全部楼层
好,非常好!学习
 楼主| 发表于 2013-12-5 20:53 | 显示全部楼层

谢谢坛友的支持,很高兴的是今天还收到小林电子的示波器:

小林电子的示波器

小林电子的示波器



我玩万年历的要求是在纯靠硬件的情况下要做到误差≤1秒/日,然后软件修正保证≤1秒/周,GPS只能当作选配,或是作为时间修正时的基准。
既然玩就玩到极致!
发表于 2013-12-5 21:16 | 显示全部楼层
学习了。我也买了几个模块,希望也能做个GPS授时时钟。
发表于 2013-12-5 21:44 | 显示全部楼层
lz生日快乐 我也在弄,今天重新买的GPS模块到了,3代的就是不一样,40S左右就能定位了。之前买了5个,全TM2代的。

点评

二代的其实40秒也能定位了,咱一直在用的2代GPS模块,如果记忆电池有电的话,10秒以内就定位。  发表于 2013-12-8 19:55
 楼主| 发表于 2013-12-5 22:04 | 显示全部楼层
jesen_2010 发表于 2013-12-5 21:44
lz生日快乐 我也在弄,今天重新买的GPS模块到了,3代的就是不一样,40S左右就能定位了。之前买了5个,全TM2 ...

我的这个是很旧的二手了,板子上是 JSA-S100,ATR0620P芯片, 十来块钱一个,韩国造。玩玩而已了,数据格式和标准格式还是略有不同,完整数据并不是72位。真感谢这个不标准的二手货来锻炼我的程序健壮度!

建议会折腾的人玩二手货,菜鸟还是要搞新品至少也要是比较高档的二手货,不然硬件、软件问题一起袭来招架不住的。
发表于 2013-12-8 19:57 | 显示全部楼层
这个好玩,楼主打算出套件么?
 楼主| 发表于 2013-12-9 18:14 | 显示全部楼层
微澜 发表于 2013-12-8 19:57
这个好玩,楼主打算出套件么?

板子都有现成的卖,大脸福猫的才12元/块,元器件都是一些常见零件,GPS模块也有二手的卖,我就不掺和了。
 楼主| 发表于 2013-12-9 18:16 | 显示全部楼层
本帖最后由 gongzhu 于 2013-12-9 18:20 编辑

此贴不再维护,转移至:https://www.yleee.com.cn/thread-29201-1-1.html

本版积分规则

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

GMT+8, 2024-4-29 17:42 , Processed in 0.068126 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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