这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 如何使用PIC微控制器制作GPS时钟?

共1条 1/1 1 跳转至

如何使用PIC微控制器制作GPS时钟?

助工
2018-08-21 10:50:38     打赏

本文将介绍如何使用PIC单片机从GPS模块获取时间和日期。

要求
  • 使用MPLAB X的计算机和XC8编译器。

  • PICKIT 3.5或同等的PIC编程器。

  • 一个GPS模块,发送NMEA句子。

  • 面包板跳线LCD5K锅

  • 零件清单中的零件。

 

介绍

在之前的文章中  使用Arduino 制作GPS时钟并使用PICAXE制作GPS时钟,我使用Arduino  和  PICAXE制作了GPS时钟。在本文中,我使用的是PIC16F628A

在本文中,我使用的GPS模块与之前的文章不同。波特率是9600,所以我必须配置uart端口以匹配它。为了读出时间,我将使用GPRMC句子。这句话看起来像这样:

$ GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598 ,, * 10

GPRMC句子和其他句子每秒发送一次。该软件将搜索正确的软件并使用该信息。

 

硬件

以下原理图构建在面包板上。注意显示LCD输出块。D6和D7连接到PICs引脚12和13.这恰好是PGC和PGD,即编程引脚。我不打算从LCD上读取数据,因此我将RW引脚接地。我也把D0-D3接地了。最好将未使用的引脚接地,但是安装在PCB上的PIC上未使用的引脚如果我要为项目添加更多功能,我希望将其路由到焊盘以便于访问。这不是这里的情况,因为电路是面包板的。

点击图片为全尺寸。

 

零件清单

以下是EagleCAD中BOM ulp的编辑列表。

 

软件

该软件已被评论,但我将在此处详细介绍。

首先是包含库,配置位,变量声明和函数原型。然后我有驱动LCD显示器的功能。要使LCD显示器正常工作,您必须遵循某个配方。之后,uart函数和两个函数在收到的时间和日期无效时显示消息。

主程序以一些指令开始:关闭比较器,设置端口的正确方向,并将所有端口设置为低。然后初始化LCD端口和uart端口。在主while循环中,RX上接收的每个字节都放在一个变量中。比较变量以查看它是否是美元符号$。如果它是一个美元符号,我现在知道我正处于NMEA判决的开头,但我不知道哪一个。然后它读取接下来的六个字节并将它们放入一个数组中。然后将该数组与预定义的数组进行比较。如果它是平等的,那么我知道两件事:一,我有一句话和两句,我有正确的句子。现在遵循许多for循环,读取并将正确的值放在正确的位置。在这个例子中,它读取时间,日期,纬度和经度IC

当程序接近主while循环结束时,它会在LCD上显示时间和日期。显示的时间通常称为GPS ZULU时间。

结论

在本文中,我向您展示了使用PIC单片机从GPS模块获取时间和日期的一种方法。通过对代码进行少量更改,您可以在不同的PIC上使用它。该程序读取时间,日期,纬度和经度,但它只显示时间和日期。我挑战读者显示lat和lon。

 

这是面包板的一些图片。

启动屏幕。

在PIC接收有效数据之前。

该模块有一个小型备用电池,有助于在卫星修复之前更快地启动时钟。

 







关键词: PIC微控制器     GPS时钟     半导体     IC    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]