5407|10

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:GPS模块与单片机结合用LCD显示GPS的信息 [复制链接]

我在做GPS模块与单片机结合用LCD显示GPS的信息的课题,我用的是AT89S52单片机晶振12m 波特率设置为4800bps ,但是我把gps的TXD针与单片机的RXD连上..为什么显示不到该显示的GPS信息呢..可能是什么原因呢...我测试过,我的LCD显示函数没问题,它能正常显示出我设定的东西
我个人认为可能是我的GPS接收函数出问题了,但是我没能找出来,哪位大虾帮帮小弟!!
GPS接受函数程序(C语言)
/***********************************************************
        名称:GPS模块
        功能:用串口接收GPS模块的定位等信息
        说明:使用串口(定时器1)
/***********************************************************/

/*---------------------------------------------------------
                GPS模块串口接收程序:全局变量的定义
---------------------------------------------------------*/
#include
#include
#define uchar unsigned char
uchar gpsnum;                                                   //$GPRMC语句数据类型序号
bit gpsres=0;                                                   //开始接收数据标志,1为开始接收
uchar gpstime[11];                                           //时间数据
uchar *gpsptime=gpstime;                           //时间数据指针
uchar gpsstatus[2];                                                   //状态数据
uchar *gpspstatus=gpsstatus;                   //状态数据指针
uchar gpsweidu[10];                                                   //纬度数据
uchar *gpspweidu=gpsweidu;                                   //纬度数据指针
uchar gpsnors[2];                                                //南、北半球
uchar *gpspnors=gpsnors;                                //南、北纬数据指针
uchar gpsjingdu[11];                                   //经度数据
uchar *gpspjingdu=gpsjingdu;                   //经度数据指针
uchar gpseorw[2];                                           //东、西半球
uchar *gpspeorw=gpseorw;                           //东、西经数据指针
uchar gpsdate[7];                                           //日期数据
uchar *gpspdate;                                           //日期数据指针

/*---------------------------------------------------------
                GPS模块串口接收程序:函数声明
---------------------------------------------------------*/
void GPS_start();                                //单片机控制GPS的串口初始化

/*---------------------------------------------------------
                GPS模块串口接收程序:串口初始化
               
---------------------------------------------------------*/       
void GPS_start()
{
SCON=0x50;                                //串口工作于方式1,REN=1
PCON=0x00;                                //不倍增
TMOD=0x20;
TH1=0xfa;                                 //4800bps
TL1=0xfa;
TR1=1;                                       
//PS=1;                                        //高优先级
EA=1;
ES=1;                                        //开串口中断
RI=0;
}

/*---------------------------------------------------------
                GPS模块串口接收程序:串口函数
---------------------------------------------------------*/       
void GPS_INT() interrupt 4
{
uchar i;
RI=0;
if(SBUF=='R')                                //判断是否为$GPRMC语句
     {
          gpsnum=0;
      gpsres=1;                        //开始接收
      return;
     }
if(SBUF=='*' && gpsres==1)                                //接收完数据后的处理
     {
          gpsnum=0;                        //复位为第0个数据
      gpsres=0;                        //停止接收
      ////////修正时间数据为北京时间,24小时制
          if(gpstime[0]<0x32)               
                 {
                  i=gpstime[1]+0x08; //小时个位+8,转为北京时间
          if(i>=0x3a)
                          {
                         i=i-0x0a;
             gpstime[0]=gpstime[0]+0x01;
                         if(gpstime[0]==0x32&&i>=0x34)
                              {gpstime[0]=0x30;i=i-0x04;}                                 
                     }
                  }
       else
              {
                   i=gpstime[1]+0x04;
           gpstime[0]=0x30;
                  }                                         
       gpstime[1]=i;
       return;
          }
           //////////////////////////////////////////
if(gpsres==1)
        {
         if(SBUF==',')                        //逗号后为下一个数据
                {gpsnum++;return;}
         switch(gpsnum)                           //判断数据类型,然后存储起来
                  {
                  case 0:{*gpsptime=SBUF;gpsptime++;}break;
                  case 1:{*gpspstatus=SBUF;gpspstatus++;}break;
                  case 2:{*gpspweidu=SBUF;gpspweidu++;}break;
                  case 3:{*gpspnors=SBUF;gpspnors++;}break;
              case 4:{*gpspjingdu=SBUF;gpspjingdu++;}break;
                  case 5:{*gpspeorw=SBUF;gpspeorw++;}break;
                  case 6:{}break;
                  case 7:{}break;
                  case 8:{*gpspdate=SBUF;gpspdate++;}break;
                  case 9:{}break;
                  default:
                                   {
                                  *gpsptime=gpstime;                //复位各数据指针
                                  *gpspstatus=gpsstatus;
                                  *gpspweidu=gpsweidu;
                                  *gpspnors=gpsnors;
                                  *gpspjingdu=gpsjingdu;
                                  *gpspeorw=gpseorw;
                                  *gpspdate=gpsdate;
                         }break;           
                 }
   }
}
/***********************************************************
                                                结束
/***********************************************************/

最新回复

怎么回事啊神,那是我的qq呀!  详情 回复 发表于 2013-5-1 17:11
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没回复的!
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你的一个程序没有调用
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
首先GPS是什么公司的?用的波特率是多少?
如果什么都没有收到,很可能就是波特率错了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
同3楼,波特率要设定好,另外你的GPS加天线了吗?没天线是没数据的。而且貌似不同的模块发出的数据格式也是不同的。把你的GPS模块型号说出来再让大家帮你分析吧!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
先测试你的gps有没问题了,你的程序能接收gps数据么?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
没有天线可以接收串口数据,当然,不会有正确的位置信息。先确定你的串口波特率对不对
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

8
 
hehe
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
我现在正在研究这个东西,请你把波特率设在9600试试看!可加我QQ:707703387

点评

怎么回事啊神,那是我的qq呀!  详情 回复 发表于 2013-5-1 17:11
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

10
 
用示波器看看
看有没有信号先
 
 
 

回复

267

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 9楼 阿神归来 的帖子

怎么回事啊神,那是我的qq呀!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表