基于单片机的经纬度定位显示系统设计*
2022-12-05湖州师范学院信息工程学院潘泉成新民
湖州师范学院信息工程学院 潘泉 成新民
设计一个基于单片机的经纬度定位显示系统,系统通过单片机串行数据通信实现GPS 定位信息的接收及信息的显示。本文详细介绍了系统的硬件设计和系统软件设计的方法。通过测试,系统工作性能较为稳定,抗干扰能力强,功耗低,定位精度较精准,在测控定位领域的应用开发中具有一定的应用价值。
GPS(Global Positioning System,全球定位系统)是一个以接收导航卫星信号为基础的无线电空间定位系统,它可以利用卫星采集到观测点的经纬度、高度和时间定位信息,地球表面和上方任何地点可以无源方式同时接收用于定位系统。GPS 在民用领域中发现其在定位、导航和计时等方面的价值,现广泛运用于运输、公共资源管理、精确测绘、公共安全等领域[1]。目前GPS 的外观类型设计已逐渐向便携化发展,因此本项目针对相关特种设备,采用高精度的GPS、MCU 处理器采集设备的地理信息,计算显示出实时的所配备装置的经纬度信息,该系统可以有效地应用于特定车辆设备的定位。
1 硬件设计
1.1 总体框架设计
所设计的系统以51 单片机为核心,由GPS 模块NEO-6M 通过天线获取当前地理位置信息、时间日期等数据,经串行口输入到51 单片机,经51 单片机处理后,换算成经纬度数据再传至液晶显示屏,由LCD12864 液晶显示屏显示出GPS 模块所获取的地理位置信息。系统设计了USB 输出接口,可用于定位位置数据的导出,同时数据可以实时上传云服务器以供上位机使用,系统能够显示与云服务器连接的指示提醒。硬件结构框图如图1所示。
图1 硬件结构框图Fig.1 Hardware structure block diagram
1.2 主控电路设计
主控电路采用89C51 单片机为主控芯片,89C51 单片机是一种低功耗、高性能的CMOS8 位微控制器。在本系统设计的控制任务单片机主要需要用于数据接收控制和显示控制。主控电路如图2所示。
图2 主控电路图Fig.2 Main control circuit diagram
在数据接收控制中51 单片机内部将集成串行口通信电路,此电路可以接收其他模块传送进来的数据信息,并将接收到的数据信息存储至数据缓冲区中等待处理。
显示控制将利用89C51 单片机的I/O 端口控制LCD 12864 液晶显示器显示相应信息,显示之前会先从数据缓冲区取出数据信息进行处理,然后送到LCD12864 液晶显示器中进行所显示需要的信息。
1.3 显示模块
显示模块采用12864 中文图形点阵液晶显示模块,可显示汉字及图形,内置8192 个中文汉字(16×16 点阵)、128 个字符(8×16 点阵)及64×256 点阵显示RAM(GDRAM)[2]。显示模组背部自带10K3×3 硬封可调电位器,可以调到显示理想对比度;LED 背光极性可调,JP4 为液晶背光正负反接处,此模组背光为4 颗LED 灯,非普通背光;模组自带防静电电容,抗干扰性更强。
其中12864 的3 脚为背光调节的引脚,当3 脚的电压不同时,背光的亮度就不同,因此设计了一个电路来调节3 脚的电压,就是利用一个滑动变阻器,一个脚接电源电压,一个脚接地,调节滑动变阻器就可以改变中间引脚的电压,我们只需将中间引脚和12864 的3 脚相连接即可。液晶显示电路如图3所示。
图3 液晶显示电路Fig.3 Liquid crystal display circuit
1.4 定位模块
定位模块选用UBLOX-6MGPS 模块。该模块具有高灵敏度、低功耗、便捷化等特点,适用于车载、手持设备,如车辆监控、手机、摄像机及其他移动定位系统的应用[3]。
系统中的定位模块与单片机连接,由于定位模块波特率的原因,使用11.0952 晶振,可以使单片机顺利地解析出数据包进行计算。GPS 通过接收卫星信号,可以准确地定出其所在的位置,位置误差小于10m。同时GPS 还可以接收卫星发下来的时间信息,利用单片机控制12864 显示出当前时间,用户可以很方便地了解时间。所设计的电路如图4所示。
图4 定位模块电路图Fig.4 Circuit diagram of positioning module
2 系统软件设计
2.1 系统主程序设计
本系统的所有程序均采用C 语言编写,程序定义了多个子程序来分别管理各个模块,通过对各个子程序的操作,来构建整个程序框架。各个子程序即可单独提取出作为独立的一个邮寄代码,大大增加了项目的独立性、灵活性。
系统开机后,液晶显示屏和单片机进行初始化,然后开始接收从GPS 模块传递过来的地理数据信息,并在此进行一次判断处理,判断接收到的数据是否真实却有效,如果有效则开始接收该信息中的内容,并送至语句标识区进行筛选,提取其中以“$GPRMC”开头的语句[4];若没有接收到数据则继续等待。系统接收完数据后,通过51 单片机设定好的程序自动进行数据格式转换处理。然后对液晶显示屏进行清屏处理,并且将转化格式后的数据传到液晶显示屏中并显示该一系列信息。同时单片机通过每秒刷新一次RAM 频率,从而可使得LCD12864 液晶显示器实时地显示当前GPS 地理信息和时间日期信息。系统主程序流程图如图5所示。
图5 主程序流程图Fig.5 Main program flow chart
2.2 显示子程序
系统开机并初始化结束后,开始接收地理数据信息,如果数据无效,则继续接收,如果有效则开始转换日期和时间成字符串形式进行显示,对接收到的经纬度数据信息,先判断经纬度方向,北纬还是南纬,东经还是西经,并用“E、S、W、N”字母进行表示,开始分析计算经纬度数据,只有正常显示纬度,才可以接下来显示纬分,同理只有显示出纬分,才可以纬秒,否则其中一块数据出现错误会导致所有显示数据的错乱。最后设置所需显示的整数部分和小数部分以及小数点的位置。显示子程序流程图如图6所示。
图6 显示子程序流程图Fig.6 Display subroutine flow chart
2.3 定位子程序
在定位子程序中,需要对接收到的有效信息进行提取、判断和计算等处理,从而筛选出系统所需要的数据信息并将其转换成相应格式输出。在该子程序中需要先判断接收到的数据格式是否为“$GPRMC”,如果不是则返回继续接收,如果数据正确则开始分离经纬度、时间、日期并进行格式转换,对数据进行分析计算同时转化成ASCII 码从而进行显示。其中系统的解码是单片机接收到以“$GPRMC”开头格式的信息,然后筛选掉其他无效信息,提取出其中的经纬度、时间、日期定位状态等信息,具体实现则是在程序中设置一个标识数,当标识数为1 时提取出的则是时间的定位信息并将其保存起来,当标识数为2 时提取出的则是定位状态的信息,从而以此类推就可以将GPS 的数据解码并将其全部存取下来。这样的数据接收方式可以节约不少RAM,而且在数据接收之前只需要进行简单地判断数据格式即可,由此可以节省很多计算时间,让给其他进程工作,从而大大减少了开发的时间成本以及定位电路的计算复杂程度。定位子程序流程图如图7所示。
图7 定位子程序流程图Fig.7 Positioning subroutine flow chart
3 结论
该系统设计制作完成后,可实时定位跟踪各种移动设备,当移动设备行动路线超过事先所规定的范围时,可以通过后台及时观察并进行提醒或采取其他特殊措施进行制止;同时用户自己持有该系统时,可以实时通过读取12864 所显示内容,了解自己的位置以及当前时间。且本设备电路简单、性能稳定、可靠性高、硬件成本低、运算速度快、易于扩展。因此在一些特种设备中配备此装置尤为必要,对于特种车辆的智慧监管具有重要的现实意义,在测控领域的应用开发中具有一定的实用价值。