论坛风格切换切换到宽版
  • 29713阅读
  • 86回复

AVR M8+240128屏全中文显示航海用GPS解码装置 [复制链接]

上一主题 下一主题
离线BG4UVR
 
发帖
11207
只看楼主 正序阅读 0楼 发表于: 2007-09-19
2020.4.14:
修正后的完整工程文件已保存在Github和Gitee
https://github.com/bg4uvr/gps
https://gitee.com/bg4uvr/gps

2020.2.9 BUG修正:
非常抱歉:本代码中发现存在一个错误,会造成星期显示为错误结果,因当年未仔细测试加之水平有限,此错误直到今天才被意外发现。

修正方法:

gps.c中,第15行至23行更改为:
  1. //计算星期
  2. extern unsigned char week(unsigned int y, unsigned char m, unsigned char d)
  3. {  
  4.     if(m<3)
  5.     {
  6.         m+=12;
  7.         y--;
  8.     }    
  9.     unsigned char w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
  10.     return w==7?0:w;
  11. }


main.c中,第366行更改为:
  1.     switch(week(Byear,Bmonth,Bday)){


以上更改由于未在板子上实际测试,如有问题请告知。


2009.10.19最新更新:公开源代码
原因是希望我的代码能对大家学习单片机或gps解码,能有所帮助。
a、本源代码任何人可免费使用,而不必通知我,但不得用于任何商业用途。
b、请遵守网络道德,禁止加入个人信息并声称为自己的作品,转帖请注明本帖原始地址:
http://www.hellocq.net/forum/showthread.php?t=160030
c、本代码不保证不存在缺陷。本人精力有限,不保证可以及时回复关于本程序的相关问题。


功能简介:
1、全中文显示
2、显示内容包括:航向、航速、经纬度、里程表(掉电记忆)、日期、时间、高度、定位状态、收星数
3、自动适应4800和9600bps的gps模块。(默认为4800的,9600时可以自动切换,不过启动时要多等上2秒钟。注意:更换gps后需要重新开机启动)。

代码已经过初步测试,如发现存在bug,欢迎指出,我会尽量加以改进。m8内部空间基本用完了,再加其他功能基本非常困难了。

atmega8(l)的熔丝配置说明:(熟悉avr的朋友可以跳过这段)
新的芯片,熔丝是出厂默认的状态,在此状态,读入熔丝配置。
以下关于熔丝的说明中:
1指不编程,在大多数的编程器中,是把勾去掉。
0指编程,在大多数的编程器中,是打上色。
1、必须更改的熔丝
sksel3:0=1111  sut1:0=11  
说明:这2组熔比是设置mcu的时钟源和上电启动时间的。这不是唯一可以工作的的组合,不过为了方便,请选用此组合。
2、建议更改的熔丝
eesave=0
说明:这个熔丝是设置在擦除芯片时,是否擦除内部eeprom。由于eeprom内存储了里程数据,为了再次编程时,保留原来的里程数据,可以编程此熔丝。
bodlevel=0
boden=0
说明:这2个熔丝设置掉电检测的电压值为4伏,和使能掉电复位功能。因为程序中对eeprom区进行写入和读出操作,为了避免掉电时出现意外改写,请编程此熔丝。
3、千万不能更改的熔丝
rstdisbl和ispen
如果改了这2个熔丝,你将无法再使用isp编程器来给芯片编程,必须使用并行编程器才能恢复。
wdton
如果改了这个熔丝,芯片将反复进入重新启动,无法正常工作。因为这个熔丝会使能看门狗,但本程序中未使用它。不过,这个熔丝即使设置错了,仍然可以用isp编程器来改正。
只更改以上的熔丝,并写入芯片,烧入代码后,应该就可以工作了。

代码更新历史记录:
2007.9.19 18[表情]
1、修正速度、航向输出屏蔽无效0位时的对位错误bug
2、修正未定位时仍然增加里程的bug
2007.9.19 19[表情]
1、完善高度数据处理部分的代码,现可对5位、6位格式的高度数据,带小数点与不带小数点的高度数据,带负号与不带负号的高度数据,都能正确对齐显示。
2007.9.20 13[表情]
1、修正上次更新造成的里程表不计数bug
2007.9.20 15[表情]
1、修正里程表计数值比实际值放大10倍的错误。
2007.9.22 12:27
1、实在无聊,加了一只led指示gps的定位状态。没连接灭,没定位闪,定位亮。
2007.9.26 14:51
1、更改原lcd的上电自复位为mcu软件复位,以降低原上电复位对电源上升速率的要求,彻底解决有时上电时lcd显示乱的问题。
2007.9.28 12:45
1、新增编译变量,支持公英制界面编译。可以分别编译出公英制显示界面的代码。
2、改led的状态为:未连接亮,未定位闪,定位灭
2007.9.29  8:15
1、根据朋友要求,更改日期和时间信息从gprmc语句取得,以适合绝大多数的gps模块。造成的问题是,即使gps模块接有备份电池,启动后未定位前,日期显示仍是不正确的。不过定位后自动更新,并在重新上电启动前,一直维持正确。
2007.10.03 15:09
1、修正上次更新造成的日期显示错误

附件已经是最新的更新版本。km_h.hex.txt和knot.hex.txt分别为公、英制显示版本的烧片文件,请下载后将.txt的扩展名删除即可。


[ 此帖被BG4UVR在2020-04-17 12:35重新编辑 ]
附件: M8_240128_GPS.pdf (0 K) 下载次数:1078
附件: hm_h.hex.txt (0 K) 下载次数:714
附件: knot.hex.txt (0 K) 下载次数:652
附件: M8_240128_GPS.rar (0 K) 下载次数:844
离线BG4UVR
发帖
11207
只看该作者 86楼 发表于: 2021-04-22
今天从垃圾堆的最底层把当年的板子翻出来,接上gps模块,意外发现星期的计算竟然是正确的,我已经记不太清楚上次发现星期计算bug的细节了,但当时是没有在这个板子是确认的,只是觉得存在bug,现在反而迷糊了:难道之前并不存在这个bug?好在最后我更新的代码今天经过测试,星期的计算也是正确的。就当上次是完善代码的包含结构吧,早期那个结构不太合理
离线dzyj
发帖
2275
只看该作者 85楼 发表于: 2021-04-21
10年了,当年做的玩意儿都吃灰了,前两天拿出来接电源,不小心给接的12V,估计是AVR烧了。
我就是我,请不要抄用我的图像,如必须抄用请注明出处

欢迎您来北京
离线谈剑超
只看该作者 84楼 发表于: 2013-06-18
强烈顶,虽然这个是几年前的作品,做的很好的GPS。
离线dzyj
发帖
2275
只看该作者 83楼 发表于: 2011-02-08
'
85楼的问题以前也讨论过,应该是我们两个人用的gps模块输出格式有细微的差别,而我的程序没能考虑到你的模块那种情况。
'
是的,原来讨论过,谢谢飘扬老师。
我现在又换了一种gps,还是这样,不知道大家的是不是也有这个问题。
离线BG4UVR
发帖
11207
只看该作者 82楼 发表于: 2011-02-08
85楼的问题以前也讨论过,应该是我们两个人用的gps模块输出格式有细微的差别,而我的程序没能考虑到你的模块那种情况。
离线dzyj
发帖
2275
只看该作者 81楼 发表于: 2011-02-08
'
[表情] [表情] [表情]
'

老大请看85楼,您的是这样的吗?
离线dzyj
发帖
2275
只看该作者 80楼 发表于: 2011-02-08
[quote=业余爱好者]我的用240128屏和12864屏我的都成功了,谢谢楼主[/quote]
我今天又测试了一下我当初做的东西,请教一下各位做成功的朋友。
我做过1602和240128的,都成功了,但是这两种角度都有个问题:
1.比如现在是172度,如果左转仍旧显示100多度,比如实际角度为92度,屏幕显示为192度,也就是百位上的数字不会变。
2.比如现在是340度,左转后会变为200多度。可以正常显示。
3.经过几次比较发现,300多度可以变为200多度,也可以变100多度,但是变为小于90度的,就有错误了,百位上的数字不会变动。
4.如果上边的描述不能表达清楚的话,您可以这样理解,如果屏幕显示的大于90度的话,不管再往哪边转,百位上的数字就永远变不回零了,不知道这么说能不能明白。
不知道大家做的是不是也有这种情况,原来我用的是motorola的ut板,前些日子又换了一个韩国产的gps,可是显示的还是这样的。
离线dzyj
发帖
2275
只看该作者 79楼 发表于: 2011-01-29
[quote=世纪]有没有标准线路图啊[/quote]
1楼就有呀。
离线世纪
发帖
2155
只看该作者 78楼 发表于: 2011-01-29
有没有标准线路图啊
发帖
91
只看该作者 77楼 发表于: 2011-01-25
我的用240128屏和12864屏我的都成功了,谢谢楼主
离线BG4UVR
发帖
11207
只看该作者 76楼 发表于: 2011-01-06
[quote=使者]谢谢楼主提醒,又从头到位看了一遍,(有些贴被删)难道公制的烧片文件就是?还请明示。[/quote]

1楼里这样写的

附件已经是最新的更新版本。km_h.hex.txt和knot.hex.txt分别为公、英制显示版本的烧片文件,请下载后将.txt的扩展名删除即可。
离线使者
发帖
31
只看该作者 75楼 发表于: 2011-01-05
'
俺到是有成品,这东西还是自己做着玩有意思,另外如果你想达到上述功能其实好多带gps的手机就能达到的。
'
自己做,得分几个地方购买器件。如果您玩够了,可以转让的化站内信告诉一声,价格合适我还是想要成品。
离线dzyj
发帖
2275
只看该作者 74楼 发表于: 2011-01-03
[quote=使者]哪位有闲置的成品转给我?[/quote]
俺到是有成品,这东西还是自己做着玩有意思,另外如果你想达到上述功能其实好多带gps的手机就能达到的。
离线使者
发帖
31
只看该作者 73楼 发表于: 2011-01-03
哪位有闲置的成品转给我?
离线使者
发帖
31
只看该作者 72楼 发表于: 2011-01-03
谢谢楼主提醒,又从头到位看了一遍,(有些贴被删)难道公制的烧片文件就是?还请明示。
离线BG4UVR
发帖
11207
只看该作者 71楼 发表于: 2011-01-03
楼上看贴不仔细啊。。
离线使者
发帖
31
只看该作者 70楼 发表于: 2011-01-01
请问如何将显示改成公里?另请各位推荐的适合本装置使用的gps模块
离线BG4UVR
发帖
11207
只看该作者 69楼 发表于: 2010-12-19
71楼短信已回复。希望你还是找到你gps模块的设置程序,把时间输出从东9区改成utc才是最简单的方法。

72楼,没成品……
离线BG6QCB
发帖
5262
只看该作者 68楼 发表于: 2010-12-18
有成品吗