EDN China > 设计实例 > 通信 > 地面/卫星广播 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于PIC18F8520 的GPS 精准时钟实现

今日电子 石家庄开发区冀科双实科技有限公司 孙晓晔?? 2011年01月12日 ?? 收藏1

?  电路板上有3.3V和5V两种电压,其中LCD采用5V供电,而单片机和MAX3232工作在3.3V电压下。外部电源为5V,经 AS2830转换为3.3V,给单片机和MAX3232供电。从图2中可以看到,单片机的电源脚没有与3.3V直接相连,而是通过J2、J3跳线即可连到 3.3V上,也可连到VDD上。这是因为单片机在采用PIC16-MCD2编程器通过ICSP接口进行在线编程时由MCD2供电,这时,单片机电源脚需连接到VDD上(MCD2输出电压VDD为5V);而正常运行时单片机由电路板供电,J2、J3跳线连接到3.3V上,单片机就工作在3.3V,可以降低功耗。

  PIC18F8520既有模拟电源、模拟地引脚也有数字电源、数字地引脚,在电路设计中,采用模拟电源、数字电源分离,模拟地、数字地分离,模拟电源和数字电源之间通过磁珠连接,模拟地和数字地通过0Ω电阻在单点连接,以避免模拟信号与数字信号之间的干扰,提高系统的可靠性。

  软件实现

  软件由主程序和中断子程序组成,在MPLAB IDE v8.53环境下,采用MPLAB C18编译器,用C语言编程实现。

  在主程序中进行系统的初始化、数据处理、LCD显示,GPS数据的接收则通过串口中断实现,每收到一条完整的NMEA语句,就设定一个标志,在主程序中通过查询该标志进行UTC时间的提取以及转换成北京时间,再通过LCD显示。由于将复杂的数据处理放到主程序中,这样就可以使中断程序尽量简短,在发生其他中断时,单片机可以及时做出响应,提高了系统的实时性。流程图如图4所示。

 流程图

 流程图

图4 流程图

  由于GPS模块输出的时间为UTC时间,根据习惯,需转换成本地时间(北京时间),这项工作在主程序中完成。根据本地时间=UTC时间+时区值,而北京位于第8时区,时区值为+8,故北京时间=UTC时间+8。在转换过程中,须对16:00:00—23:59:59 UTC时间作相应的处理,+8后判断小时是否大于24,若大于,则减去24,同时日期+1,另外,还涉及到闰年、大月、小月的处理。

  中断服务程序流程图中,串口接收数据时判断字头,只判断了“$”一个字符,这是因为之前已通过SNSRCFG软件将GPS15XL设置为只输出GPRMC一条NMEA语句。

  调试及运行

  首先,对GPS15XL进行初始化。将GPS15XL通过串口与PC连接好,给GPS15XL上电,用软件SNSRCFG设置初始化信息,波特率设为9600,只输出一条GPRMC语句(要获取UTC日期和时间,一条GPRMC语句就足够了),将这些信息写入OEM板内的永久性存储器中,下次上电时将会自动生效。

  然后,通过电路板上预留的ICSP接口,利用PIC16-MCD2编程器将编译好的程序写入单片机。编程时不给电路板供电,单片机通过MCD2供电,须注意电路板上跳线的设置。

  最后,将GPS15XL与电路板连接。给电路板和GPS15XL上电,授时接收系统进入正常工作状态,单片机通过RS-232串行方式接收GPS15XL的卫星数据,获取准确的时间信息,并转换成北京时间,通过LCD显示。
注意:使用时,GPS授时天线一定要放在开阔的室外,否则接收不到卫星信号,也就无法获取UTC时间信息。

  结语

  本文利用PIC18F8520提取GPS高精度时钟,并在LCD上显示,所实现的时钟系统是配电线路故障远程监测及定位系统项目的一部分,经测试,该设计运行稳定,能够为整个系统提供精确的时间信息,具有较高的可靠性、准确性和实用性。此外,还可以将GPS时钟的内核嵌入其他系统,以其时间作为系统时间,例如:金融/证券实时结算、民航/铁路/交通调度系统、各种计算机网络系统、实时通信网络系统、体育彩票和福利彩票等实时销售系统等,应用非常广泛。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

GPS? 精准时钟? 单片机?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈