找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3318|回复: 2
收起左侧

单片机+GPS获取时间1602实时显示程序

[复制链接]
ID:650412 发表于 2020-4-11 18:44 | 显示全部楼层 |阅读模式
我用的开发板,进行的测试,对GPS信息的获取进行了简化,仅进行时间的获取更好理解。
在调试程序的时候要注意晶振的选择。需要用11.0592MZ的。12MZ的需要更换。或者对GPS和单片机都进行比特率的调节。

单片机源程序如下:
  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "GPS.h"


  4. unsigned char KEY_NUM = 0;
  5. bit Page = 0;
  6. unsigned char xdata Display_GPGGA_Buffer[68];
  7. bit Flag_OV = 0;
  8. bit Flag_Calc_GPGGA_OK = 0;
  9. bit Flag_Calc_GPRMC_OK = 0;

  10. //****************************************************
  11. //Ö÷oˉêy
  12. //****************************************************
  13. void main()
  14. {
  15.         unsigned char i = 0;
  16.         Init_LCD1602();
  17.         LCD1602_write_com(0x80);   
  18.         LCD1602_write_word("Welcome to use!");

  19.         Delay_ms(100);


  20.         Uart_Init();

  21.         while(1)
  22.         {
  23.                 //Scan_Key();
  24.                 if(Flag_GPS_OK == 1 && RX_Buffer[4] == 'G' && RX_Buffer[6] == ',' && RX_Buffer[13] == '.')                        //è·¶¨êÇ·ñêÕμ½"GPGGA"Õaò»Ö¡êy¾Y
  25.                 {
  26.                         for( i = 0; i < 68 ; i++)
  27.                         {
  28.                                 Display_GPGGA_Buffer[i] = RX_Buffer[i];        
  29.                         }
  30.                           Hour = (Display_GPGGA_Buffer[7]-0x30)*10+(Display_GPGGA_Buffer[8]-0x30)+8;                        
  31.                         if( Hour >= 24)      
  32.                         {
  33.                                 Hour %= 24;   
  34.                                 Flag_OV = 1;     
  35.                         }
  36.                         else
  37.                         {
  38.                                 Flag_OV = 0;
  39.                         }

  40.                         Min_High = Display_GPGGA_Buffer[9];
  41.                         Min_Low = Display_GPGGA_Buffer[10];
  42.         
  43.                         Sec_High = Display_GPGGA_Buffer[11];
  44.                         Sec_Low = Display_GPGGA_Buffer[12];

  45.                         Flag_Calc_GPGGA_OK = 1;
  46.                 }

  47.                 if(Page == 0 && Flag_Calc_GPGGA_OK == 1)
  48.                 {
  49.                         LED1 = ~LED1;
  50.                         Flag_Calc_GPGGA_OK = 0;
  51.                         LCD1602_write_com(0x01);
  52.                         LCD1602_write_com(0x80);  
  53.                         LCD1602_write_data(Hour/10+0x30);
  54.                         LCD1602_write_data(Hour%10+0x30);

  55.                         LCD1602_write_data(':');

  56.                         LCD1602_write_data(Min_High);
  57.                         LCD1602_write_data(Min_Low);

  58.                         LCD1602_write_data(':');
  59.         
  60.                         LCD1602_write_data(Sec_High);
  61.                         LCD1602_write_data(Sec_Low);}
  62.         }
  63. }
  64. //****************************************************
  65. //MSÑóê±oˉêy(12M¾§ÕñÏÂ2aêÔ)
  66. //****************************************************
  67. void Delay_ms(unsigned int n)
  68. {
  69.         unsigned int  i,j;
  70.         for(i=0;i<n;i++)
  71.         for(j=0;j<123;j++);
  72. }
复制代码


GPS时间获取.zip

189.49 KB, 下载次数: 51, 下载积分: 黑币 -5

源文件

模块配置工具.zip

363.88 KB, 下载次数: 32, 下载积分: 黑币 -5

调节GPS比特率

回复

使用道具 举报

ID:867408 发表于 2021-3-4 10:23 来自手机 | 显示全部楼层
楼主你好,为什么显示不了呢?gps能定位,
image.jpg
回复

使用道具 举报

ID:586577 发表于 2021-4-13 17:24 | 显示全部楼层
好东西 ,我要好好学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表