首页 GPS精准授时和频率是发生系统

GPS精准授时和频率是发生系统

举报
开通vip

GPS精准授时和频率是发生系统 BUPT 北京邮电大学 电路实验中心 GPS精准授时和频率发生系统 项目人员:刘成城、韩宇飞、陆斌 电子邮件: pekinlcc@126.com Blog: www.techfans.net 日期:2008 年 09 月 16 日 LiuCC 2008/9/17 创新实验报告之三:创新实验研究论文 2 / 42 目录 【摘要】 .............................................

GPS精准授时和频率是发生系统
BUPT 北京邮电大学 电路实验中心 GPS精准授时和频率发生系统 项目人员:刘成城、韩宇飞、陆斌 电子邮件: pekinlcc@126.com Blog: www.techfans.net 日期:2008 年 09 月 16 日 LiuCC 2008/9/17 创新实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 之三:创新实验研究论文 2 / 42 目录 【摘要】 ........................................................................................................................................... 3 【关键词】 ....................................................................................................................................... 3 【ABSTRACT】................................................................................................................................... 3 【KEY WORDS】 ................................................................................................................................ 3 【系统设计】 .................................................................................................................................... 4 【软件设计】 .................................................................................................................................... 8 【系统调试】 .................................................................................................................................. 25 【系统指标测试】 .......................................................................................................................... 32 【结论】 ......................................................................................................................................... 33 【参考文献】 .................................................................................................................................. 34 【致谢、心得、体会】 .................................................................................................................. 35 【附录】 ......................................................................................................................................... 40 本报告 3-6、8-18、25、27-29、31-34、39 页由刘成城编写; 7、19-21、25-26、35-36 页由陆斌编写; 22-24、30、37-38 页由韩宇飞编写。 创新实验报告之三:创新实验研究论文 3 / 42 【摘要】 GPS(Global Positioning System,全球定位系统)是世界上最完善的卫星导航 系统。它不仅有覆盖全球的实时、连续的高精度的三维定位能力,同时也有精准 的授时功能。目前全球都在使用 GPS 卫星信号,产生全球同步的时间,和准确的 频率。目前在国防、通信、勘探等各个领域都有广泛应用,在移动通信基站中的 应用尤其广泛。 本次的研究主要使用 PIC18F452 单片机作为中央处理单元,通过它来控制 Trimble 公司的 Lassen IQ GPS 接收模块接收卫星信号,通过算法处理,得到 GPS 时间,再通过处理 GPS 时间和 UTC(Coordinated Universal Time,协调世界时) 的误差,得到 UTC 时间,这就是最精准的时间了。同时通过处理 Lassen IQ 产生 的 PPS(Packet Per Second),输出频率的精度可以达到 5E-11。 【关键词】 GPS,授时,PIC,精准时间 【Abstract】 GPS (Global Positioning System) is the most powerful Global Navigation Satellite System (GNSS). It doesn’t provide only the real time and continuously 3D positioning service, but also have a very accurate timing function. It’s now being used everywhere around the world to provide the most accurate time and the ever best frequency. Fields like National Defense, Tele-communication and Nature Resource Exploration cannot even run normally without the GPS Timing Unit, and this phenomenon is most obviously in the Mobile Telecommunication Station. In this research, we use the PIC18F452 MCU as the central processing unit to control the Trimble’s Lassen IQ GPS receive module receiving the GPS signal. After processed by the algorithm, we can get the GPS time which has a constant offset with the UTC (Coordinated Universal Time). After removing this offset, we can get the most accurate UTC time which is the most accurate time of the world. By processing the PPS (Packet Per Second) generated by the Lassen IQ, the output frequency accuracy can reach 5E-11. 【Key Words】 GPS, Timing, PIC, Precise Time 创新实验报告之三:创新实验研究论文 4 / 42 【系统设计】 1. 原理模块框图 该系统的信号主要从 GPS接收机传输至 PIC单片机,经过 PIC的处理,得到 时间信息并输出。 分频或者倍频 算法处理 输出精准时间信息 精准频率输出 PIC18F452 显示器 输出待处理的时间信号 控制开始、终止 以及选取语句 天线 GPS 接收机 流程图 1 创新实验报告之三:创新实验研究论文 5 / 42 2. 模块工作原理说明 a) Lassen IQ GPS 模块 IQ模块只有邮票大小,但是功能极其 强大。它是 12通道的接收模块,在选取到 健康的卫星以后,可以给出准确的定位信 息和时间信息。 我们使用的主要是IQ模块的精密授时 功能。在同步通信基站和环境数据捕捉上, 都需要相当精准的时间。通过 TSIP、TAIP、 以及 NMEA0183 语句都可以从芯片接收到 的数据中读取出精准的时间,另外 IQ还提 供 PPS,可以用于产生精准的频率。 这里要介绍一下 GPS 时间信号。GPS 卫星通过接收地面授时中心以及自己的高精度晶振,产生出精准的时间。 不同于我们熟悉的年月日的时间 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示方法,GPS 时间是由星期数和当前 星期的日期数构成。日期数由一个 10bit 的 C/A码或者 P(Y)码表示。每 过 1024 个星期(19.6 年),GPS 时钟的星期数将被置零一次。GPS 时间 的第零个星期是从 1980 年一月 6 日 00:00:00 UTC(00:00:19 TAI) 开始的,第一次重新置零是在 1999年八月 21 日 23:59:47 UTC。为了得 到准确的时间,GPS接收器必须知道最近的 3584天内的某个日期,从而 准确的翻译出 GPS 数据信号。为了减小这个麻烦,新一代的现代 GPS 将 使用 13bit的信号传送 GPS导航信号,它的置零周期为 8192个星期,就 是 157年,也就是在 2137年重新置零。 另外,GPS 信号中还包含了 GPS 时钟和 UTC 之间的误差的信息,在 2008 年 9 月,也就是我们研究的这段时间里,两者误差为 14 秒,这是 我们通过接收卫星信号并且将其解码得到的准确数据。接受方将接收到 的 GPS时间扣除掉这个误差的影响,就得到了协调世界时 UTC。 IQ的 TSIP模式下输出的信号里,就是包含了星期数和当前星期的秒 数以及 GPS和 UTC时间直接的误差。不一样的是,IQ输出的 GPS周数是 Extended GPS Week,是 2 Bytes的一个数据,可以最多表示 65535,而 不同于 GPS 周数最大表示的 1024 周。另外,为了得到精确的时间,IQ 在接收到卫星信号,但是没有定位时,会输出一个时间,就是说输出时 间是在定位之前完成的。它会把 5M长的天线电缆传输数据的时间也算上 后才输出。但是这个时间相对于定位完成后输出的时间精度要低。因为 定位完成后,IQ会利用位置信息,把卫星信号传送到天线的时间也考虑 到,并且进行了处理,得到的时间就会非常准确,基本上就是 GPS 时间 本身的误差。我们就可以将这个时间用在很多需要精确授时的领域里。 IQ还有许多其他的优点,比如耗电极低,仅仅 90mW。支持的 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 也 比较多,有 TSIP、TAIP、NMEA 0183以及 DGPS。 通过以上的总结,IQ跟其他公司的产品相比较,确实是非常的优秀。 IQ算是世界上最大的 GPS授时公司 Trimble在民用授时领域一款很棒的 产品了。 图表 1 创新实验报告之三:创新实验研究论文 6 / 42 b) GPS天线 GPS 天线和我们正常见到的天线都很不一样。看起来它不是一个天 线。由于 GPS卫星距离地面比较遥远,而且 GPS信号属于超窄带的信号, 为了防止地面许多强信号的干扰,GPS 天线的设计就变得尤其重要。我 看到一些 GPS高精度天线的参数,它可以在 L1频段(即 1575.42 MHz) 处,只有 50Hz的滤波带宽,可以想象实现的难度。 天线设计成圆盖形,是为了更方便的接收各个方向的卫星信号。卫 星信号非常微弱,在使用时候,天线一定要放在开阔的室外。 天线单元由接收天线和前置放大器两个部件组成,如图下图所示。 GPS接收天线的作用,是将卫星来的无线电信号的电磁波能量变换成 接收机电子器件可摄取应用的电流。天线的大小和形状十分重要,因为 这些特征决定了天线能获取微弱的 GPS 信号的能力。由于 GPS 信号是园 极化波,所以所有的接收天线都是园极化工作方式。尽管有多种多样的 条件限制,仍然有许多不同的天线类型存在,如单极的,双极的,螺旋 的,四臂螺旋的,以及微带天线。 我们使用的只是一款比较普通的 GPS 接收天线,相比那些高精度的 天线,抗干扰能力要弱一些,而且可能防震防雷方面也要差点,但是对 于我们的实验,他已经完全够用了。 有个要点出的就是,GPS天线的电缆要求是相当严格的。不可以随意 选用电缆的材料,也不可以随意规定电缆的长度。因为在精确定时的时 候,这段电缆传输信号的时间也是要计算在内的。虽然是一个很便宜的 GPS天线(购买 IQ 赠送的),但是科技 含量还是很高的。 右图就是我们 使用的 GPS天线。 金属反射器 滤滤波波放放大大器器 金属底板 介介质质 接口 连接器 图表 3 图表 2 创新实验报告之三:创新实验研究论文 7 / 42 c) 数据采集模块: (1)通用异步收发器 UART: 试验中,由于单片机 PIC18F452 和 GPS 定位芯片内部均集成了串行通信 模块 UART(通用异步收发器),所以对 GPS 定位芯片的数据采集,采用了 异步串行通信的方式。 如原理图所示,将 GPS 定位芯片的串口数据发送端(TXD)与单片机的 串口通信接收端(RC7/RXD)相连,再将 GPS 芯片的接地端与单片机串口 通信的接地端相连,即可以完成数据采集电路的搭建。 (2)GPS 卫星信号采集: 在采集 GPS 卫星信号的过程中,单片机作为 USART 异步接收器。当器 件工作在异步串行通信方式时,UART 模块在单片机的 RXD 引脚上接受 的 码型,采用的是标准的不归零(NYZ)码;串行信息的编码方式(也是 成帧 方式)采用的是 1 位起始位,8 位或 9 位数据和 1 位停止位,IQ 芯 片传送的 1 帧数据(包含起始位,数据位和停止位)中数据为 8 位。单片 机内提供了 一个专用的 8 位波特率发生器 BRG,可以利用来自时基振荡器 的系统时钟信 号,产生标准的波特率时钟,控制数据的采样点。 在进行通信时,对端传来的数据从单片机的 RC7/RX 引脚引入;在波特 率发生器提供的采样定时信号控制下,由数据检测和恢复电路对于输入 的信 号波形进行采样,已恢复数据的本来面目,然后在波特率发生器提 供的移位 时钟脉冲控制下,把恢复得来的 8 位(或 9 位)串行数据,以及 起始位和停 止位一步一步的移入 RSR 寄存器。 一旦采样到停止位,接受移位寄存器的 RSR 就把收到的 8 位数据,装载 到接收寄存器 RCREG(如果 RCREG 为空的话);这样就完成了“串行 —并 行”变换;接着设置接收中断请求标志位,即置 RCIF=1, 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 CPU 来读取 接收缓存器中的数据。RCIF 位是一个只读位,不能由软件清 0,而 是在 RCREG 寄存器中的数据被 CPU 读出后或者 RCREG 寄存器为空时, 由硬件 自动清 0。 串行异步接收器时序图: 图表 4 创新实验报告之三:创新实验研究论文 8 / 42 【软件设计】 1. 系统流程图 YES 处理数据并直接存储 算法处理子程序 处理存储的时间包数据,转换成 UTC 时间数据 主程序 串口及液晶的初始化 INITIAL 设置相关寄存器,初始化 结果送显(初始化后结果为 0) 有无数据送入? YES NO 进入中断处理子程序 读取包头标志 是否为时间包? 中断返回 NO 延时子程序 流程图 2 创新实验报告之三:创新实验研究论文 9 / 42 2. 各模块子程序原理图及设计说明 a) TESTYEAR 子程序 处理后的 FIRSTDAY-365 用以上处理后的 FIRSTDAY-366 够减? 进入处理月数,YFLAG 置 1 清 空 相 应 的 存 储 空 间 , YEAR , MONTH,DAY 依次设置为 1980,01,06 读取 GPS 周数,类型为 INT16,2 Bytes 用这个两字节周数*7算出本周首日距离1980年1 月 6 日(GPS 时间原点)的天数 FIRSTDAY 用以上算得的天数减去 4 年的总天数 够减? YEAR+4 存入 YEAR NO YES NO YES YEAR+1 存入 YEAR 够减? 进入处理月数,YFLAG 置 0 NO YES YEAR+1存入YEAR 流程图 3 创新实验报告之三:创新实验研究论文 10 / 42 该程序完成的是采用当前距离 GPS 时间原点的天数算出年份。 由于该数据的类型是 INT16,所以处理起来不是很复杂。 FIRSTDAY 变量是用于存储距离 1980 年 1 月 6 日的天数,最终是为了算 得当前星期第一天的日期数,因此变量名为 FIRSTDAY。 YFLAG 变量是用于标注当前年份是否为闰年,YFLAG=1 为闰年。这是 为了 TESTMONTH 子程序处理时有一个标志位。 该算法的难点就在于如何处理闰年的问题上,我的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是用 FIRSTDAY,即当前星期首日距离 1980 年 1 月 6 日的天数每次减去四年的总 天数,如果够减进入下一回合继续减。如果不够减,先减一年闰年的天数, 原因是起始年份 1980 年为闰年。如果够减再依次减 365,直到不够为止。这 样就会得到准确的当前的年份,而且 FIRSTDAY 里面的数据也会小于 366, 可以进入 TESTMONTH 检测当前的月份了。 当然这个时候还有一个要注意的地方,每次减去的是整一年的天数,在 最后的时候有可能会使年份实际上已经加 1 了,而程序却没有检测到。比如 1981 年 1 月 2 日,距离 1980 年 1 月 6 日不到 366 天,运行该程序会得到这 年依然是 1980 年。所以,这个结果需要在 TESTMONTH 中进行修正。 创新实验报告之三:创新实验研究论文 11 / 42 b) TESTMONTH 子程序 FIRSTDAY-31 够减 不够减 5 月 FIRSTDAY 日 FIRSTDAY-30 够减 不够减 4 月 FIRSTDAY 日 读取经过处理的 FIRSTDAY YFALG=1? FIRSTDAY-26 不够减 1 月 FIRSTDAY+6 日 YES 够减 NO FIRSTDAY-28 FIRSTDAY-29 不够减 2 月 FIRSTDAY 日 不够减 2 月 FIRSTDAY 日 FIRSTDAY-31 够减 不够减 3 月 FIRSTDAY 日 FIRSTDAY-30 够减 不够减 6 月 FIRSTDAY 日 FIRSTDAY-31 够减 不够减 7 月 FIRSTDAY 日 FIRSTDAY-31 够减 不够减 8 月 FIRSTDAY 日 FIRSTDAY-30 够减 不够减 9 月 FIRSTDAY 日 FIRSTDAY-31 够减 不够减 10月FIRSTDAY日 FIRSTDAY-30 够减 不够减 11月FIRSTDAY日 FIRSTDAY-31 够减 不够减 12月FIRSTDAY日 1 月 FIRSTDAY 日 YEAR+1 流程图 4 创新实验报告之三:创新实验研究论文 12 / 42 该程序就是使用 TESTYEAR 里面经过处理的 FIRSTDAY,计算出月数 和日期的子程序。没有什么难点,只是在 2 月份的时候判断一下 YFLAG 是 否为 1,来决定这年是不是闰年,从而决定 2 月份的天数。 还有一个小地方需要注意一下,GPS 时间原点是在 1 月 6 日,所以在处 理一月的时候需要在开头和结尾都要处理一下。开头处理是处理 6 号及以后 的日期,最后的时候是为了解决 TESTYEAR 中的处理后的漏洞。 从流程图可以很清晰的看到该算法的过程和思路。 创新实验报告之三:创新实验研究论文 13 / 42 c) 把浮点表示的秒数转换成整形 由于 GPS 当前星期的秒数是 SINGLE 类型的,而单片机是无法直接处理 SINGLE 数的,所以在单片机处理之前需要将其转换成 INT 数,再做后续的 处理。 这部分算法由两个部分组成,以上流程图表示的是计算浮点数幂次 EXP 的部分。 由浮点数的结构决定了该算法的流程,其结构如下所示: 符号位 指数位 小数部分 指数偏移量 单精度浮点数 1 位[31] 8 位 [30-23] 23 位 [22-00] 127 双精度浮点数 1 位[63] 11 位[62-52] 52 位[51-00] 1023 这两种浮点数都是按照 IEEE(国际电子电器工程师协会)制定的 IEEE 浮 点数表示法来进行运算的。这种结构是一种科学表示法,用符号(正或负)、 指数和尾数来表示,底数被确定为 2,也就是说是把一个浮点数表示为尾数 乘以 2 的指数次方再加上符号。 对于我们使用的送显时间来说,秒的小数部分不是那么重要,因此我只 做了浮点数取整的运算。大体的原理就是把浮点数的小数部分前面加一位 1, 算出浮点数的幂次 EXP 后,取出前 EXP 位数据存入另外一个空间,就是浮 点数的整数部分了。此算法就是完成的算 EXP 的算法。完成后就可以进行 下面的运算了。 将第一字节的 16 进制数乘 2,等价为左移一位,存入 EXP 检测第二个字节第一位是什么,加在 EXP 上 EXP 减去 7F,得到准确的幂次 EXP 加 1,得到要取的数位数 返回 流程图 5 创新实验报告之三:创新实验研究论文 14 / 42 这个算法是把浮点数取整的后半部分,将浮点数转换成整数并存储。基 本原理就是把浮点数取出前 EXP 位最后复制到另外的空间去。这里的难点 是复制,我使用了错位相与,然后相加,最后就会得到浮点数的整数部分。 这个整数就是当前星期的秒数。接着就可以进入下面算天数的子程序了。 COUNT>23? YES NO MOVL24 做COUNT-16次右移位 YIWEI1,进行错位复制 YES MOV24,秒数为 0 TESTDAY COUNT>15? COUNT>16? YES YES NO MOVL16 做 COUNT-8 次右移位 YIWEI2,进行错位复制 NO MOV16,不需要移位,取 1 字节 COUNT>8? YES NO MOV8,不需要移位,取 2 字节 COUNT>7? YES NO MOVL8 做 COUNT 次右移 YIWEI3,进行错位复制 将 41H 存储的数据第一位置 1,作为整数部分 用 24-EXP,得到向右移位的次数 COUNT COUNT>0? NO MOV0,不需要移位,取 3 字节 流程图 6 创新实验报告之三:创新实验研究论文 15 / 42 d) TESTDAY 子程序 这个主程序完成的就是用当前星期的秒数计算当前星期的天数的子 程序。用当前总秒数减去一天的总秒数,如果够减就进入下一个循环, 并把日期加 1。不够减就退出,准备进入下一个子程序。在这个减法过 程中,结果覆盖被减数,也就是总秒数的存储空间,以便下一层的运算。 读取处理后的 GPS 当前星期的秒数 SEC,数据类型是 INT DAY 清零 DAY里面的数字就是这周的第几天 NO 比较 SEC 是否大于 86400 秒(一天的秒数) 大于? YES DAY+1 存入 DAY SEC-86400 结果存入 SEC 流程图 7 创新实验报告之三:创新实验研究论文 16 / 42 e) TESTHOUR 子程序 这个主程序完成的就是用 SEC 计算当前天的小时数的子程序。用当 前总秒数减去一小时的总秒数,如果够减就进入下一个循环,并把 HOUR 加 1。不够减就退出,准备进入下一个子程序。在这个减法过程中,结 果覆盖被减数,也就是总秒数的存储空间,以便下一层的运算。 读取处理后的 SEC,数据类型是 INT HOUR 清 0 HOUR 里的数就是这天的第几小时 NO 比较 SEC 是否大于 3600 秒(一小时的秒数) 大于? YES HOUR+1 存 HOUR SEC-3600 结果存入 SEC 流程图 8 创新实验报告之三:创新实验研究论文 17 / 42 f) TESTMIUTE 子程序 这个主程序完成的就是用 SEC 计算当前小时的分钟数和秒数的子程 序,程序完成后返回,即已经完成了所有的运算,并把当前时间值存入 了相应的存储空间。用当前总秒数减去一分钟的总秒数,如果够减就进 入下一个循环,并把 MINUTE 加 1。不够减就退出,准备进入下一个子 程序。在这个减法过程中,结果覆盖被减数,也就是总秒数的存储空间, 运算结束后就得到了现在的分钟数,最后得到的剩余的秒数就是那一分 钟的秒数。 MINUTE 里的数就是这小时的第几分 钟 NO 读取处理后的 SEC,数据类型是 INT MINUTE 清零 比较 SEC 是否大于 60 秒(一分钟的秒数) 大于? YES MINUTE+1 存 MINUTE SEC-60 结果存入 SEC SEC 里的数就是这分钟的第几秒 堆栈返回 流程图 9 创新实验报告之三:创新实验研究论文 18 / 42 g) 三字节减法 这个算法难度不大,只要理清思路就可以做出来。其中相减得到负数变换成正数主 要是用了补码运算的理论。 将减数、被减数分别存入相应空间 RLT、SEC SECL-RLTL 够减? YES 结果存入 SECL NO 将结果换算成相应正数 SECM-1 SECM-RLTM 够减? YES 结果存入 SECM SECH-RLTH 结果存入 SECH NO 将结果换算成相应正数 SECH-1 返回结果 创新实验报告之三:创新实验研究论文 19 / 42 h) 异步串行通信流程图: 试验中采用采用单片机的 USART(通用同步/异步收发器)模块接受 GPS 芯片的数据,软件设计过程中,单片机作为异步接收器,设计流程如下: 选择合适的波特率,然后计算出 SPBRG 中应有的初始值,并将其置入 SPBRG 中,还需置 BRGH=1,选择高速波特率。 设置 SYNC=0 及 SPEN=1,使其工作于异步串行工作方式 使用中断功能,置 RCIE=1 置中断屏蔽位 GIE 和 PEIE 为 1 置 CREN=1,激活接收器 当一个字节接收完成后,产生中断请求(RCIF=1),进入中断处理 读 RCREG 寄存器中已经接收到的 8 位数据 如果发生了接受错误,通过置 CREN=0 以清除错误标志位 主程序开始 设置 RC6 为输入(USART TX 引脚) 设置 RC7 为输出(USART RX 引脚) 装载波特率发生器为 9600bd 使能 USART 发送并设波特率为高 速 开放 USART 的接收中 断 使能 USART 连续发送, 同时使能 USART 端口 使能全局中断使能位 使能全局中断使能位 中断服务子程序 是 USART 中 断请求? 串口接收端检测到一帧数 据,进行处理 中断返回 流程图 10 创新实验报告之三:创新实验研究论文 20 / 42 i) 异步串行通信中断处理中的数据采集流程图: 存储当前数据 串口接收端检测到一帧 数据,进入中断处理 Temp 中的 值为 10 当前的数 据为 10 将当前数据 10 存入 Temp Temp1 中 的值为 41 Temp2 中 的值为 10 当前数据 是否为 10 当前数据 为 10 将当前数据 10 存入 Temp2 存储一个 10 到分配的存 储区,清空 Temp2 存储完成,清空 Temp, Temp1,Temp2,Temp3, 进行数据处理 将当前数据10存入Temp1 exit Exi t 跳出中断,继续检测下一帧 数据 当前的数 据为 10 流程图 11 创新实验报告之三:创新实验研究论文 21 / 42 试验中通过单片机的串口采集数据,所需数据包的格式为包头为 10 和 41 两个十六进制数,包尾是 10 和 03 两个十六进制数。GPS 芯片为了区别时 间信息中所含的数据 10 和包尾标志数 10,当时间信息中含 10 时,芯片会再 送一个 10 进行区分,即假设时间信息为 10 14,则 GPS 芯片传送的数据为 10 10 14。所以,数据采集部分软件的设计,主要实现包头与包尾的识别, 以及对时间信息的准确存储。软件设计流程如下: 定义变量 Temp,Temp1,Temp2,Temp3,其中 Temp 和 Temp1 分别用 来标记包头 10 和 41,Temp2 用来标记时间信息中所含的 10,Temp3 作为临 时存储数据的变量。 检测包头 10 和 41。当串口接收端接收到数据是,首先检测 Temp 中的值 是否为 10,如果不是 10,则检测当前接收到的数据是否为 10,是 10,则将 其存入 Temp,然后跳出中断,继续接收下一帧数据;否则直接跳出中断,接收 下一帧数据。如果 Temp 中的值为 10,则检测 Temp1 中的值是否为 41,是 41,则说明数据包为所要的含时间信息的数据包,进入存储程序;如果不是 41,则检测当前接收到的数据是否为 41,如果是,则将其存入 Temp1,然后 跳出中断,继续接收下一帧数据;否则清空 Temp,然后跳出中断,检测下 一帧数据。 当检测到 Temp 和 Temp1 中的值分别为 10 和 41 是,则继续检测 Temp2 中的值是否为 10,如果是,则检测当前接收到的数据是否为 10,如果当前 数据为 10,说明时间信息中含有数据 10,则存储一个 10,然后跳出中断, 继续接收下一帧数据; 否则说明检测到包尾,结束存储,并清空 Temp, Temp1 和 Temp2。如果 Temp2 中的数据不为 10,则检测当前接收到的数据 是否为 10,若是 10,则将其存入 Temp2,跳出中断,检测下一帧数据;如 果不是 10,则直接存储,然后跳出中断,继续接收下一帧数据。 创新实验报告之三:创新实验研究论文 22 / 42 j) 液晶 液晶初始化 ENTRY MODE SET, 分别写入 00H,06H,并延 时 FUNCTION SET, 写入 02H,并延时 将 PORT A, PORT D 设为 Output FUNCTION SET, 分 别写入02H,08H,并延 时 DISPLAY ON CONTROL , 分别写入 00H,0EH,并延时 CLEAR DISPLAY, 分 别写入 00H,01H,并延时 液晶显示时间程序 写入 1AH,10H, 屏幕上显示空格 写入 1AH,10H, 屏幕上显示空格 写入 16H,15H, 屏幕上显示 e 写入 16H,1DH, 屏幕上显示 m 写入 16H,19H, 屏幕上显示 i 写入 15H,14H, 屏幕上显示 T 调用 16 进制转 10 进制子程序,将小时数 拆为十进制的十位数,个位数 调用转换送显子程序,将小时数显示在屏幕上 用查表法查出十位个位的 ASCALL 码 写入 13H,1AH, 屏幕显示冒号 调用 16 进制转 10 进制子程序,将分钟数 拆为十进制的十位数,个位数 调用转换送显子程序,将分钟数显示在屏幕上 用查表法查出十位个位的 ASCALL 码 A 流程图 12 创新实验报告之三:创新实验研究论文 23 / 42 写入 0CH,00H, 换行 A 写入 13H,1AH, 屏幕上显示冒号 写入 1AH,10H, 屏幕上显示空格 写入 1AH,10H, 屏幕上显示空格 写入 16H,15H, 屏幕上显示 e 写入 17H,14H, 屏幕上显示 t 写入 16H,11H, 屏幕上显示 a 写入 14H,14H, 屏幕上显示 D 调用 16 进制转 10 进制子程序,将年数 拆为十进制的十位数,个位数 B 调用 16 进制转 10 进制子程序,将秒钟 数拆为十进制的十位数,个位数 调用转换送显子程序,将秒钟数显示在屏幕上 用查表法分别查出十位个位的 ASCALL 码 B 调用转换送显子程序,将年数显示在屏幕上 用查表法分别查出十位个位的 ASCALL 码 写入 12H,1FH, 屏幕上显示斜线 调用 16 进制转 10 进制子程序,将月数 拆为十进制的十位数,个位数 调用转换送显子程序,将月数显示在屏幕上 用查表法分别查出十位个位的 ASCALL 码 写入 12H,1FH, 屏幕上显示斜线 调用 16 进制转 10 进制子程序,将日数 拆为十进制的十位数,个位数 调用转换送显子程序,将日数显示在屏幕上 用查表法分别查出十位个位的 ASCALL 码 写入 00H,02H, 回首行,等 待下一次扫描显示 创新实验报告之三:创新实验研究论文 24 / 42 液晶送显部分 这一部分先让液晶显示提前预存在 RAM 中的数据,即以 HOUR、MINUTE、 SECOND、YEAR、MONTH、DAY 的地址所存的数据为信息源,让液晶屏从那 里分别读出十六进制的数,例如说现在 21 点,HOUR 中就先存着 15H 这个数。 读出这个数,并将它通过一个子函数 HTD 转化为十进制数,并将个位 1 存在 TEMPL 中,十位 2 存在 TEMPH 中。将十位数 2 查表,找到第 2 个偏移行,返 回 2 的 ASCALL 码 32H,存于 TEMPNU 中。通过子函数 MIX,将 15H 拆为 11H 和 15H,送显液晶,就能显示出小时数的十位了。小时数的个位也以同样的过程 显示出来。然后加上一个分隔符。之后,分钟数、秒钟数、年数、月数、日数, 都可以用相同的方法显示出来。然后,加上一个循环,让液晶屏反复快速去显示 当前时间,不断刷屏,就可以实时更新时间了。接下来,只需要将 GPS 芯片所 发数据成功解码,得到准确的十六进制的小时数、分钟数、秒钟数、年数、月数、 日数,分别存于 HOUR、MINUTE、SECOND、YEAR、MONTH、DAY 中,就 可以实现对接了。 16 进制转 10 进制子程序 TEMPH 清零 将代转化数放入 TEMPL TEMPL 减 10 TEMPH 加 1 NO YES 将得到的 TEMPL,TEMPH 乘 以 2,为下一步的查表做准备 相减是否借位? 转换送显子程序 将 TEMPNU 存入 WREG 交换 WREG 的高四位和低四位 WREG 高四位置 01H,低四位不变 液晶送显 将 TEMPNU 再次存入 WREG WREG 高四位置 01H,低四位不变 液晶送显 创新实验报告之三:创新实验研究论文 25 / 42 【系统调试】 1. 软件调试 我们的软件部分基本分为三个部分,即 IQ 与 PIC单片机的通信、GPS时 间信号的处理以及最后的液晶送显部分。  GPS时间信号处理的算法部分 这是整个程序中比较重要的一块。在写这段程序的过程当中遇到了 许多的麻烦。首先由 GPS 周数计算年月日的时候就遇到了几个麻烦。一 个是如何处理年的问题,因为年是分闰年和平年的,处理不好会每计算 四年就有一天的误差。另外一个问题是如何处理月份,每月的天数还是 不一样的。当然在一天天的思考后,这些算法都解决了。但是最后依然 遇到了一个问题,因为 GPS 时间原点是在 1980 年的 1 月 6 日,所以 1 月也不好处理,最后的方法是把一年当成 13个月处理,1月被拆成 6号 以前和 6 号以后两个部分,问题就迎刃而解了。另外在浮点数转换成整 数部分,也花了不少心思。特别的麻烦的是错位复制那部分,通过相与 相加,最后还是解决了这个问题。算法部分不需要硬件调试,所以相对 还是比较方便的。  单片机串口通信部分 试验中采用单片机的 USART(通用同步/异步收发器模块)采集 GPS 芯片传出的时间数据。所以首先需要对单片机的串口模块进行调试,调 试过程中,单片机作为异步收发器,单片机的串口通信模块管脚通过 TTL 转 RS232 电平转换电路,以计算机的串口相连,首先接受用户从键盘输 入到计算机的内容,然后单片机直接将接收到的数据发送回计算机,在 屏幕上显示。调试的具体过程如下: 用 Windows 的超级终端作为调试软件。把编译好的程序写入芯片, 然后用串口线将开发板与计算机相连,接着打开超级终端,设置串口波 特率为 9600bd,按“确定”打开文本输入窗口。按照程序的设计,只有 单片机接收到计算机发出的数据并将数据送回,屏幕上的文本显示区域 才会显示相应字符。这样调试的优点是界面简单直观,缺点是初始化时 间较长,而且只能一个字节一个字节的发送,不容易统计发送的字节总 数。而且重复使用比较麻烦,灵活性不好。 用串口调试精灵作为调试软件。串口调试精灵是专门用于串口调试 的软件,可以选择手动发送和自动发送两种发送模式,自动发送模式状 态下还可以自由设定发送时间间隔。发送模式可以选择普通模式和 16 进制模式。普通模式发送时,直接发送的是字符的 ASCII 码,屏幕上直 接显示要发送的字符。16 进制发送模式则是发送 8 位二进制码(即一个 字节),其中每 4 位用 1 个 16 进制数表示。采用 16 进制发送模式,则可 以方便的模拟单片机中数据的存储形式,而且 GPS 芯片的数据包中的数 据也是由 16 进制代码构成,很好的模拟了外来数据流的方式。调试的具 体过程如下: 创新实验报告之三:创新实验研究论文 26 / 42 单字节发送。在串口精灵的发送区键入一个字节信息(如数字 1), 然后点“手动发送”,观察接收区是否接收到相应数据。如果接收正常, 改为自动发送模式,发送间隔为 1ms,观察接收是否正常。 多字节发送。在发送区输入一个字符串,然后分别用“手动发送” 和“自动发送”两种发送模式进行数据发送,检测接收是否正常。 改动程序。将程序仅具有的简单接收功能,增强为能够识别 GPS 时 间信息数据包,即只有检测到以十六进制数 10 和 41 开头的数据信息, 才开始返回数据,当检测到 10 和 03 时,不再返回数据。在接收到 10 和 03 之前,如果检测到数据 10 10,则只返回 1 个 10。例如,在数据放 送区键入以下 16 进制信息 10 31 13 14 15,按“手动发送”键,接收区 无数据显示;键入信息 10 41 12 12 14 15,按发送,接收区显示 12 12 14 15 ;接着键入 10 10 14 14,接收区显示 10 14 14;再键入 14 15 10 03, 接收区显示 14 15;再键入 13 14 15,接收区无显示;再键入 10 41 10 10 34 12 14 10 03,接收区显示 10 34 12 14。至此,说明单片机的串口通信 模块工作正常,所编程序具有采集 GPS 芯片发出的时间信号的功能,可 以继续下步试验,与 GPS 芯片相连,采集时间信息。 创新实验报告之三:创新实验研究论文 27 / 42 2. 硬件调试 我们的硬件部分比较简单,开发板使用的是 Microchip 公司的开发板上 的器件,板子的版本编号为:APP001 Ver.2。那么说到硬件调试,就应该首 先说一说这块开发板。下图就是这个开发板的整体图: 图表 5 这块开发板的功能十分强大,这上边嵌入了许多芯片,这些芯片可以辅 助单片机完成各种功能。比如下图所示的 RS232 串口通信单元: 创新实验报告之三:创新实验研究论文 28 / 42 图表 6 另外,我们使用了液晶,如下图所示: 图表 7 最重要的还有一个模块,就是 Lassen IQ GPS 接收模块。在 IQ 的使用过 程中,遇到了不少问题,其中有一次还把 IQ 给烧坏了,当然不是我们粗心, 而是我们不知道 IQ 的外壳是 GND,我测试的时候把它放在了稳压电源的金 属外壳上,然后直接短路就烧坏了。换了一个 IQ 以后,我就把底座的焊接 部分粘上了绝缘胶布,如下图所示: 创新实验报告之三:创新实验研究论文 29 / 42 图表 8 当然也少不了在 IQ 的外壳粘上胶布,效果如下: 图表 9 IQ 模块在电平上和我们的 PIC 开发板不匹配。IQ 输出的是 3.3V TTL 电 平,送给开发板是可以兼容的,但是开发板给出的 5V TTL 电平,IQ 却不能 承受,所以向下送数据的时候需要分压。 IQ 接收卫星信号当然还需要天线,天线设计成圆盖形,是为了更方便的 接收各个方向的卫星信号。卫星信号非常微弱,在使用时候,天线一定要放 在开阔的室外。下面就是 IQ 的天线,它有一个 5 米长的电缆: 创新实验报告之三:创新实验研究论文 30 / 42 图表 10 IQ 使用还是非常方便的,接上电以后等一会就可以用示波器观察到接收 的卫星信号了。下面就是示波器观察的效果,由于扫描时间比较大,所以看 到的只是一大块黑色的,我们也不需要在示波器上观察信号的具体信息,只 要观察到是否已经接受到卫星信号即可: 图表 11 创新实验报告之三:创新实验研究论文 31 / 42 3. 软件硬件联调 在程序最后整合的阶段,我们遇到了前所未有的大问题,那就是中断问 题。当时,该实验的三个部分均已经独立实现了各自的功能:计算机已经可 以用串口与单片机通信,并自动搜寻到有用数据,将之返回计算机;GPS 芯 片的数据已经可以正确存在指定的位置,并由一系列算法得到准确的十六进 制的小时数、分钟数、秒钟数、年数、月数、日数,分别存于 HOUR、MINUTE、 SECOND、YEAR、MONTH、DAY 中;液晶已经可以把存在 HOUR、MINUTE、 SECOND、YEAR、MONTH、DAY 中的数据成功送显。但是,三部分整合 在一起之后,却无法显示正确时间,这样我们当时感到很费解。 当时遇到的现象是,屏幕只显示第一次的数据,之后就再也不更新了。 通过加上一些闪灯的语句帮助定位,我们发现,程序只进过一次中断,后来 就留在 MAIN 函数的一个预设的死循环里,再也进不了中断了。通过各方面 的查询,我们很难找到具体问题出现在什么地方,因为中断这部分单独和计 算机通信是没有任何问题的。经过了再三思索,多方求救,我们终于总结出 了一条科学的研究方法,来找到问题的根源。 我们将整个实验分成了几块分别研究,将错误的范围不断缩小。我们先 设计了一个显示程序,将芯片发出的数据经过筛选,得到有效信息,不经过 算法直接送显,得到了很多预期的数。这说明,芯片送入的数据没有问题。 之后,我们用存在寄存器里的数直接显示,还是没有问题,说明算法是正确 的。然后,我们用计算机模拟芯片发送数据给单片机,发现竟然可以实时显 示时间。后来我们刻意夹杂了一些冗余信息,发现这时老问题出现了。每当 发送的 10 03 之后跟上三个或三个以上的冗余数据时,单片机就不进入中断 了。我们觉得应该是波特率调得太低了,系统来不及处理那么多的数据,结 果从 9600 改为 19200 后,仍旧没有改观。后来发现 GPS 芯片只支持 9600 的,只好放弃了这条路。我们又开始怀疑,是不是中断最后的 RETFIE 只是 跳出了中断的子程序而没有跳出中断。于是我们设计了一个只有一句 NOP 的子程序,发现一切正常。于是,我们又将之换为一个很短的时延程序,又 可以正常工作。经过逼近,我们发现,原来中端的进入时间只能在 1000ns 以下,否则就会出现问题。而我们液晶的显示程序却放在中断里,显示需要 很多延时,便找到了问题的根源。最后我们将液晶显示放在了 MAIN 函数的 循环里,问题解决,结果正确的显示在了液晶屏上。 创新实验报告之三:创新实验研究论文 32 / 42
本文档为【GPS精准授时和频率是发生系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_227737
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:42
分类:
上传时间:2011-07-19
浏览量:24