/******************************************************************************
Copyright 2007
All rights reserved.
文件名 :gps1602.c
模块名称:
功能概要:
取代版本:0.0.1
修改人 :pulan
完成日期:2007.07.27
升级说明:create
cpu:stc89c58 晶振频率:11.0592Mhz
硬件连接:
---------------------------------------------------------------
|DB0-----P0.0 | DB4-----P0.4 | WR-------P2.2 | A0--------P2.1 |
|DB1-----P0.1 | DB5-----P0.5 | RD-------P2.4 | Vo悬空 |
|DB2-----P0.2 | DB6-----P0.6 | CS-------P2.5 |
|DB3-----P0.3 | DB7-----P0.7 | RST-------P2.3 |
---------------------------------------------------------------
******************************************************************************/
#include <reg52.h>
#include <string.h>
#define LCM_Data P0
#define Busy 0x80 //用于检测LCM状态字中的Busy标识
sbit LCM_RW = P2^5; //1602定义引脚
sbit LCM_RS = P2^4;
sbit LCM_E = P2^6;
//sbit GPS_SPD=P1^2;
//sbit SPD_TYPE=P1^3;
sbit KEY1=P1^1;
char code TIME_AREA= 8; //时区
//GPS数据存储数组
unsigned char JD[10]; //经度
unsigned char JD_a; //经度方向
unsigned char WD[9]; //纬度
unsigned char WD_a; //纬度方向
unsigned char time[6]; //时间
unsigned char speed[5]; //速度
unsigned char high[6]; //高度
unsigned char angle[5]; //方位角
unsigned char use_sat[2]; //使用的卫星数
unsigned char total_sat[2]; //天空中总卫星数
unsigned char lock; //定位状态
//串口中断需要的变量
unsigned char seg_count; //逗号计数器
unsigned char dot_count; //小数点计数器
unsigned char byte_count; //位数计数器
unsigned char cmd_number; //命令类型
unsigned char mode; //0:结束模式,1:命令模式,2:数据模式
unsigned char buf_full; //1:整句接收完成,相应数据有效。0:缓存数据无效。
unsigned char cmd[5]; //命令类型存储数组
//显示需要的变量
unsigned int dsp_count; //刷新次数计数器
unsigned char time_count;
bit page;
bit spd_type;
void sys_init(void);
bit chk_key(void);
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);
unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void LCD_cls(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
/******************************************************************************************
* 函数名称 :
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
main()
{
unsigned char i;
char Bhour;
unsigned int Knots;
sys_init();
while(1)
{
if(buf_full==0) //无GPS信号时
{
dsp_count++;
if(dsp_count>=65000)
{
LCD_cls(); //清屏
DisplayListChar(0,0,"No GPS connect..");
while(buf_full==0);
LCD_cls();
dsp_count=0;
}
}
else
{ //有GPS信号时
if(chk_key())
{ //检测到按键切换显示
page=!page;
LCD_cls();
}
if(!page)
{ //页面1
if(buf_full|0x01)
{ //GGA语句
if(lock=='0')
{ //如果未定位
DisplayListChar(0,0,"*---.--.---- ");
DisplayListChar(0,1,"* --.--.---- ");
}
else
{ //如果已定位
DisplayOneChar(0,0,JD_a); //显示经度
for(i=0;i<3;i++)
{
DisplayOneChar(i+1,0,JD[i]);
}
DisplayOneChar(4,0,'.');
for(i=3;i<10;i++)
{
DisplayOneChar(i+2,0,JD[i]);
}
DisplayOneChar(0,1,WD_a); //显示纬度
DisplayOneChar(1,1,' ');
for(i=0;i<2;i++)
{
DisplayOneChar(i+2,1,WD[i]);
}
DisplayOneChar(4,1,'.');
for(i=2;i<9;i++)
{
DisplayOneChar(i+3,1,WD[i]);
}
}
DisplayOneChar(14,0,use_sat[0]); //显示接收卫星数
DisplayOneChar(15,0,use_sat[1]);
buf_full&=~0x01;
dsp_count=0;
}
if(buf_full|0x02){ //GSV语句
DisplayOneChar(14,1,total_sat[0]);
DisplayOneChar(15,1,total_sat[1]);
buf_full&=~0x02;
dsp_count=0;
}
if(buf_full|0x04)
{
buf_full&=~0x04;
dsp_count=0;
}
}
else
{ //页面2
if(buf_full|0x01)
{ //GGA语句
buf_full&=~0x01;
dsp_count=0;
}
if(buf_full|0x02)
{
buf_full&=~0x02;
dsp_count=0;
}
if(buf_full|0x04)
{ //RMC语句
Bhour=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA;
if(Bhour>=24)
{
Bhour-=24;
}
else if(Bhour<0)
{
Bhour+=24;
}
DisplayListChar(2,1,"BJT ");
DisplayOneChar(6,1,Bhour/10+0x30);
DisplayOneChar(7,1,Bhour%10+0x30);
DisplayOneChar(8,1,':');
DisplayOneChar(9,1,time[2]);
DisplayOneChar(10,1,time[3]);
DisplayOneChar(11,1,':');
DisplayOneChar(12,1,time[4]);
DisplayOneChar(13,1,time[5]);
if(spd_type)
{
DisplayListChar(5,0,"km/h A");
}
else
{
DisplayListChar(5,0,"knot A");
}
if(lock=='0')
{ //如果未定位
DisplayListChar(0,0,"---.-");
DisplayListChar(11,0,"---.-");
}
else
{ //已经定位
if(spd_type)
{ //km/h显示
for(i=0;i<5;i++)
{
DisplayOneChar(i,0,speed[i]);
没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机GPS定位程序1602显示.rar
共20个文件
bak:6个
obj:2个
lst:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 180 浏览量
2023-12-10
15:46:45
上传
评论
收藏 59KB RAR 举报
温馨提示
基于51单片机GPS定位程序1602显示
资源推荐
资源详情
资源评论
收起资源包目录
基于51单片机GPS定位程序1602显示.rar (20个子文件)
基于51单片机GPS定位程序1602显示
gps1602_Uv2.Bak 0B
gps1602.OBJ 23KB
gps1602.opt.bak 1KB
gps1602_uvopt.bak 6KB
STARTUP.LST 11KB
gps1602.hex 6KB
gps1602.C.bak 26KB
gps1602.uvopt 6KB
STARTUP.A51 5KB
gps1602.lnp 62B
gps1602.uvgui.Administrator 67KB
gps1602.M51 28KB
gps1602.uvgui_Administrator.bak 67KB
gps1602.C 26KB
gps1602.uvproj 13KB
STARTUP.OBJ 749B
gps1602.Uv2.bak 2KB
gps1602 19KB
gps1602.LST 39KB
gps1602.plg 1KB
共 20 条
- 1
资源评论
时光の尘
- 粉丝: 3967
- 资源: 203
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功