找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4638|回复: 4
打印 上一主题 下一主题
收起左侧

12864+gps校时+dht11+stc8a8k单片机程序,12864是7567芯片串口屏

[复制链接]
跳转到指定楼层
楼主
制作出来的实物图如下:
最终的显示效果,
单片机采用stc8a8k32s4a12。7567芯片串口屏幕,加上DHt11温湿度采集,
供电电压直接由单片机AD采集增加电量显示
附件中保留DS1302部分程序,DS1302时间误差太大,最终舍弃。采用GPS校时方式。
发个帖子赚点积分 12864 tft.rar (174.87 KB, 下载次数: 85)

单片机源程序如下:
  1. #include "stc8.h"
  2. #include <intrins.h>
  3. #include "GPS.h"

  4. unsigned char RX_Buffer[120]={0};
  5. unsigned char RX_Count = 0;
  6. unsigned char Hour = 0,Min_High = 0,Min_Low = 0,Sec_High = 0,Sec_Low = 0,Min=0,Sec=0;
  7. unsigned char Month = 0,Day = 0,Month_High = 0, Month_Low = 0,Day_Low = 0,Day_High = 0, Year_High = 0,Year_Low = 0;
  8. unsigned int Year = 0;
  9. bit Flag_GPS_OK = 0;
  10. unsigned char MaxDay = 0;
  11. bit Page = 0;
  12. unsigned char xdata Display_GPGGA_Buffer[120]={0};
  13. unsigned char xdata Display_GPRMC_Buffer[120]={0};
  14. bit Flag_OV = 0;
  15. bit Flag_Calc_GPGGA_OK = 0;
  16. bit Flag_Calc_GPRMC_OK = 0;



  17. void gps(void)
  18. {
  19.   int ii;
  20.   int jj;
  21.   Flag_OV =0;
  22.   if(RX_Buffer[0]==0x24&Flag_GPS_OK==1&RX_Buffer[1]==0x47&RX_Buffer[2]==0x50&RX_Buffer[4]==0x47&RX_Buffer[5]==0x41&RX_Buffer[6]==0x2C&RX_Buffer[17]==0x2C)                        //确定是否收到"GPGGA"这一帧数据
  23.     {
  24.         Flag_GPS_OK=0;
  25. //        Flag_OV =1;
  26.       for( ii = 0; ii < 120 ; ii++)
  27.         {
  28.           Display_GPGGA_Buffer[ii] = RX_Buffer[ii];
  29.         }
  30.       
  31.       
  32.     }

  33.    

  34.   if(RX_Buffer[56]==0X2c&RX_Buffer[63]==0x2c&Flag_GPS_OK==1&RX_Buffer[18] == 0x41&RX_Buffer[0] == 0x24 & RX_Buffer[1] == 0x47 & RX_Buffer[2] == 0x50& RX_Buffer[3] == 0x52& RX_Buffer[4] == 0x4d& RX_Buffer[5] == 0x43)                        //确定是否收到"GPRMC"这一帧数据
  35.     {
  36.                 Flag_GPS_OK=0;
  37.                 Flag_OV =1;
  38.       for( jj = 0; jj < 120 ; jj++)
  39.         {
  40.           Display_GPRMC_Buffer[jj] = RX_Buffer[jj];
  41.         }

  42.       Year_High = Display_GPRMC_Buffer[61];
  43.       Year_Low = Display_GPRMC_Buffer[62];

  44.       Month_High = Display_GPRMC_Buffer[59];
  45.       Month_Low = Display_GPRMC_Buffer[60];

  46.       Day_High = Display_GPRMC_Buffer[57];
  47.       Day_Low = Display_GPRMC_Buffer[58];
  48.            Min_High = Display_GPRMC_Buffer[9];
  49.       Min_Low = Display_GPRMC_Buffer[10];

  50.       Sec_High = Display_GPRMC_Buffer[11];
  51.       Sec_Low = Display_GPRMC_Buffer[12];
  52.            
  53. // Day = (Day_High - 0x30) * 10 + (Day_Low-0x30);                //日  加一
  54.   Month = (Month_High - 0x30) * 10 + (Month_Low - 0x30);
  55.   Year =  (Year_High - 0x30) * 10 + (Year_Low - 0x30);
  56.    Hour = ((Display_GPRMC_Buffer[7]-0x30)*10+(Display_GPRMC_Buffer[8]-0x30)+8)%24;                        //UTC时间转换到北京时间                UTC+8
  57.       //0x30为ASCII转换为数字
  58.            if(Hour<=7)
  59.            {
  60.             Day = (Day_High - 0x30) * 10 + (Day_Low-0x30)+1;                //日  加一
  61.            }
  62.            else
  63.            {
  64.            Day = (Day_High - 0x30) * 10 + (Day_Low-0x30);
  65.            }

  66.        Min = (Display_GPRMC_Buffer[9]-0x30)*10+(Display_GPRMC_Buffer[10]-0x30);
  67.        Sec= (Display_GPRMC_Buffer[11]-0x30)*10+(Display_GPRMC_Buffer[12]-0x30);
  68.       
  69.    

  70.       
  71.     }
  72.                

  73.   }

  74. void UTCDate2LocalDate(void)
  75. {
  76.   Day = (Day_High - 0x30) * 10 + (Day_Low-0x30) + 1;                //日  加一
  77.   Month = (Month_High - 0x30) * 10 + (Month_Low - 0x30);
  78.   Year = 2000 + (Year_High - 0x30) * 10 + (Year_Low - 0x30);


  79.   
  80. }


复制代码

51hei.png (9.36 KB, 下载次数: 142)

51hei.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:46065 发表于 2021-2-18 17:54 | 只看该作者
GPS校时方式 要用什么模块?
回复

使用道具 举报

板凳
ID:689627 发表于 2021-2-19 08:48 | 只看该作者
wxxl 发表于 2021-2-18 17:54
GPS校时方式 要用什么模块?

我用的GPS模块一直发送报文,报文包含时间和位置信息。
回复

使用道具 举报

地板
ID:689627 发表于 2021-2-19 08:56 | 只看该作者
wxxl 发表于 2021-2-18 17:54
GPS校时方式 要用什么模块?

4块钱网上淘的拆机模块,TTL电平串口一直发送报文
回复

使用道具 举报

5#
ID:46065 发表于 2021-2-19 10:46 | 只看该作者
pengyi900921 发表于 2021-2-19 08:56
4块钱网上淘的拆机模块,TTL电平串口一直发送报文

能发个卖家店名吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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