基于单片机及GPS器件的定位与测量系统设计(5)

2019-03-22 13:14

7.2 程序设计

7.2.1 程序功能

该程序的主要功能有两个方面,一方面是使用单片机和GPS 模块通信,获得当前的方位数据,另一方面是单片机将所得字符数据处理成数值,并发送到液晶显示模块进行显示。本例中的函数有:主程序,GPS数据通信程序,液晶的驱动以及液晶的显示。 ·主程序 main()

·通信程序 serial()

·液晶的驱动 INTIAL() CLEAR() CWE1(void) DWE1(void) CWE2(void) DWE2(void) ·液晶的显示

void locate(page,column) void onechar()

void show(void) 7.2.2变量说明

单片机程序中的变量和功能如下表1所示:

表7.1 变量和功能说明

函数 void locate(page,column) void onechar() void show(void) void main(void) NDIG stringgps[ ] record number igps numbercoma numgps void CWE1(void) void CWE2(void) void DWE1(void) void DWE2(void) 功能说明 液晶显示字符定位由page页column列开始显示 液晶显示输出一个字符 液晶显示字符串输出 主程序,实现完整的系统功能 待显示的字符数 记录GPS数据的数组 进行通信数据记录的标志位 有效数据的长度变量 记录GPS数据字符数量的变量 记录逗号数量的变量 数值类型的GPS数据 向液晶模块E1写控制指令 向液晶模块E1写显示数据 向液晶模块E2写控制指令 向液晶模块E2写显示数据

7.2.3 程序代码

单片机对GPS 模块的串行数据接收,整理和向RAM 中写入数据的基本流程如图7.1。

程序分为6部分,分别是

·液晶主程序;

·串口接收子程序函数;

·字符显示程序disp.c的内容; ·制定显示位置函数; ·显示一个字符的函数; ·显示一个字符串; 具体程序内容见附录1。

图7.1 单片机对GPS模块的控制流程图

结束语

GPS接收机OEM板价格的低廉和超小体积板子的大量生产,使得目前市场上手持GPS产品大量涌现,为GPS的应用展示了广阔的前景。本文结合MCS-51 单片机和GPS25LP型GPS OEM 板的硬件特点,分析和介绍了构成GPS 基本应用系统的核心硬件组成和关键软件设计, 给出了硬件电路和软件流程,为普通用户了解、设计和应用GPS 系统提供了理论和实践上的指导。

随着GPS 由军用逐渐转向民用, GPS 在车载导航、大地测量、远洋船舶导航、远程监视等领域GPS应用越来越广泛,我们的设计只是应用的基础和开端。

在实际应用中我们要结合各个领域的特殊情况和特定的技术需求,进行有针对性的处理和设计。

参考文献

[1]杜树春,张体才.单片机与外围器件接口实例详解[M].中国电力出版

社,2009.

[2]沙占友,孟志永.单片机外围电路设计(第2版)[M].北京:电子工业出版社,2006.

[3]梅丽凤,王艳秋,汪毓铎,张军.单片机原理及接口技术[M].北京:北京交通大学出版社,清华大学出版社.2004.

[4]刘瑞华.MCS-51单片机与GPS -OEM板的串行通信研究与开发[J].电讯技术,2004,(5):93-95.

[5]刘晓,伍小东,姚军光,魏权利.基于单片机采集GPS数据系统的设计[J].青岛.

[6]张海龙.基于单片机的GPS定位显示系统[J].无线互联:2004,3:47. [7]王占猛.GPS与单片机接口程序设计[J].汽车电子及检测技术专

题,2007.7. [8]姚敏,郭庆.基于MCS-51系列单片机的GPS独立定位设备的研究[J].计算机与信息技术.2006,2(8):79-82.

[9]李光飞. GPS定位信息的单片机控制显示系统[J].中文核心期刊,《微计算机信息》(测控自动化),200420(11):92-93.

[10]徐进,周宁.GPS接收机的单片机通讯接口[J].电子器件,1999,22(3).182-187.

[11]李朝青.单片机&DSP外围数字IC技术手册(第2版)[M]北京航空航天大学出版社2005.10.

[12]李远,胡修林,赵文同等.基于GPS OEM板和单片机的定位终端开发[J].技术交流,2004,(6):22-26.

[13]索明何,饶运涛,邢海霞.基于单片机的液晶显示系统设计[J].科技广场2008,7(2):22-24.

[14]楼然苗,李光飞.单片机课程设计指导[M] 北京航空航天大学出版社 2007.7

附录1:程序详单

·主程序

//定义头文件,函数和变量 #include〈stdio.h〉 #include〈absacc.h〉 #include〈reg51.h〉 /*define variable type*/ #define uchar unsigned char #define uint unsigned int

void INITIAL(viod); /*液晶显示初始化*/ void CLEAR (viod); /*液晶显示清屏*/ void locata(uchar page,uchar column); /*指定首字符显示位置*/ void show(void);

/*从当前位置开始显示缓冲区BUFFER中的内容*/ char data BUFFER[15]; /*显示缓冲区*/ uchar data NDIG; /*待显示的字符数*/ int xdata sumup=0; /*测试用的变量*/ uchar idata stringgps[8]; uint k,i,j,k1;

uint record,number; uint igps;

uint numbercoma; uint len1,len2,len3; uint numgps;

//main()主函数,初始化变量和液晶的初始化内容 void main(void) {

TMOD=0x20; //初始化串口 TL1=0xfd; TH1=0xfd; SCON=0x50; PCON=0x00; IE=0x90; TR1=1; P1_0=0;

INITIAL(); /*显示初始化*/

CLEAR(); /*清屏*/

/*从page3,column4开始显示“sumup=rdy” */ /*固定长度的字符串显示*/ locate(3,4);

NDIG=sprintf(BUFFER,“sumup=rdy”); show(); //显示子函数 sumup=12345;

/*从page2,column4开始显示“sumup=12345”,为含数值的长度不确定的字符串显示*/

locate(2,4);

NDIG= sprintf(BUFFER,“sumup=﹪d”,sumup);

show(); //显示子函数

/*按键查询方式显示初始内容*/ for(;;) {

locate(0,2);

/*从page0,column2开始显示“k1:〈被按下的次数〉”*/ NDIG= sprintf(BUFFER,“k1=﹪d ”,k1); show(); } }

·串口接收数据子函数

//接收GPS的数据,采用GPRMC格式语句,此处只接受经纬数据 serial()interrupt4 using1 {

RI=0; //软件清除中断标志位

//判断是否收到GPRMC格式语句的第一个字符“$”,其数值为0x24,收到后开始记录数据

//并设置记录标志record=1。*/ if(SBUF= =0x24)

{

record=1; I=0;

Igps=0; //记录维度数据字符数量的变量 Numbercoma=0; //记录逗号数量的变量 }

if(record==1) // 开始处理GPRMC中的数据信息 {


基于单片机及GPS器件的定位与测量系统设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:气候变化演讲(英语)-宋哲

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: