当前位置:首页 > 单片机 > 单片机
[导读]/******************************************************************************Copyright 2007All rights reserved.文件名:gps1602.c模块名称:功能概要:取代版本:0.0.1升级说明:createcpu:stc89c58 晶振频

/******************************************************************************
Copyright 2007
All rights reserved.

文件名:gps1602.c
模块名称:
功能概要:

取代版本:0.0.1
升级说明: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
#include

#define LCM_Data P0
#define Busy 0x80 //用于检测LCM状态字中的Busy标识
sbit LCM_RW = P2^2; //1602定义引脚
sbit LCM_RS = P2^1;
sbit LCM_E = P2^5;

//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 date[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);
/******************************************************************************************
* 函数名称 :
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 :
* 修改说明 :
******************************************************************************************/
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 if(lock=='V') //GPRMC语句
{ //如果未定位
DisplayListChar(0,2,"No Positioning");
LCD_cls();
}
else
{ //如果已定位
DisplayOneChar(0,0,JD_a); //显示经度
DisplayOneChar(1,0,' ');
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(1,2,'2'); //日期2009-03-24
DisplayOneChar(2,2,'0');
DisplayOneChar(3,2,date[4]);
DisplayOneChar(4,2,date[5]);
DisplayOneChar(5,2,'-');
DisplayOneChar(6,2,date[2]);
DisplayOneChar(7,2,date[3]);
DisplayOneChar(8,2,'-');
DisplayOneChar(9,2,date[0]);
DisplayOneChar(10,2,date[1]);

Bhour=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA;
if(Bhour>=24)
{
Bhour-=24;
}
else if(Bhour<0)
{
Bhour+=24;
}
// DisplayListChar(2,3,"BJT ");
DisplayOneChar(1,3,Bhour/10+0x30);
DisplayOneChar(2,3,Bhour%10+0x30);
DisplayOneChar(3,3,':');
DisplayOneChar(4,3,time[2]);
DisplayOneChar(5,3,time[3]);
DisplayOneChar(6,3,':');
DisplayOneChar(7,3,time[4]);
DisplayOneChar(8,3,time[5]);
// if(spd_type)
// {
// DisplayListChar(5,3,"km/h A");
// }
// else
// {
// DisplayListChar(5,3,"knot A");
// }

// if(spd_type)
// { //km/h显示
// for(i=0;i<5;i++)
// {
// DisplayOneChar(i,0,speed[i]);
// }
// }
// else
//{ //knot显示
// Knots= (((speed[0]-0x30)*1000
// +(speed[1]-0x30)*100
// +(speed[2]-0x30)*10
// +(speed[4]-0x30))*1000)/1852;
// DisplayOneChar(0,3,Knots/1000+0x30);
// DisplayOneChar(1,3,(Knots%1000)/100+0x30);
// DisplayOneChar(2,3,(Knots%100)/10+0x30);
// DisplayOneChar(3,3,'.');
// DisplayOneChar(4,3,Knots%10+0x30);
// }
// for(i=0;i<5;i++)
// {
// DisplayOneChar(11+i,0,angle[i]);
// }
}


dsp_count=0;
}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Sept. 8, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季NVIDIA(英伟达) Blackwell平台规模化出货,以及北美CSP业者持续扩大布局General Server(通用型...

关键字: SSD DDR4 服务器

Sept. 4, 2025 ---- Apple(苹果)即将发布iPhone 17、iPhone 17 Air(暂名)、iPhone 17 Pro及Pro Max四款旗舰新机,除了外观辨识度升级,处理器性能、散热和拍摄功...

关键字: iPhone 16 A19处理器 折叠机

Sept. 3, 2025 ---- 根据TrendForce集邦咨询最新发布的《2025近眼显示市场趋势与技术分析》报告,2025年随着国际品牌陆续推出AR眼镜原型,以及Meta预计在近期发布AR眼镜Celeste,市...

关键字: AR眼镜 OLED

Sept. 2, 2025 ---- TrendForce集邦咨询表示,2025年第二季DRAM产业因一般型DRAM (Conventional DRAM)合约价上涨、出货量显著增长,加上HBM出货规模扩张,整体营收为3...

关键字: DRAM 智能手机 ASP

Sept. 1, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季因中国市场消费补贴引发的提前备货效应,以及下半年智能手机、笔电/PC、Server新品所需带动,整体晶圆代工产能利用率与出货...

关键字: 晶圆代工 智能手机 笔电

Aug. 28, 2025 ---- 根据TrendForce集邦咨询最新调查,2025年第二季NAND Flash产业虽面临平均销售价格(ASP)小幅下滑,所幸原厂减产策略缓解供需失衡,叠加中、美两大市场政策推动,整体...

关键字: NAND Flash SSD AI

Aug. 26, 2025 ---- NVIDIA(英伟达)近日推出的Jetson Thor被视为机器人的物理智慧核心,以Blackwell GPU、128 GB记忆体堆叠出2070 FP4 TFLOPS AI算力,是前...

关键字: 机器人 大型语言模型 AI算力

Aug. 21, 2025 ---- 根据TrendForce集邦咨询最新液冷产业研究,随着NVIDIA GB200 NVL72机柜式服务器于2025年放量出货,云端业者加速升级AI数据中心架构,促使液冷技术从早期试点迈...

关键字: AI 数据中心 服务器

除了充电电路外,锂电池的放电过程也需要保护。锂电池的放电电压不能低于3.0V,否则电池寿命会大幅缩短。为了实现这一保护,工程师们设计了DW01芯片与8205 MOS管的电路组合。DW01芯片能够监控锂电池的放电电压和电流...

关键字: 锂电池 电池

在PCB设计的宏伟蓝图中,布局与布线规则犹如精密乐章中的指挥棒,是铸就电路板卓越性能、坚不可摧的可靠性及经济高效的制造成本的灵魂所在。恰如一位巧手的园艺师,合理的布局艺术性地编排着每一寸空间,既削减了布线交织的繁复迷宫,...

关键字: PCB 电路板
关闭