在本文中,我将向您展示一种使用PIC微控制器从GPS模块获取时间和日期的方法。
要求
带有MPLABX和XC8编译器的计算机。
PICKIT3.5或同等PIC编程器。
一个GPS模块,用于发送NMEA语句。
面包板和跳线、液晶显示器和一个5K电位器。
零件清单中的零件。
介绍
在之前的文章使用Arduino制作GPS时钟和使用PICAXE制作GPS时钟中,我已经使用Arduino和PICAXE制作了GPS时钟。在本文中,我使用的是PIC16F628A。有关GPS和导航的简要介绍,请阅读第一个链接中的文章。
在本文中,我使用的GPS模块与之前的文章中使用的不同。波特率是9600,所以我必须配置uart端口来匹配这个。为了读出时间,我将使用GPRMC语句。这句话看起来像这样:
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10
GPRMC语句和其他语句每秒发送一次。该软件将搜索正确的并使用其中的信息。
硬件
以下原理图建立在面包板上。注意显示LCD输出模块。D6和D7连接到PIC引脚12和13。这恰好是编程引脚PGC和PGD。我不会从LCD上读取数据,所以我将RW引脚接地。我也将D0-D3接地。像这样将未使用的引脚接地是一种很好的做法,但是如果我要向项目添加更多功能,我喜欢将安装在PCB上的PIC上未使用的引脚路由到焊盘以便于访问。这里不是这种情况,因为电路是面包板的。
点击图片为全尺寸。
零件清单
以下是EagleCAD中BOMulp的编辑列表。
软件
该软件已被评论,但我将在这里大致介绍它。
首先是包含库、配置位、变量声明和函数原型。然后我有驱动液晶显示器的功能。要使LCD显示屏正常工作,您必须遵循特定的方法。之后是uart函数和两个函数,用于在接收到的时间和日期无效时显示消息。
主程序以一些指令开始:关闭比较器,为端口设置正确的方向,并将所有端口设置为低。然后初始化LCD端口和uart端口。在主while循环中,RX接收到的每个字节都放在一个变量中。比较变量以查看它是否是美元符号$。如果它是一个美元符号,我现在知道我在NMEA句子的开头,但我不知道是哪一个。然后它读取接下来的六个字节并将它们放入一个数组中。然后将该数组与预定义的数组进行比较。如果相等,那么我知道两件事:一,我有一个句子,二,我有正确的句子。现在遵循许多for循环,以读取正确的值并将其放置在正确的位置。在这个例子中,它读取时间、日期、纬度和经度,
当程序接近主while循环结束时,它会在LCD上显示时间和日期。显示的时间通常称为GPSZULU时间。
您可以下载下面的c源代码。
结论
在本文中,我向您展示了一种使用PIC微控制器从GPS模块获取时间和日期的方法。只需对代码进行少量更改,您就可以在不同的PIC上使用它。该程序读取时间、日期、纬度和经度,但它只显示时间和日期。我挑战读者显示纬度和经度。
图片和视频
这是面包板的一些图片。
启动画面。
在PIC接收到有效数据之前。
该模块有一个小型备用电池,有助于在卫星修复之前更快地启动时钟。
现在NMEA语句中有有效信息。
-
微控制器
+关注
关注
48文章
7669浏览量
152277 -
PIC微控制器
+关注
关注
0文章
17浏览量
7437 -
GPS模块
+关注
关注
0文章
89浏览量
16617
发布评论请先 登录
相关推荐
如何将GPS模块与PIC微控制器连接以获取当前位置的纬度和经度
![如何将<b class='flag-5'>GPS</b>模块与<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>连接以获取当前位置的纬度和经度](https://file.elecfans.com/web2/M00/7B/9B/pYYBAGN0rMGADYMNAAJAc1IU4Hk014.png)
MAX1169 ADC与PIC微控制器的接口
![MAX1169 ADC与<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>的接口](https://file1.elecfans.com//web2/M00/A4/8D/wKgZomUMNLOAEqcuAAAUsOo0p9E393.gif)
PIC微控制器技术及应用 1-12章
PIC微控制器技术及应用 13-23章
PIC微控制器技术及应用 24-29章
PIC微控制器基础与实践 (加)myke predko著 12-
PIC微控制器基础与实践 (加)myke predko著 9-1
PIC微控制器基础与实践 (加)myke predko著 1-3
PIC微控制器基础与实践 (加)myke predko著 6-9
PIC微控制器基础与实践 (加)myke predko著 4-6
MAX1169 ADC与PIC微控制器接口
![MAX1169 ADC与<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>接口](https://file.elecfans.com//web2/M00/93/D8/poYBAGP5ioWAFF2JAABRnXnZs2U651.gif)
MAX1169 ADC与PIC微控制器接口
![MAX1169 ADC与<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>接口](https://file.elecfans.com//web2/M00/9B/9A/poYBAGQlAgiAHjyeAABRnXnZs2U147.gif)
评论