基于arm-linux的gps导航系统毕业论文(编辑修改稿)内容摘要:

系统后,重启系统,将出现如下画面。 图 操作系统启动画面 Figure operating system to start screen 系统烧写成功 卫星接收测试 卫星接收测试的目的是检测接收到卫星的数量,以便在接收到相同卫星的情况下,检测 gps 信号。 测试位置:四川省成都市。 第一次测试:位置 — 室内 卫星数量 0 如下图: 20 图 第一次卫星接收测试 Figure The first test satellite reception 第二次测试:位置 — 室外空旷地带 卫星数量 7 如下图: 图 第二次卫星接收测试 Figure The second test satellite reception 第三次测试:位置 — 街道 卫星数量 6 如下图: 21 图 第三次卫星接收测试 Figure The third test satellite reception 经测试,在室内不能接收到卫星的 gps 信号。 故此系统只能在户外使用。 地图显示测试 地图显示测试的目的是测试载入地图的正误、验证地图上下左右移动的功能。 第一次测试: 能实现上下左右移动,显 示地图如下图: 22 图 第一次地图显示测试 Figure The first map shows test 第二次测试:能实现上下左右移动,显示地图如下图: 23 图 第二次地图显示测试 Figure The second map shows test 第三次测试:能实现上下左右移动,显示地图如下图: 图 第三次地图显示测试 Figure The third map shows test 经测试地图能准确的载入,并能实现上下左右移动的功能 gps 信号检测测试 Gps信号测试的目的是测试 gps 信号的精确度,测试数据列于表 3中。 表 3 gps 数据测量表 测试次数(次) 第一次 第二次 第三次 24 显示经纬度 东经: 北纬: 东经: 北纬 : 东经: 北纬: 实际经纬度 东经: 北纬: 东经: 北纬: 东经: 北纬: 误差计算 % % % 从上表可以看出, gps 数据精确度较高,误差都在 %左右 功耗测试 测试环境:户外 系统使用硬件: gps 模块、 sd 卡、液晶屏 测试次数(次) 第一次 第二次 第三次 电流 300 毫安 350 毫安 320 毫安 电 压 功耗 从上表可看出,系统功耗在 1w左右。 能满足设计技术指标。 其他测试 1)地图路径变更测试。 功能实现,测试通过 2) gps串口波特率设置。 功能实现,测试通过 测试结果分析 由以上的测试数据可以看出:本 GPS导航系统能很好地实现题目要求的各项功能。 测试期间运行稳定,基本达到了设计要求。 5 总结 25 本系统成功的模拟了个人手持 gps 导航系 统。 用户通过点击触摸屏幕、方便的使用软件。 实现了地图的显示、拖动; gps 信息、卫星数量的显示;地图路径的更改; gps波特率的更改的功能。 系统低功耗、高处理速度、操作简易、界面有好。 已具有一定的实用价值。 通过这次毕业设计,我在更加牢固 、灵活地掌握了所学的专业知识的同时。 大量学习了嵌入式方面的相关知识: arm 体系结构、操作系统、 c++编程、 shell 编程、硬件驱动程序。 参考文献: [1] 杜春雷 ARM 体系结构与编程 清华大学出版社 20200812 [2] c++语言程序设计(第三版) 郑莉 董渊 张瑞丰 编著 清华大学出版社 20201011 [3] 嵌入式系统开发 齐宇 徐俊 编著 人民邮电出版社 20200605 [4] [美 ]Douglas Boling 嵌入式 linux 编程 北京科彦科技发展公司 译 北京大学出版社 20200312 [5] 张洪斌 QT 编程指南 电子科技大学出版社 20200612 [6] 李先力 文苍茂 GPS 原理及应用清华大小而出版社 20200827 [8] 李新峰 何广生 赵秀文 基于 ARM9 的嵌入式 Linux 开发技术 电子工业出版社20200318 [9]Thomas Devices [M]. PrenticeHall Inc, New jersey 19990519 致谢 至此,我的毕业设计已经基本完成。 回想过去的点点滴滴,如果没有学校、学院、老师、同学的关心和帮助,我也无法按期完成这令我满意的作品。 在此,我首先感谢学校和学院为我提供 优越的实验场所和器材,使我能够更加方便、顺利地进行作品设计与调试,减少了设计周期; 其次,我要感谢指导老师周永宏老师在百忙之中抽出时间同我一起探讨系统构架和软件的编写,并不厌其烦地替我修改论文,给我了莫大的帮助,并使我学到了很多东西。 周老师严谨负责的治学态度,给我留下了深刻的印象,将使我终身受益。 我再次对周老 26 师这一年多来对我的关心和帮助表示最诚挚的谢意; 最后,向在整个设计过程中关心和帮助过我的其他老师和同学致谢。 附录: 附录 1:测试仪器 表 7 测试仪器设备清单 序号 型号、名称 用途 数量 1 PC机 编译程序 1 2 UT33D 数字万用表 测量各电路工作情况 1 3 Gps 导航仪 测试显示的 gps正误 1 4 vm 虚拟机 测试操作系统 1 5 成都、南充市区地图 测试显示地图正误 2 6 精密电流、电压表 测试系统功耗 2 附录 2:部分参考源程序 Maintab 类程序: include include include include include include include include include include include include include include include include include 27 include include include include include //============ include include include include include MainTab::MainTab(QWidget *parent,const char * name):QTabWidget(parent,name) { GpMainLayout=new MainLayout。 GpGPS=new GPS。 GpConfig=new Config。 GpConfigGetObject(GpMainLayout)。 GpConfigGetObject(GpGPS)。 GpConfigsetCOMBDRate()。 GpConfigsetMapPath()。 addTab(GpMainLayout,QString(MAP))。 addTab(GpGPS,QString(GPS INFO))。 addTab(GpConfig,QString(CONFIG))。 timerid=startTimer(1000)。 } void MainTab::timerEvent(QTimerEvent * event){ GPS_DATA mGPSData。 int i。 PDF(3,TABMaster timer alarm!\n)。 //==================设置好卫星信号强度数据。 GpGPSmpSatSNRSetData(GpMainLayoutpzhDrawRectpGpsdrivermGPSStaSNR)。 //===================== GpMainLayoutpzhDrawRectpGpsdriverGetData(mGPSData)。 28 GpGPSmpGPSinfoSetData(mGPSData)。 //=============== PDF(3,TABMaster timer end\n)。 } int main(int argc, char** argv) { QApplication app(argc,argv)。 MainTab t。 (amp。 t)。 ()。 return ()。 } Gps_driver 类程序: include include include sys/ include sys/ include include /*NMEA 0183 的 Checksum 只能作 8位异或包括 ,的运算,但不包括 $ 及 * 定义符号的运算。 最后的两位是检验码的 hex(16 进制 )转成 ASCII 两个符号 (09, AF)。 */ char nmea_checksum(char *sentence) /* is the checksum on the specified sentence good? */ { unsigned char sum = 39。 \039。 char c, *p = sentence,csum[2]。 c = *p。 while (c != 39。 *39。 ) { sum ^= c。 p++。 c=*p。 } //================== csum[0]=sumamp。 0x0f。 if(csum[0]=10) csum[0]+=39。 A39。 else csum[0]+=39。 039。 //======== csum[1]=(sumamp。 0xf0)4。 if(csum[1]=10) csum[1]+=39。 A39。 else csum[1]+=39。 039。 29 c= (csum[1]==toupper(p[1]) amp。 amp。 csum[0]==toupper(p[2]) )。 return c。 // 0 is error } int zh_gpsDriver::fifoctl(FifoType * priv ,int data ,const unsigned char flag) { int temp = 1。 unsigned int widx = 0。 widx = privw_idx。 /* Save the old index before proceeding */ if (flag == WR) //write data { /* Save it to buffer */ if (((privw_idx + 1) % BUFSIZE) == privr_idx) { /* Adjust read index since buffer is full */ /* 无法写入来处理 fifo 满。 can wd to fifo */ //privr_idx = (privr_idx + 1) % BUFSIZE。 //保证是环状的 FIFO。 PDF(2,buffer full\n)。 return 1。 } privbuffer[privw_idx] = data。 privw_idx = (privw_idx + 1) % BUFSIZE。 //保证是环状的 FIFO。 return 0。 } else //read data { if ((privr_idx == widx)) { PDF(2, buffer empty\n)。 return 1。 } else {。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。