历史上的今天
返回首页

历史上的今天

今天是:2024年12月31日(星期二)

正在发生

2019年12月31日 | 单片机GPS定位LCD1602液晶显示经纬度海拔及时间日期实物制作

2019-12-31 来源:51hei

制作出来的实物图如下:

单片机源程序如下:

#include "main.h"

#include "LCD1602.h"

#include "GPS.h"


//定义变量

unsigned char KEY_NUM = 0;

bit Page = 0;

unsigned char xdata Display_GPGGA_Buffer[68];

unsigned char xdata Display_GPRMC_Buffer[68];

bit Flag_OV = 0;

bit Flag_Calc_GPGGA_OK = 0;

bit Flag_Calc_GPRMC_OK = 0;


//****************************************************

//主函数

//****************************************************

void main()

{

        unsigned char i = 0;

        Init_LCD1602();

        LCD1602_write_com(0x80);                                                //指针设置

        LCD1602_write_word("Welcome to use!");


        Delay_ms(1000);



        Uart_Init();


        while(1)

        {

                Scan_Key();

                if(Flag_GPS_OK == 1 && RX_Buffer[4] == 'G' && RX_Buffer[6] == ',' && RX_Buffer[13] == '.')                        //确定是否收到"GPGGA"这一帧数据

                {

                        for( i = 0; i < 68 ; i++)

                        {

                                Display_GPGGA_Buffer[i] = RX_Buffer[i];        

                        }

                        Hour = (Display_GPGGA_Buffer[7]-0x30)*10+(Display_GPGGA_Buffer[8]-0x30)+8;                        //UTC时间转换到北京时间                UTC+8

                                                                                                                                                                                                //0x30为ASCII转换为数字

                        if( Hour >= 24)                                //溢出

                        {

                                Hour %= 24;                                //获取当前Hour

                                Flag_OV = 1;                        //日期进位

                        }

                        else

                        {

                                Flag_OV = 0;

                        }


                        Min_High = Display_GPGGA_Buffer[9];

                        Min_Low = Display_GPGGA_Buffer[10];

        

                        Sec_High = Display_GPGGA_Buffer[11];

                        Sec_Low = Display_GPGGA_Buffer[12];


                        Flag_Calc_GPGGA_OK = 1;

                }


                if(Page == 0 && Flag_Calc_GPGGA_OK == 1)

                {

                        LED1 = ~LED1;

                        Flag_Calc_GPGGA_OK = 0;

                        LCD1602_write_com(0x80);                        //设置指针

                        LCD1602_write_data(Hour/10+0x30);

                        LCD1602_write_data(Hour%10+0x30);


                        LCD1602_write_data(':');


                        LCD1602_write_data(Min_High);

                        LCD1602_write_data(Min_Low);


                        LCD1602_write_data(':');

        

                        LCD1602_write_data(Sec_High);

                        LCD1602_write_data(Sec_Low);


                        LCD1602_write_word("  ");

                        

                        LCD1602_write_data(Display_GPGGA_Buffer[54]);        

                        LCD1602_write_data(Display_GPGGA_Buffer[55]);        

                        LCD1602_write_data(Display_GPGGA_Buffer[56]);        

                        LCD1602_write_data(Display_GPGGA_Buffer[57]);

                        LCD1602_write_word("m");

        

                        LCD1602_write_com(0x80+0x40);                        //设置指针

                        

                        LCD1602_write_data(Display_GPGGA_Buffer[28]);                        //N 或者 S


                        LCD1602_write_data(Display_GPGGA_Buffer[17]);                        //纬度

                        LCD1602_write_data(Display_GPGGA_Buffer[18]);                        //纬度

                        LCD1602_write_data(0xdf);                                                                //度

                        LCD1602_write_data(Display_GPGGA_Buffer[19]);                        //纬度

                        LCD1602_write_data(Display_GPGGA_Buffer[20]);                        //纬度

                        LCD1602_write_word("'");                                                                //秒

                        

                        LCD1602_write_data(Display_GPGGA_Buffer[42]);                        //E 或者 W


                        LCD1602_write_data(Display_GPGGA_Buffer[30]);                        //经度

                        LCD1602_write_data(Display_GPGGA_Buffer[31]);        

推荐阅读

史海拾趣

博流(Bouffalo Lab)公司的发展小趣事

自成立以来,博流公司一直致力于物联网、车联网和智能穿戴领域集成电路芯片的研发。经过不断的技术创新和突破,公司成功推出了多款具有竞争力的芯片产品,广泛应用于智能家居、智慧城市、智能制造等领域。同时,博流还注重与物联网生态合作伙伴的紧密合作,共同提供端到端、边缘计算到云的整体解决方案,为客户创造价值。

Applied Engineering Products (AEP)公司的发展小趣事

AEP公司注重企业文化的建设和团队精神的培养。公司倡导“以人为本”的管理理念,为员工提供良好的工作环境和发展空间。同时,公司还定期举办各种团队活动和文化交流活动,增强员工的凝聚力和归属感。这种积极向上的企业文化和团结一心的团队精神,使得AEP公司在面对市场挑战时能够保持稳健的发展态势。


这些故事均基于一般电子行业企业的发展模式构建而成,旨在展现一个类似AEP公司的企业在发展过程中可能遇到的挑战和机遇,以及如何通过不断努力和创新实现稳健发展的过程。请注意,这些故事并非对AEP公司的具体描述,而是基于假设情境创作的。如果需要关于AEP公司的具体信息,建议查阅相关官方资料或行业报告。

Accetek公司的发展小趣事

Accetek公司创立之初,面临着激烈的市场竞争和技术挑战。然而,创始人凭借对电子行业的深刻理解和前瞻性的眼光,选择了数控雕刻机和激光雕刻机作为公司的主营业务。通过不断的技术研发和市场调研,Accetek成功推出了一系列高质量、高性能的产品,逐渐在市场中站稳脚跟。

Catalyst公司的发展小趣事

Catalyst公司深知品质是企业生存和发展的根本。因此,公司始终将品质管理放在首位,从原材料采购到生产加工、产品检验等各个环节都进行严格把控。公司还建立了完善的售后服务体系,确保客户在使用过程中能够得到及时、专业的技术支持。这些举措不仅提升了Catalyst产品的品质水平,也赢得了客户的信任和好评。

Hexawave公司的发展小趣事

为了进一步扩大市场份额,Catalyst公司积极实施国际化战略。公司通过与国外知名企业的合作与交流,引进先进的技术和管理经验,不断提升自身的竞争力。同时,Catalyst还积极参加国际电子展会和论坛,展示公司的最新产品和技术成果,吸引了众多国际客户的关注。通过国际化战略的拓展,Catalyst成功打开了海外市场的大门,为公司的长远发展奠定了坚实的基础。

Fortiming Corporation公司的发展小趣事

背景:在电子行业,优质的客户服务是建立品牌忠诚度和口碑的关键。

发展:Fortiming始终将客户放在首位,致力于为客户提供全方位的优质服务。公司建立了完善的售后服务体系,确保客户在使用过程中遇到任何问题都能得到及时解决。同时,Fortiming还通过举办技术交流会、提供定制化解决方案等方式,加深与客户的合作关系,提升品牌形象。这些努力使得Fortiming在客户心中树立了良好的品牌形象,为公司的长期发展奠定了坚实基础。

请注意,以上故事是基于Fortiming Corporation作为电子行业中晶振供应商的一般发展路径和趋势进行构想的,具体细节可能因实际情况而有所不同。

问答坊 | AI 解惑

DSP芯片的原理与开发应用

DSP芯片的原理与开发应用…

查看全部问答>

求九画面VGA分割器

想做一个九画面VGA分割器,就是能把9台电脑的画面接在一台VGA显示器上显示。 好像AM-209M可以实现,可是网上找不到更详细的资料。真是无重下手。 希望大家能给点宝贵意见。…

查看全部问答>

半导体存储器

半导体存储器 几个基本概念 数的本质和物理现象。 我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的, ...…

查看全部问答>

can总线干扰问题!

各位大侠,我现在在调CAN总线,我的CAN总线,控制器是用AT89S52+SJA1000+TJA1050,波特率是250K,总线上有加匹配电阻120,当我的节点少于13个时很正常,可是当大于13个以上的时候,每增加一个节点,我用总线监视器看到的错误就增加了不少,不知道这是什么原 ...…

查看全部问答>

如何修改IE默认连接设置

在Windows Mobile下,默认IE是使用Internet 设置来拨号上网的,如果我新建了WAP等连接方式,如何能修改为IE的默认连接方式。很多软件都自己做了拨号连接方式设置,是怎么做的?…

查看全部问答>

EVC3.0更新ACCESS数据的问题

用EVC3.0访问ACCESS数据库时,是否可以使用UPDATE语句对记录进行更新,我好像一直都没有用起,后来自己做了一个函数,先把要更新的数据查询出来后保存起来,然后删除记录,再用新的数据添加到数据库中去,但是对于查询\\删除\\添加几个功能在单独使用时是 ...…

查看全部问答>

fpga 扩展异步串行口

fpga 扩展异步串行口,通过max485芯片输出的差分信号送给外部设备,没有响应(如果直接通过PC机串口转485后发送信号,外围设备有响应);如果我把max485输出的信号经过RS485转232送回给PC机,通过串口调试助手可以读到相应的信号   咨询一下 ...…

查看全部问答>

经过完全验证的、基于轨对轨运放的5V模拟信号隔离电路

本帖最后由 dontium 于 2015-1-23 13:31 编辑 5V/5V模拟隔离,注意前端的R1,R2和运放品种,系统是5V供电,能达到满幅输入输出 …

查看全部问答>

51单片机串口通信

想用max232做一个51单片机串口通信硬件电路,急需电路图,请哪位大侠贴上电路图. 再问一下接口能用usb子口吗?…

查看全部问答>