GPS液晶显示定位系统(单片机论文)_第1页
GPS液晶显示定位系统(单片机论文)_第2页
GPS液晶显示定位系统(单片机论文)_第3页
GPS液晶显示定位系统(单片机论文)_第4页
GPS液晶显示定位系统(单片机论文)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、1 gpsgps 液晶显示定位系统液晶显示定位系统 摘要摘要 gps 技术在军事、通讯、气象、勘探、导航、遥感、大地测量、地球动力 以及天文等众多学科领域得到极其广泛的应用,推动了科学技术的迅猛发展, 也丰富了人类的科学文化生活。现在,gps 的外型设计已经转向便携式发展, 逐步踏入寻常百姓的生活中。所以,对 gps 的研究具有十分重要的意义。 论文主要研究 gps 的定位原理与技术,单片机的编程及其应用,液晶屏的 功能及其实现方法。制作了一套设计方案,以软、硬件相结合的方式完成整个 gps 数据接收和显示的过程。完成了一台液晶显示的手持式 gps 定位接收设备, 并依次显示实时时间及所在地的

2、经纬度。该定位系统完成后,定位精度能达到 15m,所以该装置在测控领域的应用开发中具有一定的实用价值和借鉴价值。 subtraction global positioning system technology get extremely comprehensive application at military,communications,meterology,exploration,navigation,remote sensing,earth survey, earth mover ,astronomy and other numerous subject field;let tech

3、nology 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 positioning system has very import

4、ant 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 one handheld gps position recei

5、ving 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 development have some practical wo

6、rth and reference worth. 【关键词】 at89s52 单片机, gps,串口通信,波特率。 2 目录目录 摘要摘要 .2 第一章第一章 硬件设计硬件设计 .6 2.12.1 整版设计整版设计.6 2.22.2 电源模块设计电源模块设计.6 2.32.3 显示模块设计显示模块设计.6 2.42.4 gpsgps 数据模块数据模块.7 第二章第二章 软件设计软件设计 .8 3.1 主主程程序序设设计计 .8 3.3 硬件连接设置硬件连接设置.9 3.4 lcd 显示工作方式显示工作方式.9 3.5 系统主程序系统主程序.9 3.6 数据接收程序数据接收程序.10 第三章第三

7、章 调试及性能分析调试及性能分析 .12 4.1 软件调试软件调试.12 4.2 硬件调试硬件调试.12 结束语结束语 .13 参考文献参考文献 .14 附录一(电路图)附录一(电路图) .15 附录二(程序列表)附录二(程序列表) .16 3 前言前言 gps 前前景景 由于 gps 技术所具有的全天候、高精度和自动 测量的特点,作为先进 的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展 的各个应用领域。 随着冷战结束和全球经济的蓬勃发展,美国政府宣布2000 年至 2006 年期间,在保证美国国家安全不受威胁的前提下,取消sa 政策,gps 民 用信号精度在全球范围内得到

8、改善,利用c/a 码进行单点定位的精度由 100 米提高到 20 米,这将进一步推动 gps 技术的应用,提高生产力、作 业效率、科学水平以及人们的生活质量,刺激gps 市场的增长。据有关专 家预测,在美国,单单是汽车 gps 导航系统,2000 年后的市场将达到 30 亿美元,而在我国,汽车导航的市场也将达到50 亿元人民币。可见, gps 技术市场的应用前景非常可观。 gps 概概述述 广义的 gps,包括美国 gps、欧洲伽利略、俄罗斯 glonass、中国 北斗等全球卫星定位系统,也称 gnss。 狭义的 gps,即指美国的全球定位系统 global positioning syste

9、m,简称 gps。 公众常称的 gps,通常是指 gps 系统的接收设备,如手持式 gps、 汽车导航仪等。 即全球定位系统( global positioning system)。简单地说,这是一个 由覆盖全球的 24 颗卫星组成的卫星系统。这个系统可以保证在任意时刻, 地球上任意一点都可以同时观测到 4 颗卫星,以保证卫星可以采集到该观测 点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来 引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达 目的地。 全球定位系统 (gps)是 20 世纪 70 年代由美国陆海空三军联合研制的新 一代空间卫星导航定位系统 。

10、其主要目的是为陆、海、空三大领域提供实 时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等 一些军事目的,是美国独霸全球战略的重要组成。经过20 余年的研究实验, 耗资 300 亿美元,到 1994 年 3 月,全球覆盖率高达 98%的 24 颗 gps 卫 星星座己布设完成。 gps 全球卫星定位系统由三部分组成:空间部分 gps 星座;地 面控制部分地面监控系统;用户设备部分 gps 信号接收机。 gps 定位技术具有高精度、高效率和低成本的优点,使其在各类大地测 量控制网的加强改造和建立以及在公路工程测量和大型构造物的变形测量中 得到了较为广泛的应用。 4 绪绪论论 本

11、设计是一个 lcd1602 电子液晶显示屏显示动画的设计。整机以 atmel 公司生产的 40 脚单片机 at89s52 为核心,介绍了以它为控制系统的 lcd 电子 液晶显示屏的动态设计和开发过程。该电子显示屏内部自带了 ascii 码识别显 示控制电路部分,如果需要显示一个西文字符,只需要让单片机给他输入这个 西文字符的 ascii 码即可。文中详细介绍了 lcd 显示的硬件设计思路、硬件电 路各个部分的功能及原理、相应软件的程序设计。 控制任务控制任务,本设计采用 at89s52 单片机为核心控制芯片,控制任务包括 两个部分:数据接受控制和显示控制。 :数据接收控制:51 单片机内部集成

12、了串行口通信电路,本设计应用这个电 路接收外部数据,其数据格式为八位数据+1 位停止位。把接收到的数据存 储到数据缓冲区。 :显示控制:利用 51 单片机的 i/o 端口控制 lcd1602 液晶显示器显示相应 信息;显示之前先从缓冲区取出数据,经过 cpu 处理过后,送到 lcd1620 显示需要信息。 数据采集方案,数据采集方案,为了减少接收出错的问题,采集数据时使用串行口中断 数据接收方式。 方案方案:直接接收,不论接收到的数据是什么,先把串行口发送过来的数据接 收到数据缓冲区过后,再对数据进行处理。gps 模块为一种智能模块, 它每秒钟会发出几种数据,包括: $gpgga、$gprmc

13、、$pgrmv、$pgrmo、$pgrmc 等数据格式。 每个数据为 1536 个字节数据,如果把每个数据都接收到单片机的缓 冲区,那么单片机就需要很大的数据存储器 ram,这样单片机内部的 ram 是不够用的,更何况还有程序处理。所以这种数据采集的方案是 不行的。 方案方案:选择接收,先判断接收到的数据的格式,然后选择需要的格式中的一 些数据进行存储。这样就大大的节余了 ram,解决 ram 不够用的问 题。例如:接收$gpgga 格式数据的时间:前五次数据接收的时候先 判断数句格式(依次判断接收到的数据是否先后为$、 g、 p、 g、 g、 a) ,如果是,然后判断接下来的逗号(, )是第

14、几个逗号。如 果是第一个,说明接下来的数据是时间,如果是第二个,说明接下来 的数据是纬度,依此类推。本设计采用这种方案接收数据。 方案比较:方案比较:前者数据接收的方案虽然接收的方法简单,接收程序编写很容易, 但是学要很大的 ram 空间,设计时需要外加存储器,程序编写时就 得多写上数据存储处理程序。这样就大大的增加了开发的诸多问题, 包括成本,开发时间,试调难度等。后者数据接收方案比起前者来说 节约了不少的 ram,而且再数据接收前只需要先简单判断接收到的 数据格式即可;而且减少了中断处理的时间,让给其它进程工作。减 少了开发的成本和开发时间,以及电路的复杂程度。所以本设计采用 第二种数据接

15、收的方案。 5 电源 第一章第一章 硬件设计硬件设计 系统硬件部分电路大致上可以分成稳压电源、单片机小系统及外围电路和 lcd 显示屏电路五部分。 2.12.1 整版设计整版设计 设计原理图: 串行口 51 单片 机 gps 模块 lcd 1602 以单片机为核心将 gps 数据发送模块,lcd1602 显示模块系统的结合在一 起形成一个整体,实现特定功能。 2.22.2 电源模块设计电源模块设计 各个模块的电源供电电压均为 5v,所以只需要设计 5v 单电源供电即可。 设计采用稳压芯片 lm7805 做电源稳压核心。电路图如下所示,输入电压为 220v 交流电,经过变压器降压为 9v 交流电

16、,再运用二极管的单向导电性对 9v 交流电整流,使用二级管连接成整流槽,使电压负电压整流成正电压。电容 c1 为滤波电容,让电压波纹幅度减小,然后由 lm7805 集成稳压芯片将输入电压整 流为 5v 稳压源。小电容 c3, 、c4 为高频信号滤除电容,改善负载的瞬态响应。 2.32.3 显示模块设计显示模块设计 由与本设计显示需要显示相应的数据信息,包括相应的西文字符,所以不 采用数码管显示,采用带西文字库的 lcd1602 做显示器,显示电路如 6 电路中的可变电阻 rv2 最大阻值为 1k,其作用为调节 vee 输入引脚的电压, 实现对 lcd1602 对比度的调节。 lcd 的数据端口

17、的工作方式有两种,一种为 8 数据线工作方式,另一种为 4 数据线工作方式。为了节余端口,本设计采用 4 数据线工作方式。每次向 lcd 写 8 为数据分两次写,先高位后低位。 2.42.4 gpsgps 数据模块数据模块 gps 数据模块不需要自己设计,采用成品电路模块做数据传送。我们只需 要设计 gps 数据通行部分即可。gpgga 数据格式: $gpgga,m,m,*xx $gpgga:起始引导符及语句格式说明(本句为 gps 定位数据); :utc 时间,格式为 hhmmss.sss; :纬度,格式为 ddmm.mmmm(第一位是零也将传送); :纬度半球,n 或 s(北纬或南纬) :

18、经度,格式为 dddmm.mmmm(第一位零也将传送); :经度半球,e 或 w(东经或西经) :定位质量指示,0=定位无效,1=定位有效; :使用卫星数量,从 00 到 12(第一个零也将传送) :水平精确度,0.5 到 99.9 :天线离海平面的高度,-9999.9 到 9999.9 米 m :指单位米 :大地水准面高度,-9999.9 到 9999.9 米 m :指单位米 :差分 gps 数据期限(rtcm sc-104),最后设立 rtcm 传送的秒数 量 :差分参考基站标号,从 0000 到 1023(首位 0 也将传送)。 * : 语句结束标志符 xx : 从$开始到*之间的所有

19、ascii 码的异或校验和 : 回车 : 换行 gps 数据通信为 232 串口通信,在通信过程中就需要数据电平转换,应用 到 232 通信电平转换芯片 max232,电路如下: 7 图 3-1 系统主程序的总体结构 开 始 系统初始化 显示开机信息 显示数据信息 n y 图 3-2 数据接收程序流程图 进入中 断 清除接收中断标志 位 退出中断 数据格式判断 不符合 置标志位 符合 数据接收 标志位 0 1 数据接收完毕 清除标志 第二章第二章 软件设计软件设计 本设计的主要功能是接收 gps 模块传送的数据,并显示出相应的数据 信息,包括当地时间、纬度、经度以及高度。 数据接收部分,采用串

20、行口中断接收数据。显示部分就采用一个i/o 口 控制 lcd1602 显示相应的信息。 3.1 主主程程序序设设计计 系统主程序的总体结构如图所示。系统的主程序开始以后,首先是对系统 环境初始化,包括设置串口、定时器、中断,lcd1602 初始化;然后 lcd 显示 屏进入开机状态,显示开机信息(lcd_log) ,转入正常的显示,并接收数据, 每次显示两串字符。接着由于单片机没有停机指令,所以可以设置系统程序不 断地循环执行数据信息显示。 系统程序结构属中断方式,绝大多数功能在中断服务子程序中完成。根据 总体结构,可将程序划分为几个功能化模块:串行口中断服务程序、显示子程 序、扫描程序。各个

21、模块可进行独立设计、调试和查错,最终再连接成一个整 体。 3.2 显示驱动程序显示驱动程序 void lcd_check_busy(void); /忙检查 void lcd_cls(void); /清屏 void lcd_write_data(unsigned char); /写数据 void lcd_write_instruction(unsigned char); /写指令 8 void lcd_set_position(unsigned char); /设置光标位置 void lcd_initial(void); /lcd1602 初始化 void lcd_printc(unsigned

22、 char); /输出单个字符 void lcd_prints(unsigned char *);/输出字符串 void lcd_log(void);/开机信息显示 void lcd_show(void);/信息显示 void delay(unsigned char);/延时 3.3 硬件连接设置硬件连接设置 #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

23、 使能信号 寄存器选择位 rs,当 rs=1 时选择数据寄存器 ddram。 1 当 rs=0 时选择指令寄存器 cdram。 读写选择位 rw,当 rs=1 时读数据寄存器。 2 当 rs=0 时写数据或指令到寄存器。 读写使能信号 e,当 e=1 时读取数据。 3 当 e 为下降沿是为写数据或指令。 检测 lcd 是否在处理其它数据而处于忙状态时,则读取忙状态信号位,当 rs=0,rw=1,e=1 时,lcd 会输出八位数据,其中最高位 db7 为忙状态位 (lcd_busy_flag) ,若为 1,表示 lcd 处于忙状态,为 0 表示 lcd 空闲。 3.4 lcd 显示工作方式显示工

24、作方式 /* 初始化 lcd */ void lcd_initial(void) lcd_write_instruction(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( );/清屏 3.5

25、系统主程序系统主程序 /*/ void main() tmod=0 x20;/初始化串口 tl1 =0 xfa; th1 =0 xfa;/4800 波特率 scon=0 x50;/工作方式 1:八位异步通信,允许接收 pcon=0 x00;/波特率加倍关 ie=0 x90;/打开总中断 ea,和串行口中断 es 9 tr1=1;/开启启动定时器 1 lcd_initial( );/lcd1602 初始化 lcd_log( );/显示开机信息 while(1) lcd_show( ); /除了数据接收状态,一直处理显示 在串口通信中需要设置串口通信的数据传输速度,及波特率,设置定时器的溢出率 1

26、 即可,晶振为 11.0592mhz,当 tl1 =0 xfa;,th1 =0 xfa 时为 4800kbps 波特率。计算公 式为: t0 初值 x=2 n 机周时间 定时时间 x f 256 12/ x256 t1 osc 计数速率 的溢出率定时器 )256(1232 2smod x fosc 波特率 tmod 特殊功能寄存器为定时器计数器工作方式寄存器,前四位控制定时器 1,后 2 四位控制定时器 0;本设计采用定时器 1,工作方式 2(八位自动重装载,n=8) , scon 为串行口数据通信控制特殊寄存器,高三位为工作方式控制位,本设计采用 3 工作方式 1,8 位数据异步通信。d4

27、位为接收允许控制位,本设计要采用串行口中断接收 gpgga 数据,所以该为置 1。 ie 为中断允许控制特殊寄存器,本设计要打开串行口中断和总中断。 4 3.6 数据接收程序数据接收程序 /*串行口中断子程序*/ ri=0;/软件清除中断标志位,串行口中断需要软件清零,去除中断标志 1 进入中断过后要先判断接收数据的格式,否则会出现乱接收数据,出现接收到的数据不 2 对的问题,先判断是否接收到 gpgga 格式语句的第一个字符“$”,其 ascii 码为 0 x24,收到后,继续判断格式是不是为 gpgga,分五次中断判断,如果是,开始记录 数据并设置记录标志(read_start) ,否则退

28、出数据接收中断,程序设计如下: if(sbuf=$)/判断是不是$符号 flag1=1;/接收到$,起始字符 igps=0;/记录纬度数据字符数量的变量 num_comma=0;/记录逗号数量的变量 else flag1=0; if(sbuf=g) else flag2=0; if(sbuf=p) else flag3=0; if(sbuf=g) 10 else flag4=0; if(sbuf=g) else flag5=0; if(sbuf=a)/开始接收数据 else read_start=0 通过上述格式判断后,说明接下来的数据就是所需要的 gpgga 格式数据,然后选择所 3 需要的

29、数据接收并存到缓存区,每个数据都是以逗号隔开的,我们只需要判断该逗号是 第几个逗号就可以知道后面来的数据是表示说明含义。程序设计如下 if(read_start=1)/开始接收 gpgga 中的数据信息, if(sbuf=,) /利用 gprmc 数据中的逗号间隔,区分接收到 /的数据表示的信息 num_comma+; /记录逗号个数,标志数据的意义 if(num_comma=1)/接收时间,时分秒格式 data_tempigps=sbuf; igps+;/接收到的数据个数加 1 if(num_comma=2)/接收接收纬度,ddmm.mmmm 格式 data_tempigps=sbuf; i

30、gps+; if(num_comma=4)/接收经度,ddmm.mmmm 格式 data_tempigps=sbuf; igps+; if(num_comma=10)/海拔高度:0-99999.9 if(sbuf!=m)/为节约 ram 空间,不接收m字符 data_tempigps=sbuf; igps+; 判断这一帧数据是否接收完毕,每一个数据格式都是以 * 符号结束的,当接收到 * 4 号时表示这一帧数据已经发送完毕。程序设计如下: if(sbuf=*)/判断是否收到 gprmc 格式语句的字符“*” , /如果是,则表示接收完毕,开始处理 for(i=0;iigps;i+) data_

31、tempigps=dis_tempigps; /数据放到显示缓冲区 /返回初值;标识结束一次接收完毕 read_start=0; num_comma=0; igps=0; 11 第三章第三章 调试及性能分析调试及性能分析 一个单片机系统经过总体设计,在允许的条件下,根据本设计系统的需求 性首先采用在 pc 机上用模拟开发软件进行检测和调试,再进行硬件的组装与 调试。 4.1 软件调试软件调试 软件调试采用 proteus 7.1、操作系统 windows xp,在 pc 机上对目标电路 原理图和程序进行检测和调试。 一 目标程序纠错 软件仿真结果: 程序正确无误。 二 子程序功能调试 程序设计

32、通常采用模块程序设计,调试时可对一个个子程序分别进行调试, 设置好入口条件,然后采用单步运行或断点运行方式,检查系统 cpu 现场、ram 和 i/o 口状态,看程序执行结果符合设计要求。 三 整体程序综合调试 即把各子程序整体连起来进入到综合电路调试,能实现预计的功能显示 用软件仿真调试和修改完毕,下一步焊接硬件进行硬调试。 4.2 硬件调试硬件调试 焊接硬件,检查线路连接正确无误。 硬件调试环境,电源输入 220v 交流电,输出 4.98v 直流电,给电路板接通 4.98v 直流电源。 12 结束语结束语 以上仅对lcd显示屏的结构和驱动、显示电路原理作一详细介绍和分析。由 于自己知识水平

33、的局限和时间的仓促,设计中或还存在着一些不足,我真诚的 接受老师们的批评和指正.。 从课题选择、方案论证到具体设计,每一步对我来说无疑是巨大的尝试和 挑战,我不断地给自己提出新的问题,然后去论证、推翻,在这个往复的过程 中,我这篇稚嫩的设计日趋完善。每一次改进我都收获良多,虽然我的设计作 品不是很成熟,而且借鉴了前人的很多资料,但我仍然心里有一种莫大的幸福 感,因为我实实在在地走过了一个完整的设计所应该走的每一个过程,并且享 受了每一个过程,更重要的是这个设计中我加入了自己鲜活的思想。 在做这次毕业设计过程中使我学到了很多,加深了对单片机、集成模块、 lcd 液晶显示屏和 c 语言的理解,验证

34、了所学理论知识,提高了基本的解决实 际问题的能力,并增加了对电子设计方面的兴趣。希望这次的经历能让我在以 后的工作和生活中不断成长与进步。 就此作结! 13 参考文献 1. 求是科技 编著 单片机典型模块设计实例导航 人民邮电出版社 2004 年第一版 2. 求是科技 编著 单片机典型外围器件及其应用实例 人民邮电出版 社 2006 年第二版 3. 高峰 编著 单片机应用系统设计及使用技术 机械工业出版 社2004 年第一版 4. 赖麒文 编著 8051 单片机 c 语言彻底应用 科学出版社 2002 年第一版 5. 李光飞 娄然苗 胡佳文 谢象佐 编著单片机课程设计实例指 北京航 空航天大学

35、出版社 2004 年第一版 6. 周靖武 周灵彬 编著 单片机系统的 proteus设计与仿真 电子工 业出版社 2007 年第一版 7. 张毅刚 主编 单片机原理及应用 高等教育出版社 2003 年第 一版 8. 张志良 主编 单片机原理及控制技术 (第 2 版) 北京机 械工业出版社,2005 9. 李全利 编著 :单片机原理及接口技术 (第 2 版) 北京:高等教 育出版社,2004 10.徐仁贵 主编 :微型计算机接口技术及应用 北京:机械 工业出版社,1998 14 附录一(电路图) 系统电路图 15 附录二(程序列表)附录二(程序列表) 程序清单: 程序文件一:程序文件一:gpsr

36、ecive.c #include unsigned char num_comma=0;/逗号纪录数 bit read_start=0;/开始接收数据标志位 unsigned char *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$/字符串开

37、始 #define end*/字符串结束 void lcd_show( ) unsigned char i; lcd_set_position(0); lcd_prints(time- ); for(i=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(0 x40); lcd_prints(latit:); for(i=6;i15;i+)

38、 lcd_printc(dis_tempi); lcd_printc(*); delay(200);delay(200); lcd_cls(); lcd_set_position(0); lcd_prints(longi:); for(i=15;i24;i+) lcd_printc(dis_tempi); lcd_printc(*); lcd_set_position(0 x40); lcd_prints(high : ); for(i=24;i31;i+) lcd_printc(dis_tempi); lcd_prints(m); delay(255);delay(200); /*串行口中断

39、子程序*/ void serial() interrupt 4 ri=0;/软件清除中断标志位 /判断是否接收到字符“$”,ascii 码为 0 x24,收到后开始继续数据并置标志 record=1; if(sbuf=$)/判断是不是$符号 16 flag1=1; /开始接收数据,计数变量初始化(清零) ; igps=0;/记录纬度数据字符数量的变量 num_comma=0;/记录逗号数量的变量 else flag1=0; /判断读取格式是不是 gpgga 格式 if(sbuf=g) else flag2=0; if(sbuf=p) else flag3=0; if(sbuf=g) else

40、flag4=0; if(sbuf=g) else flag5=0; if(sbuf=a) else read_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+;

41、 if(num_comma=4)/接收精度,ddmm.mmmm 格式 data_tempigps=sbuf; igps+; if(num_comma=10)/海拔高度:0-99999.9 if(sbuf!=m)/不接受 m 单位数据,节省资源 data_tempigps=sbuf; igps+; if(sbuf=*)/判断是否收到字符“*” ,是,则结束接收,开始处理 for(i=0;iigps;i+) data_tempigps=dis_tempigps; /返回初值;标识结束一次接收完毕 num_comma=0; 17 read_start=0; igps=0; /*/ void main

42、() tmod=0 x20;/初始化串口 tl1 =0 xfd; th1 =0 xfd;/4800 波特率 scon=0 x50;/工作方式 1:八位异步通信,允许接收 pcon=0 x00;/波特率加倍关 ie=0 x90;/打开总中断 ea,和串行口中断 es tr1=1;/开启启动定时器 1 lcd_initial(); lcd_log();/开机显示信息 while(1) lcd_show(); 程序文件二:程序文件二:lcd1602.clcd1602.c #include header.h void lcd_check_busy(void) uchar dh;/高字节 do /分两次

43、写,每次写四位,先高位后低位 lcd_rs=0; lcd_rw=1; lcd_en=0; lcd_en=1; _nop_(); _nop_(); dh = lcd_data lcd_en=0; lcd_rw=0; lcd_rw=1; lcd_en=1; _nop_(); _nop_(); lcd_en=0; while (dh void lcd_write_instruction(unsigned char lcd_instruction) 18 lcd_data lcd_data|= (lcd_instruction lcd_rs=0; lcd_rw=0; lcd_en=0; lcd_en=

44、1;_nop_();_nop_();lcd_en=0; lcd_data lcd_data|= (lcd_instruction 4); lcd_en=1;_nop_();_nop_();lcd_en=0; lcd_check_busy(); /* 输出一个字节数据到 lcd */ void lcd_write_data(unsigned char lcd_data) lcd_data lcd_data|= (lcd_data / get the most significant nibble first. lcd_rs=1;lcd_rw=0; lcd_en=0; / specify a da

45、ta1 write operation. lcd_en=1; _nop_();_nop_();lcd_en=0; lcd_data lcd_data|= (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(unsigne

46、d char x) lcd_write_instruction(0 x88); lcd_write_instruction(0 x80|x); /* 输出一个字符到 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!=0 x00)/是否到了最后-0 lcd_write_data(lcd_stringi);

47、 i+; 19 /* 初始化 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

48、_position(0 x40); lcd_prints(wellcome! gps); delay(250);lcd_cls(); lcd_set_position(0);lcd_prints(now!let me see ); lcd_set_position(0 x40); lcd_prints(where your are!); delay(250);delay(250); for(i=0;i1;i+) lcd_cls(); lcd_set_position(0); lcd_prints(please waite!); lcd_set_position(0 x40);lcd_prints(receiving); delay(250); lcd_cls(); lcd_set_position(0); lcd_prints(please waite!); lcd_se

温馨提示

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

最新文档

评论

0/150

提交评论