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

本文主要是介绍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);

 

这篇关于51单片机GPS+sim800c GSM定位短信LCD1602液晶显示 原理图+PCB+源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988123

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思