《基于ARM-LINUX的GPS导航系统毕业论文.doc》由会员分享,可在线阅读,更多相关《基于ARM-LINUX的GPS导航系统毕业论文.doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录0摘要 11引言21系统方案选择与论证21.1总体设计方案 31.2部分模块设计方案31.2.1 主控芯片选择方案 31.2.2 操作系统及选择方案 31.2.3 GPS模块设计方案31.2.4显示模块设计方案 31.2.5地图文件存放方案 41.3总体方案确定42 系统硬件设计2.1主控芯片电路52.2 flash芯片电路 72.3串口电路 82.4 usb接口电路 92.6系统总线及lcd接口电路 92.5电源电路 103系统的软件设计 113.1程序结构框图 113.2 Maintab类 113.3 Mainwidget类 113.4 config 类 123.5 map类 133
2、.6 gps_diver 类 143.7 staSNR 类 143.8 debug_PDF 类 153.9 Makefile 文件 163.10 地图文件 (mapinfo.txt文件)164测试 164.1操作系统烧写测试 164.2 卫星接收测试184.3地图显示测试 204.4GPS信号检测测试224.5功耗测试 224.6其他测试 234.7测试结果分析 235总结 23参考文献: 23谢: 24录: 24毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地
3、方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 基于ARM-LIN
4、UX的GPS导航系统 摘要:本系统由GPS数据采集并显示、地图显示两大部分组成,模拟GPS导航的过程。通过GPS模块、arm9硬件环境、嵌入式LINUX操作系统、TFT触摸屏等模块来完成整个体系的运作,使其实时采集GPS数据,然后将GPS数据对应的地图显示出来,再利用串口将数据送入PC机数据库中实现查询等一系列功能。本设计的特点在于界面友好、用户易操作、功耗低、便于长时间户外导航。关键词:ARM;LINUX;GPS;C+语言;SHELL编程;嵌入式操作系统 The ARM-LINUX-based GPS navigation systemZhu Heng(Institute: Institut
5、e of Physics and Electronic Information Professional: Applied Electronic Technology Education Year: 06 Instructor: ZHOU Yong-hong) Abstract: This system consists of GPS data collection, map display composed of two parts, simulated GPS navigation process. Through the GPS module, arm9 hardware environ
6、ment, embedded LINUX operating system, TFT touch screen and other modules to complete the operation of the entire system to collect real-time GPS data, GPS data and then display the corresponding map, re-use the data into the PC serial port machine in the database queries, and so to achieve a series
7、 of functions. This design feature is user-friendly, user easy to operate, low power consumption, easy to navigate a long time outdoors.Keywords: ARM; LINUX; GPS; C + + language; SHELL programming; embedded operating system0 引言GPS 是英文Global Positioning System(全球定位系统)的简称,而其中文简称为“球位系”。GPS是20世纪70年代由美国陆
8、海空三军联合研制的新一代空间卫星导航定位系统 。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的。随着人民生活水平的法杖,GPS技术被越来越多的应用在个人PDA、个人车载终端、手机等个人设备上。人们通过手持GPS,能准确知道自己所在的位置,从实现到导航、确定旅游路线、获取地理信息等功能。本文介绍的GPS导航系统,以ARM作为主控芯片,配以GPS、TFT触摸屏、嵌入式LINUX操作系统,构建了一个集GPS信息显示、地图显示、语音导航为一体的完整系统。本系统在一定程度上推动了个人手持GPS导航设备研究的发展。1 系统方案选择和论
9、证1.1 总体设计方案个人手持设备要求界面美观、功耗低、易于操作。系统应有彩色触摸屏;低功耗、高速度的处理芯片;带有嵌入式操作系统;GPS信息接收模块;sd卡用以存放地图;TFT触摸屏模块框图分别如图1所示:Nor flash Nand flashSd卡(存放地图)Gps模块S3c2440串口(调试及下载)电 源图1 系统结构框图Fig.1 System Structure Diagram1.2 部分模块设计方案1.2.1 控制模块设计方案方案一:采用凌阳公司的16位单片机,它是16位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。用于语音处
10、理和识别等领域。满足系统GPS模块和语音导航功能的需要。由于本系统需要彩色人机交互界面,对处理速度要求较高,故不采用。方案二:采用samsung公司的s3c2440。S3c2440采用ARM920t内核,实现了MMU、ARBA、BUS和Harvard高速缓冲体系结构。是一块高性能、低功耗的嵌入式芯片。可植入操作系统。在个人PDA领域应用及广。植入操作系统后,在用户GUI编程方面具有很大优势。内置AD/DA,便于扩展语音模块。故选用此芯片为主控芯片。1. 2. 2 操作系统选择方案Linux操作系统广泛应用在嵌入式设备中,其源代码开放、免费;内核性能高效、多任务、可制定;完善的图形管理、文件管理
11、机制;良好的开发环境、强大的工具集。可移植QT开发环境,可实现跨平台的编译,代码重用率高。1.2.3 GPS模块选择方案方案一:采用串口接口GPS模块。优点:便于驱动,价格便宜。缺点:嵌入式linux的调试需要用到串口,若GPS模块占用了串口会造成调试不便。故不采用方案二:采用usb接口GPS模块。优点:便于携带、连接开发板。缺点:驱动相对较难、价格相对较贵。为了便于调试和携带,采用usb接口GPS模块。1.2.4显示模块设计方案方案一:采用LCD显示。液晶显示屏(LCD)具有轻薄短小,低耗电量。但不能实现触摸功能,故部采用。方案二:采用TFT显示。TFT屏幕带有四线式电阻触摸膜,能实现触摸功
12、能、便于用户操作,故采用。1.2.5地图文件存放方案方案一:采用s3c2440核心板内置nand flash 存放。Nand flash 读取速度快。但容量较小,只有128M,不适合存放大量地图数据,故不采用。方案二:采用外置sd卡。Sd卡读取速度相对较慢,且会增加成本。但能存放大量数据(),地图更新升级也很方便。故采用。1.3 总体方案确定1) 控制芯片: 采用s3c2440 arm9 处理器2) 液晶显示模块: 采用NEC TFT 3.5 寸屏幕3) GPS模块: 采用三星公司的GPS-USBII模块4) nand flash: 采用 K9F1208;5) nor flash: 采用 AM
13、29LV160DB5) 音频处理芯片: UDA1341TS;6) SD卡 模块: 采用金士顿公司的 4GB SD卡;7) 电源模块: 采用两个8V可充电锂电池;8) 操作系统: 采用嵌入式linux操作系统2 系统的硬件设计与实现 系统硬件采用友善之臂的s3c2440 mini2440开发板。Mini2440 体积小,便于携带;接口丰富,易于扩展;功耗低,便于长时间户外导航。Mini2440硬件特性如下图:图2 主控芯片电路Fig.2 Master-chip circuitry2.1 主控芯片电路主控芯片为s3c2440的6层核心板,该核心板性能稳定、工艺精良。图2.1 主控芯片电路Fig.2
14、.1 Circuit of ultrasonic transmitting and receiving2.2 flash芯片电路2.21 nand flash芯片电路Nand flash 是操作系统的程序存储区,该芯片掉电不丢失数据、寿命长,可反复擦写。芯片容量128M。适合存放高密度数据结构图2.2.1 主控芯片电路Fig.2.2.1 Circuit of ultrasonic transmitting and receiving 2.22 nor flash芯片电路Nor flash是系统 BIOS 存储区。该芯片掉电不丢失数据、寿命长,可反复擦写。芯片容量8M。适合高速度、低数据密度的数
15、据结构。 图2.2.2 主控芯片电路 Fig.2.2.2 nor flash chip circuitry2.3 串口电路 采用max3232电平转换芯片与计算机通信图2.3 串口电路Fig.2.3 Serial circuit2.4 usb端口电路采用usb2.0协议,usb接口用以连接gps模块图2.4 usb端口电路Fig.2.4 Driving circuit2.5 系统总线及lcd接口电路图2.5系统总线及lcd接口电路Fig.2.5 Driving circuit2.6 电源电路系统输入电压为DC5VC,通过LM1117-1.8、LM1117-33、MAX8869EU18芯片转换成
16、系统需要的三种电压:1.8V、3.3V、1.25V图2.6 电源电路Fig.6 Power circuit3 系统的软件设计本系统的所有程序均采用C+语言编写,开发工具为QT embed 2.0。程序定义了许多类来分别管理各个模块,通过对各个类的操作,来构建整个程序框架。3.1 程序整体结构框图图3.1 maintab类流程图 Fig.3.1 Diagram of the overall structure of program3.2 Maintab类 Maintab 类负责程序外框基本定义及程序初始化 开始 设置好卫星信号强度数据设置窗口大小、颜色显示窗口图3.2 maintab类流程图 F
17、ig.3.2 maintab Class Flowchart3.3 mainwidgt类Mainwidgt类负责对各个按钮部件、页面部件的初始化开始 定义GPS时钟 绘制主框 绘制上下左右四个按键 绘制三个页面标签 连接点击按钮事件与处理按键程序 结束图3.3 mainwidget 类流程图Fig.3.3 mainwidget class Flowchart3.4 config类流程图Config类用以实现对地图路径、gps模块波特率的设置 开始 设置地图路径 设置gps的波特率 结束图3.4 config 类流程图Fig.3.4 config class Flowchart 3.5 map类
18、Map类负责读取mapinfo文件里的地图 ,并显示对应地图。地图显示算法:首先把地图分割成n*n小块。然后系统通过得知整张地图四角的坐标,计算出地图每个像素点所对应的坐标。最后根据读取的gps信息,找到对应的地图,并显示到lcd上。 开始 读取地图的基本信息根据当前gps信息找到对应的地图并显示 N 地图按键按下 Y 修改显示的地图 结束图3.5 map 类流程图Fig.3.5 map class Flowchart 3.6 gps_diver类gps_diver类负责驱动gps模块,gps驱动原理如下所述: GPS卫星发射两种频率的载波信号,即频率为1575.42MHz的L1载波和频率为1
19、227.60HMz的L2载波。L1为民用频率,L2为军用。民用GPS信号调试成C/A码发送,C/A码又被称为粗捕获码,是1MHz的伪随机噪声码(PRN码),其码长为1023位(周期为1ms)。用户机接受到C/A码后,通过gps接受器,解调为发送次C/A码的卫星时间。并通过多个卫星发送的C/A码时间差(至少3个),来确定当前位置。并以串口的形式把经纬度数据发送给上位机。 开始 设置串口属性,访问gps模块设置gps时钟 驱动gps模块计算经纬度坐标值结束图3.6 gps_driver类流程图Fig.3.6 gps_driver class Flowchart 3.7 staSNR类StaSnR类
20、负责对检测卫星数量,并告知gps_driver类。 开始 检测卫星数量 N 卫星数量3?Y 结束图3.7 strSNR类流程图Fig.3.7 strSNR class Flowchart 3.8 debugPDF类debugPDF类负责提供调试信息,错误编号等内容。调试程序时,配合linux中gdb命令。能实现断点调试、逐步调试等功能并显示对应的错误信息。定义如下:#include #include #ifndef DEBUG_PDF_H#define DEBUG_PDF_H/=debug level for info trace bug #define debug 1#define POP3
21、DEBUG 1#ifdef POP3DEBUG #define PDF(level, fmt, args.) if (debug = level) printf(%s:%d fmt, _PRETTY_FUNCTION_, _LINE_ , # args)#else#define PDF(level, fmt, args.) do while(0)#endif0:没有任何的显示!1:正常工作的,能显示工作运行主流程error exit fatal show it2:更进一显示信息3:完全跟踪!3.9 Makefile文件Makefile文件为整个工程的管理文件 ,作用是连接各个头文件、c文件,最
22、终编译成可执行文件。由于使用qt开发环境,程序可以在x86平台上与arm平台上分别运行。只需要修改Makefile文件中的编译期即可。3.10 地图文件(mapinfo.txt 文件)地图文件由一大张成都市区地图分割成许多小地图。Map.cfg文件里包含了整张地图信息。mapinfo:103.831787,30.687817,104.314155,30.473525,1500,1200,300。分别代表整个地图的左上角经纬度、右下角经纬度、地图像素的长度、地图像素的宽度、每张地图的像素宽度。软件通过读取map.cfg的内容,来获取地图的基本信息。地图软件获取方法:采用专业地图下载软件 UMD(
23、universal maps download),用户只需在此软件里输入想要地图的四角经纬度坐标。即可得到所需地图。保证mapinfo.txtL里的地图坐标与实际坐标一致。4 测试4.1 操作系统烧写测试安装操作系统测试的目的是搭建系统的软件环境,便于后续工作安装linux有如下步骤1. 格式化nand flash2. 安装bootloader3. 安装内核文件4. 安装文件系统如下图所示图4.1.1 烧写操作系统-vivi界面Fig.4.1.1 Flow chart of program of cooling automatically安装好操作系统后,重启系统,将出现如下画面。 图 4.1
24、.2 操作系统启动画面Figure 4.1.2 operating system to start screen系统烧写成功4.2 卫星接收测试卫星接收测试的目的是检测接收到卫星的数量,以便在接收到相同卫星的情况下,检测gps信号。测试位置:四川省成都市。第一次测试:位置室内 卫星数量 0 如下图: 图 4.2.1 第一次卫星接收测试Figure 4.2.1 The first test satellite reception第二次测试:位置室外空旷地带 卫星数量 7 如下图: 图 4.2.2 第二次卫星接收测试Figure 4.2.2 The second test satellite re
25、ception第三次测试:位置街道 卫星数量 6 如下图:图 4.2.3 第三次卫星接收测试Figure 4.2.2 The third test satellite reception经测试,在室内不能接收到卫星的gps信号。故此系统只能在户外使用。4.3 地图显示测试地图显示测试的目的是测试载入地图的正误、验证地图上下左右移动的功能。第一次测试: 能实现上下左右移动,显示地图如下图: 图 4.3.1第一次地图显示测试 Figure 4.3.1 The first map shows test第二次测试:能实现上下左右移动,显示地图如下图: 图 4.3.2 第二次地图显示测试 Figure
26、4.3.2 The second map shows test第三次测试:能实现上下左右移动,显示地图如下图: 图 4.3.3 第三次地图显示测试 Figure 4.3.3 The third map shows test经测试地图能准确的载入,并能实现上下左右移动的功能4.4 gps信号检测测试 Gps信号测试的目的是测试gps信号的精确度,测试数据列于表3中。表3 gps数据测量表测试次数(次)第一次第二次第三次显示经纬度东经:30.797415北纬:106.080517东经:30.813544北纬: 106.09684 东经:30.804534北纬:106.08542 实际经纬度东经:3
27、0.797367北纬:106.080235 东经:30.797415北纬:106.09851 东经:30.797415北纬:106.08846误差计算 0.013 0.012 0.0011%从上表可以看出,gps数据精确度较高,误差都在0.01%左右4.5 功耗测试测试环境:户外系统使用硬件:gps模块、sd卡、液晶屏测试次数(次)第一次第二次第三次电流 300毫安 350 毫安 320毫安电压 3.32V 3.31V 2.95V功耗 0.99W 1.15W 0.94W从上表可看出,系统功耗在1w左右。能满足设计技术指标。4.6 其他测试1)地图路径变更测试 。 功能实现,测试通过2)gps串
28、口波特率设置。 功能实现,测试通过 4.7 测试结果分析由以上的测试数据可以看出:本GPS导航系统能很好地实现题目要求的各项功能。测试期间运行稳定,基本达到了设计要求。5 总结本系统成功的模拟了个人手持gps导航系统。用户通过点击触摸屏幕、方便的使用软件。实现了地图的显示、拖动;gps信息、卫星数量的显示;地图路径的更改;gps波特率的更改的功能。系统低功耗、高处理速度、操作简易、界面有好。已具有一定的实用价值。通过这次毕业设计,我在更加牢固、灵活地掌握了所学的专业知识的同时。大量学习了嵌入式方面的相关知识:arm体系结构、操作系统、c+编程、shell编程、硬件驱动程序。参考文献:1 杜春雷
29、 ARM体系结构与编程 清华大学出版社 2003-08-12 2 c+语言程序设计(第三版) 郑莉 董渊 张瑞丰 编著 清华大学出版社 2001-10-113 嵌入式系统开发 齐宇 徐俊 编著 人民邮电出版社 2005-06-054 美Douglas Boling 嵌入式linux编程 北京科彦科技发展公司 译 北京大学出版社 2003-03-125 张洪斌 QT编程指南 电子科技大学出版社 2006-06-126 李先力 文苍茂 GPS原理及应用清华大小而出版社 2004-08-278 李新峰 何广生 赵秀文 基于ARM9的嵌入式Linux开发技术 电子工业出版社2003-03-189Tho
30、mas L.Floyd.Electronic Devices M. Prentice-Hall Inc, New jersey 1999-05-19致谢至此,我的毕业设计已经基本完成。回想过去的点点滴滴,如果没有学校、学院、老师、同学的关心和帮助,我也无法按期完成这令我满意的作品。在此,我首先感谢学校和学院为我提供优越的实验场所和器材,使我能够更加方便、顺利地进行作品设计与调试,减少了设计周期;其次,我要感谢指导老师周永宏老师在百忙之中抽出时间同我一起探讨系统构架和软件的编写,并不厌其烦地替我修改论文,给我了莫大的帮助,并使我学到了很多东西。周老师严谨负责的治学态度,给我留下了深刻的印象,将使
31、我终身受益。我再次对周老师这一年多来对我的关心和帮助表示最诚挚的谢意;最后,向在整个设计过程中关心和帮助过我的其他老师和同学致谢。附录:附录1:测试仪器表7 测试仪器设备清单序号型号、名称用途数量1PC机编译程序12UT33D 数字万用表测量各电路工作情况13Gps导航仪测试显示的gps正误14vm虚拟机测试操作系统15成都、南充市区地图测试显示地图正误26精密电流、电压表测试系统功耗2附录2:部分参考源程序Maintab 类程序:#include #include #include #include #include #include #include #include #include #
32、include #include #include #include #include #include #include #include #include #include #include #include #include /=#include MainWidget.h#include zhMap.h#include gps_driver.h#include maintab.h#include GPS.hMainTab:MainTab(QWidget *parent,const char * name):QTabWidget(parent,name)GpMainLayout=new M
33、ainLayout;GpGPS=new GPS;GpConfig=new Config;GpConfig-GetObject(GpMainLayout);GpConfig-GetObject(GpGPS);GpConfig-setCOMBDRate();GpConfig-setMapPath();addTab(GpMainLayout,QString(MAP);addTab(GpGPS,QString(GPS INFO);addTab(GpConfig,QString(CONFIG);timerid=startTimer(1000);void MainTab:timerEvent(QTimer
34、Event * event)GPS_DATA mGPSData;int i;PDF(3,TABMaster timer alarm!n);/=设置好卫星信号强度数据!GpGPS-mpSatSNR-SetData(GpMainLayout-pzhDrawRect-pGpsdriver-mGPSStaSNR);/=GpMainLayout-pzhDrawRect-pGpsdriver-GetData(mGPSData);GpGPS-mpGPSinfo-SetData(mGPSData);/=PDF(3,TABMaster timer endn);int main(int argc, char* a
35、rgv) QApplication app(argc,argv);MainTab t;app.setMainWidget(&t);t.show();return app.exec();Gps_driver 类程序:#include #include gps_driver.h#include #include #include #include /*NMEA 0183 的 Checksum 只能作8位异或包括,的运算,但不包括$ 及 * 定义符号的运算。 最后的两位是检验码的hex(16进制)转成ASCII 两个符号 (0-9, A-F)。*/char nmea_checksum(char *sentence)/* is the checksum on the specified sent