串口数据接收程序实例GPS文章来源:单片机及嵌入式系统应用巩志民作者:天大天财股份有限公司公司的(全球定位系统)定位应用市场日趋成熟,正在进入应用的高速发展时期。本文以一款EverMore摘要:目前GPS串口进行数据接收的程序。RS232单片机GM-X205GPS接受模块为例,介绍了其数据格式,以及应用PIC16F874应用简介GPS1、系统,已经在大地测绘、海上渔用、车辆定位监控、建筑、农业等各个领域得到广泛应用。从九十年代我国引GPS近年来的应用将会改变我GPSGPS定位技术开始,经过十多年的市场培育,GPS定位应用进入了发展的最好时机,未来十年基于进们的生活和工作方式。进行数据传输的。这些数据包括经度、纬度、海拔高度、串口与MCUGPS接受模块都是通过RS232目前市场上的大部分时间、卫星使用情况等基本信息。开发人员再依据这些基本数据,进行数据处理来完成整套的定位系统软件。模块数据格式GM-X2052、输出格式。信息如下:NMEA-0183在进行数据接受编程之前,先介绍一下该模块的数据格式。它支持)DataFixPositioningSystemGGA位置测定系统定位资料(Global)ViewSatellitesinGSV导航卫星资料(GNSS)DataSpecificGNSSRMC导航卫星特定精简资料(RecommendedMinimum)SpeedGroundOverGroundandVTG方向及速度等相关资料(Course数据为例,格式如下:由于文章篇幅问题,笔者在这里只以接收GGA$GPGGA,hhmmss,dddmm.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx*CS$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,,,,*1F例:说明见表:区域名称例单位说明1信息ID$GPGGAGGA协议开始2时间UTC033744hhmmss3纬度2446.5241dddmm.mmmm4北半球指示南/NN=north;S=south5.经度12100.1536dddmm.mmmm6东/西半球指示EW=westE=east;7定位指示10=未定位模式1=定位SPS模式DGPS,SPS2=定位8应位卫星数1000-129HDOP0.8米10海拔高度133.4米11海拔高度单位M米12WGS84水准面划分13WGS-84水准面划分单位14累计GPS数据微分本模块中不可用15参考工作站ID本模块中不可用16校验位*1F上面例子中,我们可读出位置信息:北2纬度446.5241分,西1经210度0.1536分林威治时秒44分间:3点37数据接收程序、3PIC16F874笔者在系统中把接收到的数据处理后,显示到图形液晶屏上。限于篇幅在这里只给出数据接收部分程序,并且只接收经度和时间信息,并且给出格林威治时间转换为北京时间的转换函数。其他数据接收程序类似。;***********************************************************PROGRAMGPSRECEIVER;ATHISIS;**********************************************************P=16F874LISTP16F874.INCINCLUDE********************寄存器定义;*******0X27EQUTEMP10X54W_TEMPEQU0X55EQUSTATUS_TEMP位数据10经度的EQULONG10X40LONG10LONG1---;0X41EQULONG2.0X42LONG3EQULONG4EQU0X43LONG5EQU0X44LONG6EQU0X45LONG7EQU0X46LONG8EQU0X47LONG9EQU0X48LONG10EQU0X490X58位数据;T1---T6时间的6T1EQU0X59T2EQU0X60T3EQU0X61EQUT40X62T5EQU0X63T6EQU;********************************************************00HORGNOPNOPMAINGOTO设定按中端健才开始数据接受;ORG04HNOPNOPINTERRUPTGOTO**********';*********判断头文件是不是'$GPGGAIDMESSAGETUS,RP0STABCFBREAK0PANDCALLMOVWFTEMP1MOVLW'$';detect$TEMP1,0SUBWF.TUS,ZBTFSSSTABREAK0GOTOPANDCALLTEMP1MOVWFG;detectMOVLW'G'TEMP1,0SUBWFTUS,ZBTFSSSTABREAK0GOTOPANDCALLTEMP1MOVWFP'P'MOVLW;detectTEMP1,0SUBWFTUS,ZSTABTFSSBREAK0GOTOPANDCALLTEMP1MOVWFG;detectMOVLW'G'TEMP1,0SUBWFTUS,ZSTABTFSSBREAK0GOTOPANDCALLTEMP1MOVWFGMOVLW;detect'G'TEMP1,0SUBWFTUS,ZSTABTFSSBREAK0GOTOPANDCALLTEMP1MOVWFA;detectMOVLW'A'TEMP1,0SUBWFTUS,ZSTABTFSS.BREAK0GOTO跳过逗号PAND;CALLRETURN******************接收函数;************RECEIVE开始时间数据接收PAND;CALLT1MOVWFPANDCALLT2MOVWFPANDCALLT3MOVWFPANDCALLT4MOVWFPANDCALLT5MOVWFPANDCALL时间数据接收完成MOVWF;T6跳过逗号CALL;PAND开始CALL---PAND10位纬度数据;跳过PANDCALLPANDCALLPANDCALLPANDCALLPANDCA...