51单片机GPS+sim800c GSM定位短信LCD1602液晶显示 原理图+PCB+源码

目录

1、实物图

2、原理图 

​3、PCB​编辑

4、程序

资料下载地址:51单片机GPS+sim800c GSM定位短信LCD1602液晶显示 原理图+PCB+源码

1、实物图

2、原理图 

 3、PCB

4、程序

#include "common.h"
#include "uart.h"
#include "gps.h"
#include "gsm.h"#include "lcd.h"#define GPS_STR_LEN 48uchar ess_inc;//char xdata GPS_SEND_STR[GPS_STR_LEN];sbit key = P1^3;
sbit key1 = P1^4;
sbit GPS_EN=P3^4;
sbit led1 = P3^3;
#define   RMC_YES    led1 = 0
#define   RMC_NO     led1 = 1GPS_INFO   GPS;  //GPS信息结构体bit GPS_rx_flag = 0;
bit GPS_Have_flag = 0;#define SEND_NUMBER "AT+CMGS=\"13420106297\"\r\n"char xdata send_data[37]="N:     ',E:     ',2000-00-00,00:00\r\n";
unsigned char send_len= 0;bit dis_flag = 1;
bit sendflag=0;/****************************************
显示时间
/****************************************/
void GPS_DispTime(void)
{uchar i = 0;uchar ch;char time[5];Int_To_Str(GPS.D.year,time);//年LCD1602_Set_AC(0, 1);i = 0;send_len = 18;while(time[i] != '\0'){ch = time[i++];LCD1602_write_data(ch);send_data[send_len++] = ch;}LCD1602_write_data('-');Int_To_Str(GPS.D.month,time);//月LCD1602_Set_AC(5, 1);i = 0;send_len = 23;while(time[i] != '\0'){ch = time[i++];LCD1602_write_data(ch);send_data[send_len++] = ch;}LCD1602_write_data('-');Int_To_Str(GPS.D.day,time);//日LCD1602_Set_AC(8, 1);i = 0;send_len = 26;while(time[i] != '\0'){ch = time[i++];LCD1602_write_data(ch);send_data[send_len++] = ch;}LCD1602_write_data(',');Int_To_Str(GPS.D.hour,time);//时LCD1602_Set_AC(11, 1);i = 0;send_len = 29;while(time[i] != '\0'){ch = time[i++];LCD1602_write_data(ch);send_data[send_len++] = ch;}LCD1602_write_data(':');Int_To_Str(GPS.D.minute,time);//分LCD1602_Set_AC(14, 1);i = 0;send_len = 32;while(time[i] != '\0'){ch = time[i++];LCD1602_write_data(ch);send_data[send_len++] = ch;}
}void GPS_DisplayOne(void)
{uchar len,ch, i;char info[10];ess_inc = 0;
//    memset(GPS_SEND_STR, 0, GPS_STR_LEN);if (GPS.NS == 'N')              //判断是北纬还是南纬{if(dis_flag)LCD1602_DisplayChar(0, 0, 'N');elseLCD1602_DisplayChar(0, 0, ' ');
//        GPS_SEND_STR[ess_inc ++] = 'N';len = 0;Int_To_Str(GPS.latitude_Degree,info);  //纬度LCD1602_Set_AC(1, 0);i = 0;send_len = 2;while(info[i] != '\0'){ch = info[i++];if(dis_flag)LCD1602_write_data(ch);elseLCD1602_write_data(' ');send_data[send_len++] = ch;
//            GPS_SEND_STR[ess_inc ++] = ch;len ++;}send_data[send_len++] = 'd';if(dis_flag)LCD1602_write_data(0xDF);elseLCD1602_write_data(' ');
//        GPS_SEND_STR[ess_inc ++] = 'd';len ++;Int_To_Str(GPS.latitude_Cent,info);  //纬分i = 0;while(info[i] != '\0'){ch = info[i++];if(dis_flag)LCD1602_write_data(ch);elseLCD1602_write_data(' ');send_data[send_len++] = ch;
//            GPS_SEND_STR[ess_inc ++] = ch;len ++;}if(dis_flag)LCD1602_write_data(0x27);elseLCD1602_write_data(' ');
//        GPS_SEND_STR[ess_inc ++] = 'm';Int_To_Str(GPS.latitude_Second,info);  //纬秒i = 0;while(info[i] != '\0'){ch = info[i++];
//            GPS_SEND_STR[ess_inc ++] = ch;}
//        GPS_SEND_STR[ess_inc ++] = 's';len ++;while(7 - len){len ++;LCD1602_write_data(' ');}}//    GPS_SEND_STR[ess_inc] = ',';ess_inc += 1;if (GPS.EW == 'E')                                //判断是东经还是西经{if(dis_flag)LCD1602_DisplayChar(8, 0, 'E');elseLCD1602_write_data(' ');
//        GPS_SEND_STR[ess_inc ++] = 'E';len = 0;Int_To_Str(GPS.longitude_Degree,info);  //经度LCD1602_Set_AC(9, 0);i = 0;send_len = 11;while(info[i] != '\0'){ch = info[i++];if(dis_flag)LCD1602_write_data(ch);elseLCD1602_write_data(' ');send_data[send_len++] = ch;
//            GPS_SEND_STR[ess_inc ++] = ch;len ++;}send_data[send_len++] = 'd';if(dis_flag)LCD1602_write_data(0xDF);elseLCD1602_write_data(' ');
//        GPS_SEND_STR[ess_inc ++] = 'd';len ++;Int_To_Str(GPS.longitude_Cent,info);  //经分i = 0;while(info[i] != '\0'){ch = info[i++];if(dis_flag)LCD1602_write_data(ch);elseLCD1602_write_data(' ');send_data[send_len++] = ch;
//            GPS_SEND_STR[ess_inc ++] = ch;len ++;}if(dis_flag)LCD1602_write_data(0x27);elseLCD1602_write_data(' ');
//        GPS_SEND_STR[ess_inc ++] = 'm';Int_To_Str(GPS.longitude_Second,info);        //经秒i = 0;while(info[i] != '\0'){ch = info[i++];//            GPS_SEND_STR[ess_inc ++] = ch;}
//        GPS_SEND_STR[ess_inc ++] = 's';len ++;while(7 - len){len ++;LCD1602_write_data(' ');}}GPS_DispTime();//    GPS_SEND_STR[ess_inc] = ' ';ess_inc += 1;if(sendflag==1){                        sendflag = 0;gsm_send_englishmsg(SEND_NUMBER,send_data);//发送位置短信                                delay_ms(1000);delay_ms(1000);LCD1602_DisplayString(0,0,"    SEND OK     "); delay_ms(1000);LCD1602_DisplayString(0,0,"                "); }//    GPS_DispSpeed(GPS.speed, 10, 1);//    if (GPS.D.second == 0)
//    {
//        if (GPS_Have_flag)
//        {
//            gsm_send_englishmsg(phonenum,GPS_SEND_STR);//发送位置短信
//        }
//        else
//        {
//            //gsm_send_englishmsg(phonenum,"GPS No Signal");//发送短信
//        }
//    }
}void main(void)
{uchar error_num = 0;uint count = 0;GPS_EN = 0;GPS_rx_flag = 0;LCD1602_Initialize();//LCD1602显示屏初始化uart_init(UART_B9600);GPS_EN = 1;GPS_rx_flag = 1;BG = 0;LCD1602_DisplayString_Center(0,"GPS SCAN...");LCD1602_ClearLine(1);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/698655.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「51媒体」邀请媒体参会报道和媒体发稿有啥不同

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体参会报道和媒体发稿是新闻报道的两种不同形式,它们的主要区别在于内容来源、报道方式和目的。 内容来源: 媒体参会报道:通常指的是记者或媒体代…

解决:微信支付 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

微信支付参数配置完成后请求报这个。在网上搜索后发现是ip配置的问题,我配置的是127.0.0.1。 而微信支付的时候需要获取用户的真实ip

GPT-4o 免费开放!体验 AI 对话的无限可能!手把手教你普通用户如何切换到4o版本使用!

大家好,我是影子。今天一觉醒来,发现朋友圈传开了GPT-4o可以免费使用了。 相信大家都使用过GPT-3.5的版本,但是无论是智能程度还是联网查询等一些需求都无法给我们实现,这不,4o的出现直接解决了这些问题。 下面影子将…

多行业线下+线上的上门预约服务小程序源码系统 带完整的安装代码包以及搭建部署教程

源码系统概述 功能特点 多行业适配:系统支持多种行业,如家政服务、美容美发、汽车维修等,满足不同行业的需求。线上线下融合:实现线上预约、线下服务的无缝对接,提高服务效率。智能化管理:提供订单管理、员…

独立游戏《星尘异变》UE5 C++程序开发日志3——实现一个存存组件

本篇日志中,我将会介绍如何实现一个有格子,每个格子有容量的物品库存,如下图: 一.库存容器 1.储存数据的容器 库存容器最重要的目的就是存储每一种类的物品拥有的数量,这里我用的是哈希表: std::unordere…

如何用 OceanBase做业务开发——【DBA从入门到实践】第六期

当应用一款新的数据库时,除了基础的安装部署步骤,掌握其应用开发方法才是实现数据库价值的关键。为此,我们特别安排了5月15日(周三)的《DBA 从入门到实践》第六期课程——本次课程将带大家了解OceanBase数据库的开发流…

一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具

ai画影满足你的制作要求 一键追爆款,GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义,角色定义,lora转换,模型转换,可视化参考满足 一键追爆款 一键挂机生成,效果更精彩&#xff…

Python-VBA函数之旅-tuple函数

目录 一、tuple函数的常见应用场景 二、tuple函数使用注意事项 三、如何用好tuple函数? 1、tuple函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、tu…

【数据结构】线性表----链表详解

数据结构—-链表详解 目录 文章目录 链表的定义链表的构成链表的分类双向和单向带头和不带头循环和不循环 链表的命名基本操作的实现初始化打印取值查找插入指定位置插入删除删除销毁 部分其他链表的代码实现循环链表双向链表 优点/缺点(对比顺序表)优点…

探索 Linux 三剑客:grep、sed 和 awk 的强大魅力

序言 在 Unix 和 Linux 系统中,有一组被称为“三剑客”的命令行工具,它们是 grep、sed 和 awk。虽然它们在外表上看起来很简单,但它们的功能却非常强大,为文本处理提供了无限可能。本文将深入探讨这三个工具的用法和功能&#xf…

Franz Electron + React 源码启动运行填坑指南

环境要求 安装miniconda python 环境electron/rebuild用得着,miniconda 默认自带的 python 是 3.11 版本,比较新; 安装virsual studio 2019 要把C桌面相关的都安装了,大概需要20G,不要安装到 C 盘,都安装到…

古月居讲师/签约作者招募计划

机器人,作为一个集成了多学科技术的复杂系统,其开发过程充满了挑战。为了帮助开发者们更好地克服这些挑战,提升项目的开发效率和质量,古月居特别招募[博客签约作者/课程讲师]。如果您平常热爱记录、分享开发者经验的习惯&#xff…