历史上的今天
返回首页

历史上的今天

今天是:2025年02月15日(星期六)

2020年02月15日 | 51单片机GPS+sim800c GSM定位短信LCD1602液晶显示程序

2020-02-15 来源:51hei

sim800c+GPS芯片
一个练手的小设计,有点丑哈。附上程序和原理PcB图。
 

第一次发帖,做的不好烦请原谅哈

按键功能一个按键报警,蜂鸣器响,另外一个按键发送短信到指定的手机上,手机号码程序里面写好就行了

单片机源程序如下:

#include "common.h"

#include "uart.h"

#include "gps.h"

#include "gsm.h"



#include "lcd.h"


#define GPS_STR_LEN 48


uchar 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 = 1


GPS_INFO   GPS;  //GPS信息结构体


bit GPS_rx_flag = 0;

bit GPS_Have_flag = 0;


#define SEND_NUMBER "AT+CMGS="13420106297"rn"


char xdata send_data[37]="N:     ',E:     ',2000-00-00,00:00rn";

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] != '')

    {

        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] != '')

    {

        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] != '')

    {

        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] != '')

    {

        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] != '')

    {

        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');

                                else

                                LCD1602_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] != '')

        {

            ch = info[i++];

                                          if(dis_flag)

            LCD1602_write_data(ch);

                                                else

                                    LCD1602_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);

                                else

                                 LCD1602_write_data(' ');

//        GPS_SEND_STR[ess_inc ++] = 'd';


        len ++;

        Int_To_Str(GPS.latitude_Cent,info);  //纬分

        i = 0;

        while(info[i] != '')

        {

            ch = info[i++];

                                          if(dis_flag)

            LCD1602_write_data(ch);

                                                else

                                    LCD1602_write_data(' ');

                              send_data[send_len++] = ch;

//            GPS_SEND_STR[ess_inc ++] = ch;

            len ++;

        }

                                if(dis_flag)

        LCD1602_write_data(0x27);

                                else

                                    LCD1602_write_data(' ');

//        GPS_SEND_STR[ess_inc ++] = 'm';


        Int_To_Str(GPS.latitude_Second,info);  //纬秒

        i = 0;

        while(info[i] != '')

        {

            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');

                                else

                                    LCD1602_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] != '')

        {

            ch = info[i++];

                                          if(dis_flag)

            LCD1602_write_data(ch);

                                                else

推荐阅读

史海拾趣

Electroswitch公司的发展小趣事

Electroswitch Electronics Products(以下简称“Electroswitch”)成立于1986年,是Electro Switch Corp的一个子公司,后者早在1946年就已创立。在创立之初,Electroswitch就致力于设计和制造高品质的开关产品,以满足电子应用领域的各种需求。通过不断的技术创新和产品优化,Electroswitch逐渐在电子行业中树立了良好的声誉。

Directed Energy Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Directed Energy Inc深知这一点,因此始终将品质保障作为公司的核心竞争力之一。公司建立了严格的质量管理体系,从原材料采购到生产制造、再到产品检验和售后服务,每一个环节都严格把控,确保产品的高品质。这种对品质的执着追求赢得了客户的广泛信赖和好评,为公司赢得了更多的市场份额。

宝乘(baocheng)公司的发展小趣事

面对未来电子行业的发展趋势,宝乘公司继续坚持创新驱动的发展战略。公司加大研发投入,不断推出具有创新性和前瞻性的产品。同时,宝乘还积极探索新的市场领域和应用场景,为公司的未来发展奠定坚实的基础。相信在不久的将来,宝乘公司将成为电子行业中的佼佼者,为社会的进步和发展做出更大的贡献。

请注意,这些故事是基于现有信息的推测,并不代表宝乘公司的真实历史。如果您需要更准确和详细的信息,建议直接联系宝乘公司或查阅相关报道和资料。

Abbatron公司的发展小趣事

随着技术的不断成熟和市场的不断扩大,Abbatron公司开始将目光投向国际市场。公司积极参与国际电子展会,与海外企业建立联系,逐渐打开了国际市场的大门。通过不断的市场拓展和国际化战略,Abbatron公司的品牌影响力逐渐提升,成为了国际电子市场上的一股重要力量。

Eastron Corp公司的发展小趣事

在电子产品同质化日益严重的今天,Eastron Corp深知品质对于品牌的重要性。公司严格把控产品质量,从原材料采购到生产过程,再到成品检验,每一个环节都经过严格把关。此外,Eastron还建立了完善的售后服务体系,为客户提供全方位的服务支持。正是凭借出色的品质和服务,Eastron赢得了客户的信赖和口碑。

APSA公司的发展小趣事

在竞争激烈的电子行业中,APSA公司始终保持对技术的敏锐洞察和持续创新。公司不断投入研发资金,引进先进的技术和设备,推动产品升级换代。通过不断创新和技术升级,公司成功保持了市场领先地位。

问答坊 | AI 解惑

为什么红外线接收头一接上,电压就变很低,单片机无法工作?

为什么红外线接收头一接上,电压就变很低,单片机无法工作? …

查看全部问答>

异常求助

((CBitmapButton*)GetDlgItem(ctrId))->LoadBitmaps(resId,0,0,0); 复制代码 以上代码反复执行几次就会出现以下异常。 First-chance exception in Ad.exe:0x80000002:Datatype Misalignment 我试过网上的方法但是还是不行,有网友说是指针不能 ...…

查看全部问答>

U信通让手机兼备PTT功能

U信通让手机兼备PTT功能 2009年中国3G网络业务正式开始运行,集群通信业务也将从传统模拟信号时代向手机数字时代转变。日前,艾博广迅推出了安装在手机上的U信通产品。就像电脑上MSN、QQ、等即时通信工具能实现语音通话一样,安装在手机上的U信通 ...…

查看全部问答>

借宝地一用,招聘DSP/ARM设计人才

1.计算机、电子或相关专业本科毕业 2.熟悉TI DSP结构 3.熟悉C与C++ 4.1年以上TI DSP软件开发工作经验 5.具有高度的责任心,有团队合作精神 即将成立新的公司,公司需要以下人员:图象处理和模式识别,DSP+ARM软硬开发,音视频编解码,音 ...…

查看全部问答>

串口使用WINDOWS API的问题

代码很简单,如下:                 CString sPort = \"Com10\";                 //打开一个串口设备               &nb ...…

查看全部问答>

lm3s615 PWM模块

lm3s615 PWM模块,16位定时器做PWM…

查看全部问答>

想用MSP430的板子作量測功率的疑問

因為我用MSP430的板子做的作品想要加入量測功率的功能我聽說MSP430內就有可以做功率量測的功能但是我不知道該如何使用?所以想說買一顆功率量測IC來實現 ,可是不知道用哪顆IC比較適合?所以希望有人能提供要如何用MSP430來做功率量測的方法或方向或 ...…

查看全部问答>

易电源学习贴

全新SIMPLE SWITCHER 易电源纳米模块非常适合空间受限的应用,扩展了当今市场上最小的1A封装的产品组合和功能。 易电源纳米模块在一个微小解决方案尺寸中整合了易用性和高性能。纳米模块是目前市场上最小的1A封装。该器件是首款将IC安装在电感 ...…

查看全部问答>

请教高手:做51格力空调遥控器,解了码后不知为何空调没反应,附程序如下。

#include #define uchar unsigned char #define uint unsigned int sbit   output = P1^0; sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; static bit OP;        //红外发射 ...…

查看全部问答>

[TI首届低功耗设计大赛]+DIY系统功能框图

[TI首届低功耗设计大赛]+DIY系统功能框图 结合自己的设想修改下图片,摘取些资源图片! 硬件功能资源 1,红外发射:定时器TA外设 2、红外接收:定时器TA外设 3、光照检测:ADC外设 4、LCD&CAPTOUCH:SPI外设 5、温度,湿度,加速度,陀螺仪 ...…

查看全部问答>