版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本 科 毕 业 设 计(论文)单片机控制的gps定位系统设计the design of gps positioning system controllcd by single-chip microprocessor学 院(系): 计算机科学与技术系 专 业: 通信工程 学 生 姓 名: 学 号: xxxxxx 指 导 教 师(职称): (教授) 评 阅 教 师: 完 成 日 期: 2011年3月 (英文)单片机控制的gps定位系统设计通信工程专业 xxx摘要gps技术在军事、通讯、气象、勘探、导航、遥感、大地测量、地球动力以及天文等众多学科领域得到极其广泛的应用,推动了科学技术的迅猛发展,也
2、丰富了人类的科学文化生活。现在,gps的外型设计已经转向便携式发展,逐步踏入寻常百姓的生活中。所以,对gps的研究具有十分重要的意义。 论文主要研究gps的定位原理与技术,单片机的编程及其应用,液晶屏的功能及其实现方法。制作了一套设计方案,以软、硬件相结合的方式完成整个gps数据接收和显示的过程。完成了一台液晶显示的手持式gps定位接收设备,并依次显示实时时间及所在地的经纬度。该定位系统完成后,定位精度能达到15m,所以该装置在测控领域的应用开发中具有一定的实用价值和借鉴价值。关键词at89c52单片机;gps;串口通信;lcd显示the design of gps positioning s
3、ystem controllcd by single-chip microprocessorcommunication engineering major li jun-jianabstract: global positioning system technology get extremely comprehensive application at military,communications,meterology,exploration,navigation,remote sensing,earth survey, earth mover ,astronomy and other n
4、umerous subject field;let technology rapide development,also it makes human science culture life plentiful。 now, assistant global positioning system exterior design already change of direction to portable type,step by step enter comman peoples daily life。 therefore, researching assistant global posi
5、tioning system has very important meaning。paper main research gps position theory and technique,program and application of singlechip,the function and implement way。make a set of design proposal,with soft to link hardware accomplish whole gps information acceptance and evincive process。accomplish on
6、e handheld gps position receiving machine with liquid crystal display,and display real time period and the location of latitude and longitude one by one。with the position system complete,the position precision can reach fifteen meters, so the system in measurement and control field application devel
7、opment have some practical worth and reference worth。key words: at89c52 scm;gps;serial port communication; lcd display目 录1 前言111 gps前景112 gps概述1121 控制任务2122 数据采集方案22 硬件设计321 整版设计322 电源模块设计423 显示模块设计524 gps数据模块设计53 软件设计731 主程序设计732 显示驱动程序933 硬件连接设置1034 lcd显示工作模式1035 系统主程序1036 数据接收程序114 调试及性能分析1341 软件
8、调试14411 目标程序纠错14412 子程序功能调试14413 整体程序综合调试1642 硬件调试18结束语21参考文献21附录一:(电路图)22附录二:(程序列表)23致谢321 前言11 gps前景 由于gps技术所具有的全天候、高精度和自动测量的特点,作为先进的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展的各个应用领域。随着冷战结束和全球经济的蓬勃发展,美国政府宣布2000年至2006年期间,在保证美国国家安全不受威胁的前提下,取消sa政策,gps民用信号精度在全球范围内得到改善,利用c/a码进行单点定位的精度由100米提高到20米,这将进一步推动gps技术的应用,
9、提高生产力、作业效率、科学水平以及人们的生活质量,刺激gps市场的增长。据有关专家预测,在美国,单单是汽车gps导航系统,2000年后的市场将达到30亿美元,而在我国,汽车导航的市场也将达到50亿元人民币。可见,gps技术市场的应用前景非常可观。12 gps概述广义的gps,包括美国gps、欧洲伽利略、俄罗斯glonass、中国北斗等全球卫星定位系统,也称gnss。狭义的gps,即指美国的全球定位系统global positioning system,简称gps。公众常称的gps,通常是指gps系统的接收设备,如手持式gps、汽车导航仪等。即全球定位系统(global positioning
10、system)。简单地说,这是一个由覆盖全球的24颗卫星组成的卫星系统。这个系统可以保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达目的地。全球定位系统(gps)是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统 。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,是美国独霸全球战略的重要组成。经过20余年的研究实验,耗资300亿美元,到19
11、94年3月,全球覆盖率高达98%的24颗gps卫星星座己布设完成。 gps全球卫星定位系统由三部分组成:空间部分gps星座;地面控制部分地面监控系统;用户设备部分gps 信号接收机。gps定位技术具有高精度、高效率和低成本的优点,使其在各类大地测量控制网的加强改造和建立以及在公路工程测量和大型构造物的变形测量中得到了较为广泛的应用。本设计是一个lcd1602电子液晶显示屏显示动画的设计。整机以atmel 公司生产的40脚单片机at89c52为核心,介绍了以它为控制系统的lcd电子液晶显示屏的动态设计和开发过程。该电子显示屏内部自带了ascii码识别显示控制电路部分,如果需要显示一个西文字符,只
12、需要让单片机给他输入这个西文字符的ascii码即可。文中详细介绍了lcd显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计。121 控制任务本设计采用at89c52单片机为核心控制芯片,控制任务包括两个部分:数据接受控制和显示控制。:数据接收控制:51单片机内部集成了串行口通信电路,本设计应用这个电路接收外部数据,其数据格式为八位数据+1位停止位。把接收到的数据存储到数据缓冲区。:显示控制:利用51单片机的i/o端口控制lcd1602液晶显示器显示相应信息;显示之前先从缓冲区取出数据,经过cpu处理过后,送到lcd1620显示需要信息。122 数据采集方案为了减少接收出错的问
13、题,采集数据时使用串行口中断数据接收方式。方案:直接接收,不论接收到的数据是什么,先把串行口发送过来的数据接收到数据缓冲区过后,再对数据进行处理。gps模块为一种智能模块,它每秒钟会发出几种数据,包括:$gpgga、$gprmc、$pgrmv、$pgrmo、$pgrmc等数据格式。每个数据为1536个字节数据,如果把每个数据都接收到单片机的缓冲区,那么单片机就需要很大的数据存储器ram,这样单片机内部的ram是不够用的,更何况还有程序处理。所以这种数据采集的方案是不行的。方案:选择接收,先判断接收到的数据的格式,然后选择需要的格式中的一些数据进行存储。这样就大大的节余了ram,解决ram不够用
14、的问题。例如:接收$gpgga格式数据的时间:前五次数据接收的时候先判断数句格式(依次判断接收到的数据是否先后为$、g、p、g、g、a),如果是,然后判断接下来的逗号(,)是第几个逗号。如果是第一个,说明接下来的数据是时间,如果是第二个,说明接下来的数据是纬度,依此类推。本设计采用这种方案接收数据。方案比较:前者数据接收的方案虽然接收的方法简单,接收程序编写很容易,但是学要很大的ram空间,设计时需要外加存储器,程序编写时就得多写上数据存储处理程序。这样就大大的增加了开发的诸多问题,包括成本,开发时间,试调难度等。后者数据接收方案比起前者来说节约了不少的ram,而且再数据接收前只需要先简单判断
15、接收到的数据格式即可;而且减少了中断处理的时间,让给其它进程工作。减少了开发的成本和开发时间,以及电路的复杂程度。所以本设计采用第二种数据接收的方案。2 硬件设计系统硬件部分电路大致上可以分成稳压电源、单片机小系统及外围电路和lcd显示屏电路三部分。电路为单片机89c52控制的gps器件,实现定位系统数据的采集和现实。其中所使用的器件主要是3个,打片机89c52、gps模块garmin gps25以及lcd显示模块mgls-12032a。在这里仅列出单片机和lcd接口部分电路的器件名称和相关的主要功能。l 89c52:lcd的控制器,控制字符的发送和点阵显示的时序。l max202:ttl电平
16、和rs-232电平的转换芯片。l lcd:液晶显示模块。在单片机的 控制下,按照要求的格式显示接受到的数据。21 整版设计设计原理图:电源串行口51单片机gps模块lcd1602以单片机为核心将gps数据发送模块,lcd1602显示模块系统的结合在一起形成一个整体,实现特定功能。22 电源模块设计各个模块的电源供电电压均为5v,所以只需要设计5v单电源供电即可。设计采用稳压芯片lm7805做电源稳压核心。电路图如下所示,输入电压为220v交流电,经过变压器降压为9v交流电,再运用二极管的单向导电性对9v交流电整流,使用二级管连接成整流槽,使电压负电压整流成正电压。电容c1为滤波电容,让电压波纹
17、幅度减小,然后由lm7805集成稳压芯片将输入电压整流为5v稳压源。小电容c3,、c4为高频信号滤除电容,改善负载的瞬态响应。图2-1 电源模块电路图23 显示模块设计由与本设计显示需要显示相应的数据信息,包括相应的西文字符,所以不采用数码管显示,采用带西文字库的lcd1602做显示器,显示电路如下图2-2 液晶显示电路图电路中的可变电阻rv2最大阻值为1k,其作用为调节vee输入引脚的电压,实现对lcd1602对比度的调节。lcd的数据端口的工作方式有两种,一种为8数据线工作方式,另一种为4数据线工作方式。为了节余端口,本设计采用4数据线工作方式。每次向lcd写8为数据分两次写,先高位后低位
18、。24 gps数据模块gps数据模块不需要自己设计,采用成品电路模块做数据传送。我们只需要设计gps数据通行部分即可。gpgga数据格式:$gpgga,m,m,*xx$gpgga:起始引导符及语句格式说明(本句为gps定位数据); :utc时间,格式为hhmmss.ss; :纬度,格式为ddmm.mmm(第一位是零也将传送); :纬度半球,n或s(北纬或南纬) :经度,格式为dddmm.mmm(第一位零也将传送); :经度半球,e或w(东经或西经); :定位质量指示,a 为有效位置, v为非有效接收警告,即当前天线视野上方的卫星个数少于3颗; :使用卫星数量,从00到12(第一个零也将传送);
19、 :水平精确度,0.0到99.9; :天线离海平面的高度,-9999.9到9999.9米; m :指单位米:大地水准面高度,-9999.9到9999.9米; m :指单位米:差分gps数据期限(rtcm sc-104),最后设立rtcm传送的秒数量;:差分参考基站标号,从0000到1023(首位0也将传送)。 * : 语句结束标志符。 xx : 从$开始到*之间的所有ascii码的异或校验和。: 回车。: 换行。gps数据通信为232串口通信,在通信过程中就需要数据电平转换,应用到232通信电平转换芯片max232,电路如下:图2-3 max232电路在单片机串口收到信息后,先判别是否为语句引
20、导头“$”,然后再接收信息内容,在收到“*”字符asc码后再接收二个字节结束接收,然后根据语句标识区分出信息类别以对收到asc码进行处理显示。注意在处理北京时间时应在utc时间上加上8小时才是准确的北京时,在超出24小时时应作减24小时处理。3 软件设计本设计的主要功能是接收gps模块传送的数据,并显示出相应的数据信息,包括当地时间、纬度、经度以及高度。数据接收部分,采用串行口中断接收数据。显示部分就采用一个i/o口控制lcd1602显示相应的信息。31 主程序设计系统主程序的总体结构如图3-1所示。系统的主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断,lcd1602初始化
21、;然后lcd显示屏进入开机状态,显示开机信息(lcd_log),转入正常的显示,并接收数据,每次显示两串字符。接着由于单片机没有停机指令,所以可以设置系统程序不断地循环执行数据信息显示。系统程序结构属中断方式,绝大多数功能在中断服务子程序中完成。根据总体结构,可将程序划分为几个功能化模块:串行口中断服务程序、显示子程序、扫描程序。各个模块可进行独立设计、调试和查错,最终再连接成一个整体。开始系统初始化显示开机信息显示数据信息图3-1 系统主程序的总体结构系统主程序的总体结构如图3-1所示,首先是系统初始化,然后是显示开机信息,最后根据系统接收到的信息综合处理,得到数据显示到显示屏上。ny进入中
22、断清除接收中断标志位退出中断数据格式判断不符合置标志位符合数据接收标志位01数据接收完毕清除标志图3-2 数据接收程序流程图32 显示驱动程序void lcd_check_busy(void); /忙检查void lcd_cls(void); /清屏void lcd_write_data(unsigned char); /写数据void lcd_write_instruction(unsigned char); /写指令void lcd_set_position(unsigned char); /设置光标位置void lcd_initial(void); /lcd1602初始化void lcd
23、_printc(unsigned char); /输出单个字符void lcd_prints(unsigned char *);/输出字符串void lcd_log(void);/开机信息显示void lcd_show(void);/信息显示 void delay(unsigned char);/延时33 硬件连接设置#define lcd_data p2 /lcd的数据口#define lcd_busy lcd_data7; /lcd忙信号位sbit lcd_rs=p20; /lcd寄存器选择sbit lcd_rw=p21; /lcd读写控制sbit lcd_en=p22; /lcd使能信号
24、寄存器选择位rs,当rs=1时选择数据寄存器ddram。 当rs=0时选择指令寄存器cdram。读写选择位rw,当rs=1时读数据寄存器。 当rs=0时写数据或指令到寄存器。读写使能信号en,当en=1时读取数据。当en为下降沿是为写数据或指令。检测lcd是否在处理其它数据而处于忙状态时,则读取忙状态信号位,当rs=0,rw=1,e=1时,lcd会输出八位数据,其中最高位db7为忙状态位(lcd_busy_flag),若为1,表示lcd处于忙状态,为0表示lcd空闲。34 lcd显示工作方式/* 初始化lcd */void lcd_initial(void) lcd_write_instruc
25、tion(lcd_display_double_line); /单行显示,4数据线lcd_write_instruction(lcd_ac_auto_increment | lcd_move_disenable); /光标自动+1,关闭自动移动显示lcd_write_instruction(lcd_display_on | lcd_cursor_off | lcd_cursor_blink_off);/显示开、光标显示关、光标闪烁关 lcd_cls( );/清屏35 系统主程序/*/void main()tmod=0x20;/初始化串口tl1 =0xfa;th1 =0xfa;/4800波特率s
26、con=0x50;/工作方式1:八位异步通信,允许接收pcon=0x00;/波特率加倍关ie=0x90;/打开总中断ea,和串行口中断estr1=1;/开启启动定时器1lcd_initial( );/lcd1602初始化lcd_log( );/显示开机信息 while(1) lcd_show( );/除了数据接收状态,一直处理显示 在串口通信中需要设置串口通信的数据传输速度,及波特率,设置定时器的溢出率即可,晶振为11。0592mhz,当tl1 =0xfa;,th1 =0xfa时为4800kbps波特率。计算公式为:t0初值x=2tmod特殊功能寄存器为定时器计数器工作方式寄存器,前四位控制定
27、时器1,后四位控制定时器0;本设计采用定时器1,工作方式2(八位自动重装载,n=8),scon为串行口数据通信控制特殊寄存器,高三位为工作方式控制位,本设计采用工作方式1,8位数据异步通信。d4位为接收允许控制位,本设计要采用串行口中断接收gpgga数据,所以该为置1。ie为中断允许控制特殊寄存器,本设计要打开串行口中断和总中断。36 数据接收程序/*串行口中断子程序*/ri=0;/软件清除中断标志位,串行口中断需要软件清零,去除中断标志进入中断过后要先判断接收数据的格式,否则会出现乱接收数据,出现接收到的数据不对的问题,先判断是否接收到gpgga格式语句的第一个字符“$”,其ascii码为0
28、x24,收到后,继续判断格式是不是为gpgga,分五次中断判断,如果是,开始记录数据并设置记录标志(read_start),否则退出数据接收中断,程序设计如下:if(sbuf=$)/判断是不是$符号flag1=1;/接收到$,起始字符igps=0;/记录纬度数据字符数量的变量num_comma=0;/记录逗号数量的变量 else flag1=0;if(sbuf=g)&(flag1=1)flag2=1;else flag2=0;if(sbuf=p)&(flag2=1)flag3=1;else flag3=0;if(sbuf=g)&(flag3=1)flag4=1; else flag4=0;if
29、(sbuf=g)&(flag4=1)flag5=1;else flag5=0;if(sbuf=a)&(flag5=1)read_start=1;/开始接收数据 else read_start=0通过上述格式判断后,说明接下来的数据就是所需要的gpgga格式数据,然后选择所需要的数据接收并存到缓存区,每个数据都是以逗号隔开的,我们只需要判断该逗号是第几个逗号就可以知道后面来的数据是表示说明含义。程序设计如下if(read_start=1)/开始接收gpgga中的数据信息,(sbuf=,)/利用gprmc数据中的逗号间隔,区分接收到/的数据表示的信息 num_comma+;/记录逗号个数,标志数据
30、的意义if(num_comma=1)/接收时间,时分秒格式 data_tempigps=sbuf;igps+;/接收到的数据个数加1if(num_comma=2)/接收接收纬度,ddmm.mmm格式data_tempigps=sbuf; igps+;if(num_comma=4)/接收经度,ddmm.mmm格式data_tempigps=sbuf; igps+;if(num_comma=10)/海拔高度:099999.9if(sbuf!=m)/为节约ram空间,不接收m字符 data_tempigps=sbuf;igps+;判断这一帧数据是否接收完毕,每一个数据格式都是以 * 符号结束的,当接
31、收到 * 号时表示这一帧数据已经发送完毕。程序设计如下:if(sbuf=*)/判断是否收到gprmc格式语句的字符“*”,/如果是,则表示接收完毕,开始处理for(i=0;iigps;i+)data_tempigps=dis_tempigps;/数据放到显示缓冲区/返回初值;标识结束一次接收完毕read_start=0;num_comma=0;igps=0;4 调试及性能分析一个单片机系统经过总体设计,在允许的条件下,根据本设计系统的需求性首先采用在pc机上用模拟开发软件进行检测和调试,再进行硬件的组装与调试。41 软件调试软件调试采用proteus 7.1、操作系统windows xp,在p
32、c机上对目标电路原理图和程序进行检测和调试。4。1。1 目标程序纠错图4-1目标程序调试412 子程序功能调试程序设计通常采用模块程序设计,调试时可对一个个子程序分别进行调试,设置好入口条件,然后采用单步运行或断点运行方式,检查系统cpu现场、ram和i/o口状态,看程序执行结果符合设计要求。图4-2 子程序功能调试分步编译c51程序,通过一系列的调试,验证各个子程序的正确性。并从项目工程的角度综合调试,调试整个项目,如图4-3所示:图4-3 生成hex文件在调试成功顺利编译之后,通过一系列设置,生成hex目标文件,4-4所示:图4-4 生成hex文件413 整体程序综合调试即把各子程序整体连
33、起来进入到综合电路调试,能实现预计的功能显示。图4-5整体测试用软件仿真调试和修改完毕,下一步焊接硬件进行硬调试。图4-6 运行仿真电路42硬件调试焊接硬件,检查线路连接正确无误。硬件调试环境,电源输入220v交流电,输出4。98v直流电,给电路板接通4。98v直流电源。调试过程如以下几图所示。在7号楼6楼的计算机硬件实验室里,借助实验板等设备仿真与调试,由于是第一次启动,所以系统整体反应较慢,如图4-7:图4-7 冷启动界面待系统运行一段时间之后,单片机与gps模块之间进行数据的处理,把处理所得的信息按照预定格式显示在数据窗口内,如图4-8所示:图4-8 启动一段时间之后待系统运行稳定后,各
34、个预定数据正常显示,如图4-9所示,界面显示搜索接收到9颗卫星所发出的gps信号,并显示当前日期为2011/04/08,时间为11:35:21,经纬度为东经:1123237,南纬325810等信息,基本上满足预先设计的结果。图4-9 仿真运行界面信息通过不断的调试、排错,系统处于稳定正常接收出路数据状态,如图4-10所示,整体接收界面良好,系统运行稳定,每隔1秒数据窗口连续滚动实时显示gps接收到的数据信息。图4-10 整体仿真运行效果结束语以上仅对lcd显示屏的结构和驱动、显示电路原理作一详细介绍和分析。由于自己知识水平的局限和时间的仓促,设计中或还存在着一些不足,我真诚的接受老师们的批评和
35、指正。从课题选择、方案论证到具体设计,每一步对我来说无疑是巨大的尝试和挑战,我不断地给自己提出新的问题,然后去论证、推翻,在这个往复的过程中,我这篇稚嫩的设计日趋完善。每一次改进我都收获良多,虽然我的设计作品不是很成熟,而且借鉴了前人的很多资料,但我仍然心里有一种莫大的幸福感,因为我实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程,更重要的是这个设计中我加入了自己鲜活的思想。在做这次毕业设计过程中使我学到了很多,加深了对单片机、集成模块、lcd液晶显示屏和c语言的理解,验证了所学理论知识,提高了基本的解决实际问题的能力,并增加了对电子设计方面的兴趣。希望这次的经历能让我
36、在以后的工作和生活中不断成长与进步。 参考文献1 周国运。单片机原理及应用(c语言版)。北京:中国水利水电出版社,20102 邱致和,王万义。 gps原理与应用。北京:电子工业出版社,2001 3 51单片机接收gps数据的算法与实现。 淮安:淮安信息职业技术学院,20084 王丙祥,李建海。 基于89c52的gps板电路设计与实现。西安文理学院学报(自然科学版),20075 卫星接收模组使用手册。長天科技股份有限公司6 聂荣。实例解析pcb设计技巧-基于protel dxp。 北京:机械工业出版社, 20067 王惠南。 gps导航原理与应用。北京:科学出版社,20038 洪大永。gps全球
37、定位系统技术及其应用。厦门:厦门大学出版社,19989 李征航。空间定位技术及应用。武汉:武汉大学出版社,200310 李洪涛,许国昌,薛鸿印。gps应用程序设计。 北京:科学出版社,199911 钱天爵,翟学林。gps全球定位系统及其应用。北京:海潮出版社,199412 王广运,郭秉义,李洪涛。差分gps定位技术与应用。北京:电子工业出版社,1996附录一:(电路图)系统电路图附录二:(程序列表)程序清单:程序文件一:gpsrecive.c#includeunsigned char num_comma=0;/逗号纪录数bit read_start=0;/开始接收数据标志位unsigned c
38、har *data_temp= ;/数据缓存区unsigned char *dis_temp=0139250056.25680014.256901203.5;/显数据unsigned char i,igps=0;/igps纪录接收次数,以表示存储在数组中的位置bit flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;/接收标志位:gpgga#define start$/字符串开始#define end*/字符串结束void lcd_show( )unsigned char i;lcd_set_position(0);lcd_prints(time- );for(i
39、=0;i2;i+) lcd_printc(dis_tempi);lcd_printc(:);for(i=2;i4;i+) lcd_printc(dis_tempi);lcd_printc(:);for(i=4;i6;i+) lcd_printc(dis_tempi);lcd_set_position(0x40);lcd_prints(latit:);for(i=6;i15;i+) lcd_printc(dis_tempi);lcd_printc(*);delay(200);delay(200);lcd_cls();lcd_set_position(0);lcd_prints(longi:);f
40、or(i=15;i24;i+) lcd_printc(dis_tempi);lcd_printc(*);lcd_set_position(0x40);lcd_prints(high : );for(i=24;i31;i+) lcd_printc(dis_tempi);lcd_prints(m);delay(255);delay(200);/*串行口中断子程序*/void serial() interrupt 4ri=0;/软件清除中断标志位/判断是否接收到字符“$”,ascii码为0x24,收到后开始继续数据并置标志/record=1;if(sbuf=$)/判断是不是$符号flag1=1;/开
41、始接收数据,计数变量初始化(清零);igps=0;/记录纬度数据字符数量的变量num_comma=0;/记录逗号数量的变量else flag1=0; /判断读取格式是不是gpgga格式if(sbuf=g)&(flag1=1)flag2=1; else flag2=0;if(sbuf=p)&(flag2=1)flag3=1; else flag3=0;if(sbuf=g)&(flag3=1)flag4=1; else flag4=0;if(sbuf=g)&(flag4=1)flag5=1; else flag5=0;if(sbuf=a)&(flag5=1)read_start=1; else r
42、ead_start=0;if(read_start=1)/开始处理gprmc中的数据信息,if(sbuf=,)/利用gpgga数据中的逗号间隔,判断数据信息num_comma+;/记录逗号个数,标志数据的意义if(num_comma=1)/接收时间,时分秒格式data_tempigps=sbuf;/将字符放入字符串/“data_temp”中igps+;if(num_comma=2)/接收接收纬度,ddmm.mmmm格式data_tempigps=sbuf;igps+;if(num_comma=4)/接收精度,ddmm.mmmm格式data_tempigps=sbuf;igps+;if(num_
43、comma=10)/海拔高度:099999.9if(sbuf!=m)/不接受m单位数据,节省资源data_tempigps=sbuf;igps+;if(sbuf=*)/判断是否收到字符“*”,是,则结束接收,/开始处理for(i=0;iigps;i+)data_tempigps=dis_tempigps;/返回初值;标识结束一次接收完毕num_comma=0;read_start=0;igps=0;/*/void main()tmod=0x20;/初始化串口tl1 =0xfd;th1 =0xfd;/4800波特率scon=0x50;/工作方式1:八位异步通信,允许接收pcon=0x00;/波特
44、率加倍关ie=0x90;/打开总中断ea,和串行口中断estr1=1;/开启启动定时器1lcd_initial();lcd_log();/开机显示信息while(1)lcd_show();程序文件二:lcd1602.c#include header.hvoid lcd_check_busy(void) uchar dh;/高字节 do /分两次写,每次写四位,先高位后低位 lcd_rs=0; lcd_rw=1; lcd_en=0; lcd_en=1; _nop_(); _nop_(); dh = lcd_data & 0xf0; lcd_en=0; lcd_rw=0; lcd_rw=1; lc
45、d_en=1; _nop_(); _nop_(); lcd_en=0; while (dh & 0x80);void lcd_write_instruction(unsigned char lcd_instruction) lcd_data&= 0x0f; lcd_data|= (lcd_instruction & 0xf0);lcd_rs=0; lcd_rw=0; lcd_en=0;lcd_en=1;_nop_();_nop_();lcd_en=0; lcd_data&= 0x0f; lcd_data|= (lcd_instruction 4);lcd_en=1;_nop_();_nop_(
46、);lcd_en=0;lcd_check_busy();/* 输出一个字节数据到lcd */void lcd_write_data(unsigned char lcd_data) lcd_data&= 0x0f; lcd_data|= (lcd_data & 0xf0);/ get the most significant nibble first。 lcd_rs=1;lcd_rw=0; lcd_en=0; / specify a data1 write operation。 lcd_en=1; _nop_();_nop_();lcd_en=0; lcd_data&= 0x0f; lcd_da
47、ta|= (lcd_data 4); / repeat for least significant nibble。 lcd_en=0; lcd_en=1;_nop_();_nop_();lcd_en=0; lcd_check_busy(); /* lcd清屏 */void lcd_cls(void) lcd_write_instruction(1);/* lcd光标定位到x处 */ void lcd_set_position(unsigned char x) lcd_write_instruction(0x88); lcd_write_instruction(0x80|x);/* 输出一个字符
48、到lcd */void lcd_printc(unsigned char lcd_data) lcd_write_data(lcd_data);/* 输出一个字符串到lcd */void lcd_prints(unsigned char *lcd_string) unsigned char i=0; while(lcd_stringi!=0x00)/是否到了最后-0 lcd_write_data(lcd_stringi); i+; /* 初始化lcd */void lcd_initial(void) lcd_write_instruction(lcd_display_double_line);lcd_write_instruction(lcd_ac_auto_increment|lcd_move_disenable); lcd_write_instruction(lcd_display_on|lcd_cursor_off|lcd_cursor_blink_off);lcd_cls();/* 开机显示信息 */void lcd_log(void)unsigned char i;lcd_set_position(0x40);lcd_prints(wellcome! gps); delay(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版出租车投资入股及品牌拓展合同3篇
- 二零二五年建筑工程安全施工协议书范本3篇
- 2024甲乙双方就新产品研发项目所签订的技术秘密保护合同
- 2024版合作社商用物业租赁协议范本版B版
- 二零二五年能源公司股份代持与能源项目合作协议3篇
- 2024辽宁事业单位聘用合同书
- 2024版场地租赁协议书模板
- 二零二五年道路运输安全生产责任合同3篇
- 二零二五年文化场馆建设项目劳务分包合同3篇
- 二零二五版二手房交易佣金及税费代理合同3篇
- 《小学数学课堂教学中创设情境的实践研究》开题报告
- 期末 (试题) -2024-2025学年人教PEP版(2024)英语三年级上册
- DB34∕T 4010-2021 水利工程外观质量评定规程
- 纳米复合材料的增韧增能机制
- 图书馆前台接待工作总结
- 卫生院药品管理制度
- 神经外科进修汇报课件
- 2024老年人静脉血栓栓塞症防治中国专家共识(完整版)
- 腾讯营销师认证考试题库(附答案)
- 邻近铁路营业线施工安全监测技术规程 (TB 10314-2021)
- 四年级上册脱式计算100题及答案
评论
0/150
提交评论