51单片机解析GPS最新程序_第1页
51单片机解析GPS最新程序_第2页
51单片机解析GPS最新程序_第3页
51单片机解析GPS最新程序_第4页
51单片机解析GPS最新程序_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这其中包括 1602 驱动头文件 和解析主程序 使用时分开粘贴到对应的 文件中 LCD1602 驱动 兼容 LCD2402 sbit LCD DB0 P0 0 sbit LCD DB1 P0 1 sbit LCD DB2 P0 2 sbit LCD DB3 P0 3 sbit LCD DB4 P0 4 sbit LCD DB5 P0 5 sbit LCD DB6 P0 6 sbit LCD DB7 P0 7 sbit LCD1602 RS P2 4 sbit LCD1602 RW P2 5 sbit LCD1602 EN P2 6 void LCD write char unsigned x unsigned char y unsigned char dat 在指定位置显示字符 void LCD write string unsigned char X unsigned char Y unsigned char s 在指定位置显示字符串 void LCD cls void 清屏 void LCD en command unsigned char command void LCD en dat unsigned char temp void LCD set xy unsigned char x unsigned char y void LCD init unsigned char bw void SET LCD unsigned char IO temp void delayms unsigned char ms void lcddelay void unsigned char LCDIO unsigned char BitWidth void LCD cls void LCD en command 0 x01 0 x01 清屏 delayms 2 void LCD en command unsigned char command LCD1602 RS 0 LCD1602 RW 0 LCD1602 EN 0 switch BitWidth case 4 LCDIO command 取高 4 位 break case 8 LCDIO command break SET LCD LCDIO LCD1602 EN 1 lcddelay LCD1602 EN 0 if BitWidth 4 LCDIO command 取低 4 位 SET LCD LCDIO LCD1602 EN 1 lcddelay LCD1602 EN 0 void SET LCD unsigned char IO temp 高 4 位 LCD DB7 IO temp LCD DB6 IO temp LCD DB5 IO temp LCD DB4 IO temp 低 4 位 if BitWidth 8 LCD DB3 IO temp LCD DB2 IO temp LCD DB1 IO temp LCD DB0 IO temp void LCD en dat unsigned char dat LCD1602 RS 1 LCD1602 RW 0 LCD1602 EN 0 switch BitWidth case 4 LCDIO dat 取高 4 位 break case 8 LCDIO dat break SET LCD LCDIO LCD1602 EN 1 lcddelay LCD1602 EN 0 if BitWidth 4 LCDIO dat 取低 4 位 SET LCD LCDIO LCD1602 EN 1 lcddelay LCD1602 EN 0 1602 输入参数 x y 显示字符串的坐标 X 0 15 Y 0 1 LCD 第一行显示寄存器地址 0X80 0X8F LCD 第二行显示寄存器地址 0XC0 0XCF 2404 LCD 第 1 行显示地址 1 20 0 x80 0 x93 LCD 第 2 行显示地址 1 20 0 xc0 0 xd3 LCD 第 3 行显示地址 1 20 0 x94 0 xa7 LCD 第 4 行显示地址 1 20 0 xd4 0 xe7 void LCD set xy unsigned char x unsigned char y unsigned char address if y 0 address 0 x80 x else if y 1 address 0 xC0 x else if y 2 address 0 x94 x else if y 3 address 0 xD4 x LCD en command address void LCD write char unsigned x unsigned char y unsigned char dat LCD set xy x y LCD en dat dat void LCD write string unsigned char X unsigned char Y unsigned char s LCD set xy X Y set address while s write character LCDIO s SET LCD LCDIO LCD en dat s s void LCD init unsigned char bw BitWidth bw switch BitWidth case 4 LCD en command 0 x33 delayms 20 LCD en command 0 x32 delayms 20 break case 8 LCD en command 0 x38 delayms 20 LCD en command 0 x38 delayms 20 break LCD en command 0 x08 0 x08 令显示器 off delayms 5 LCD en command 0 x01 0 x01 清屏清屏指令 delayms 5 LCD en command 0 x06 0 x06 光标模式设置进入模式设置指令 写入数据后光标右移 delayms 5 LCD en command 0 x0c 0 x0c 显示开 令光标 0 x0c 不显示 0 x0d 显示闪动 delayms 5 void delayms unsigned char ms unsigned char i while ms for i 0 i 115 i void lcddelay void unsigned char i for i 0 i 2 i GPS 解码显示程序 include include 1602 h include math h include sbit GPS SPD P3 2 GPS 模块速率设置 sbit KEY1 P3 3 显示内容分屏切换 T0 T1 引脚 的第二功能为计数器 char code TIME AREA 8 时区 这是做的部分更改 unsigned long maxspeed b unsigned int count 0 unsigned int a 5 unsigned char hspeed 5 unsigned int dot count 小数点计数器 unsigned char x GPS 数据存储数组 unsigned char JD 10 经度 unsigned char JD a 经度方向 unsigned char WD 9 纬度 unsigned char WD a 纬度方向 unsigned char date 6 日期 unsigned char time 6 时间 unsigned char speed 5 0 0 0 0 速度 unsigned char high 6 高度 unsigned char angle 5 0 0 0 0 0 方位角 unsigned char use sat 2 使用的卫星数 unsigned char total sat 2 天空中总卫星数 unsigned char lock 定位状态 串口中断需要的变量 unsigned char seg 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 void sys init void bit chk key void main unsigned char i char Bhour sys init lock 1 use sat 0 0 use sat 1 0 total sat 0 0 total sat 1 0 while 1 if buf full 0 无 GPS 信号时 dsp count if dsp count 65000 LCD cls 清屏 LCD write string 0 0 No GPS connect LCD write string 0 1 Please Check while buf full 0 LCD cls dsp count 0 else 有 GPS 信号时 if chk key 检测到按键切换显示 page page LCD cls if page 页面 1 if buf full 0 x01 GGA 语句 if lock 0 如果未定位 LCD write string 0 0 LCD write string 0 1 else 如果已定位 LCD write char 0 0 JD a 显示经度 for i 0 i 3 i LCD write char i 1 0 JD i LCD write char 4 0 for i 3 i 10 i LCD write char i 2 0 JD i LCD write char 0 1 WD a 显示纬度 LCD write char 1 1 for i 0 i 2 i LCD write char i 2 1 WD i LCD write char 4 1 for i 2 i 9 i LCD write char i 3 1 WD i LCD write char 14 1 use sat 0 显示接收卫星数 LCD write char 15 1 use sat 1 buf full dsp count 0 if buf full 0 x02 GSV 语句 LCD write char 14 1 total sat 0 LCD write char 15 1 total sat 1 buf full dsp count 0 if buf full 0 x04 if lock 0 如果未定位 LCD write string 0 0 LCD write string 0 1 else 如果已定位 LCD write char 0 0 JD a 显示经度 for i 0 i 3 i LCD write char i 1 0 JD i LCD write char 4 0 for i 3 i 10 i LCD write char i 2 0 JD i LCD write char 0 1 WD a 显示纬度 LCD write char 1 1 for i 0 i 2 i LCD write char i 2 1 WD i LCD write char 4 1 for i 2 i 24 Bhour 24 else if Bhour 0 Bhour 24 LCD write char 0 1 date 4 LCD write char 1 1 date 5 LCD write char 2 1 date 2 LCD write char 3 1 date 3 LCD write char 4 1 date 0 LCD write char 5 1 date 1 LCD write char 8 1 Bhour 10 0 x30 LCD write char 9 1 Bhour 10 0 x30 LCD write char 10 1 LCD write char 11 1 time 2 LCD write char 12 1 time 3 LCD write char 13 1 LCD write char 14 1 time 4 LCD write char 15 1 time 5 LCD write string 5 0 knot A 在此处做的更改 if lock 0 如果未定位 LCD write string 0 0 LCD write string 11 0 else 已经定位 在 此处做的改动 最大速度处理 dot count 0 b 0 for i 0 imaxspeed maxspeed b 最大速度处理 if count 10 for i 0 i15 count 0 hspeed 0 maxspeed 1000 0 x30 把小数转成字 符数组 hspeed 1 maxspeed 100 10 0 x30 hspeed 2 maxspeed 10 10 0 x30 hspeed 3 hspeed 4 maxspeed 10 0 x30 count LCD write string 5 0 Km h A LCD write char 0 0 hspeed 0 LCD write char 1 0 hspeed 1 LCD write char 2 0 hspeed 2 LCD write char 3 0 hspeed 3 LCD write char 4 0 hspeed 4 最大速度显 for i 0 i 5 i LCD write char 11 i 0 angle i buf full dsp count 0 bit chk key void if KEY1 delayms 10 if KEY1 while KEY1 delayms 10 return 1 LCD cls 清屏 return 0 系统初始化 void sys init unsigned char i SCON 0 x50 SCON mode 1 8 bit UART enable rcvr TMOD 0 x21 TMOD timer 1 mode 2 8 bit reload if GPS SPD TH1 0 xfa TH1 reload value for 9600 baud 11 059MHz else TH1 0 xfd TH1 reload value for 4800 baud 11 059MHz TR1 1 TR1 timer 1 run LCD init 8 初始化 LCD LCD write string 0 0 GPS SIRF II 2 LCD write string 0 1 11 11 23 1342 for i 1 i 4 如果类型数据接收完毕 判断类型 if cmd 0 G if cmd 1 P if cmd 2 G if cmd 3 G if cmd 4 A cmd number 1 mode 2 seg count 0 byte count 0 else if cmd 3 S if cmd 4 V cmd number 2 mode 2 seg count 0 byte count 0 else if cmd 2 R if cmd 3 M if cmd 4 C cmd number 3 mode 2 seg count 0 byte count 0 else if mode 2 接收数据处理 switch cmd number case 1 类型 1 数据接收 GPGGA switch seg count case 2 纬度处理 if byte count 9 WD byte count tmp break case 3 纬度方向处理 if byte count 1 WD a tmp break case 4 经度处理 if byte count 10 JD byte count tmp break case 5 经度方向处理 if byte count 1 JD a tmp break case 6 定位判断 if byte count 1 lock tmp break cas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论