低成本的STC单片机的导航授时系统设计
摘要:针对国内导航系统与授时系统的发展现状,将两个系统合理地结合在一起并以STC12C5A单片机作为整个系统控制单元,设计出的导航授时服务系统成本低、功耗低。给出了系统的硬件设计和软件流程,同时介绍了上位机软件的模块化设计思想。经过测试,该系统可以在户外或室内对运动的载体实行导航定位,当系统结合计算机运行时能对计算机进行授时。
关键词:STC12C5A;导航系统;授时系统
引言
嵌入式系统从20世纪孤立的单片机时代过渡到单片机与多科学融合时代,再到如今的嵌入式物联网时代,使得嵌入式系统再次遇到了新的机遇。GPS(Global Position System,全球导航系统)时空参数是物联网时代国家公证的工程建设,它为航空航海、科学勘探、地理测量、运输行业、通信行业提供了精确的导航、指挥、监控、授时等服务。本文充分结合STC单片机和Trimble公司的接收机设计出了导航授时系统。系统能实时给出运动载体的位置和速度等信息,并能同步接收卫星时间。
系统主要具有导航和授时两大功能。系统最大的优点是在户外可以通过液晶屏显示导航信息和时间信息,在室内通过上位机人机交互界面显示卫星时间和运动物体的经度、纬度、海拔等导航信息。系统克服了常用导航仪的繁琐设计、功能单一、成本利用高等缺点,在此基础上设计出了一款简易、性价比高、应用普遍、易于扩展的导航系统。这为常用的导航和授时服务提供了很大的帮助。
1 系统硬件设计
1.1 设计思路
首先,GPS模块定时发送GPS导航数据和卫星时间到STC单片机,然后STC单片机对GPS导航数据进行处理并把数据发送给LCD液晶显示屏或PC机,导航授时系统结构框图如图1所示。
系统的核心是GPS导航模块,处理器是宏晶科技公司推出的STC12C5A单片机。GPS导航模块采用Trimble公司的Sierra GPS芯片接收卫星导航信息和授时服务。Sierra芯片采用了Trimble公司独有的GPS算法来确保导航数据的准确性和卫星信号的快速锁定。它还能够有效地解决城市应用中经常出现的信号遮挡、多路径和射频干扰问题。STC12C5A是增强型8051内核具有超低功耗和超强抗十扰的特性,为GPS导航系统在户外勘测和野外监测提供了很大的方便。本系统控制器件并不复杂,也不需要很大的存储空间,STC12C5A可以控制整个系统节省成本。另外,STC12C5A有2个串口刚好满足系统需求。LCD液晶显示选择的是LMB102DDC显示屏。该显示屏小巧、易控制、显示清楚、成本低,是该系统的最佳选择。
1.2 硬件原理
图2为GPS导航电路。GPS导航模块提供实时的三维位置和UTC时间信息,通过GPS的串行通信口B发送数据给STC单片机。GPS导航模块和ST C单片机的输入/输出电平都是TTL电平,所以串口之间可直接通信。GPS发送数据的波特率有9 600bps、4 800bps、2 400bps可任意选择。
图3是STC12C5A与LMB102DDC的接口电路。LMB102DDC内核模块内部有一个指令寄存器和一个数据寄存器,其指令分为皋本指令和扩展指令。指令主要用来初始化液晶显示屏,实现基本控制。其中,包括清屏设置、显示位置、光标状态、显示状态、功能没置等。LMB102DDC既可以写数据到RAM中,又可以从RAM中读数据,在此主要是写数据到RAM。
当导航系统在户外工作时,STC单片机将接收到的导航数据和时间信息进行处理,然后将导航的经度、纬度、海拔、卫星时间通过P0口输出,并显示在LMB102DDC液晶屏上。当导航系统在室内工作时,STC单片机将接收到的导航信息通过串口完整地发送到PC机。PC机通过系统的上位机软件查看相关的GPS导航数据和时间信息。由于PC机的输入/输出电平和STC单片机的输入/输出电平不一样,两者相互通信时要加一个MAX232电平转换电路。室内工作不选择LCD显示导航信息主要是考虑到节约成本和保持系统的完整性这两方面。这也是该导航系统区别其他导航系统的特色。
导航授时系统的另外一个优点是能够通过上位机软件校准导航系统的相关信息。利用一组最新的时间数据(年、月、日、时、分、秒)和软件系统的工作模式按一定的格式通过串行通信接口发送给STC单片机,STC单片机利用这组数据对错误的信息进行校准并根据发送的设置更改工作模式,上位机发送设置如图4所示。
2 系统软件设计
2.1 设计流程
软件没计是系统的控制中心。系统使用C语言在Keil uVision4编译器中编写STC单片机程序。程序主要包括接收GPS数据、处理GPS数据、显示控制等。主程序流程如图5所示。
2.2 控制程序
STC12C5A通过串口接收一组完整的GPS数据后,通过控制程序对GPS信息作相应的处理。处理完后通过串口发送给上位机,在整个过程中必须同时打开2个串口。STC12C5A的2个串口刚好满足系统要求,而且可以对它们设置不同的波特率。STC12C5A系列的单片机扩展了1 KB的RAM空间,足够本系统作为暂时的缓冲器。系统不用保存大量的数据,虽然串口2一直在接收GPS导航数据和授时数据,同样串口1以更高的波特率在向上位机发送数据,最后所有的数据都会通过上位机软件以.txt格式保存在PC机上。控制程序在设置串口中断优先级时会把发送数据的串口中断设置成最高优先级,优先满足串口发送。接收GPS数据时每隔1 s接收一次导航信息,这样不会影响导航的精度。发送数据的串口波特率设置成115 200 bps,接收GPS数据的串口波特率设置成9 600 bps,2个串口的初始化程序代码如下:
数据处理部分主要是判断GPS发送给STC单片机的数据是否有效,在数据有效时提取经度、纬度、海拔、卫星日期、时间信息保存在字符数组中。数据保存完后确定数据是发送给LCD显示屏显示,还是通过串口发送给上位机软件显示。显示模式有LCD显示和上位机软件显示,默认方式是LCD显示。如果需要上位机界面为显示模式时,先通过上位机软件中的“发送设置”对话框设置“显示模式”为1,然后发送给STC单片机。
3 上位机软件设计
整个上位机采用结构化和模块化设计方法。上位机软件是基于对话框的MFC应用程序设计的,主要有串口通信模块、导航数据和时间显示模块、工作模式设置模块、授时模块。授时模块的作用是让PC机时间与卫星同步,确保PC机时间的精确度。与系统相连的PC机可以作为一个授时主机向其他单元发送时间。
串口通信模块的编写是用Microsoft公司提供的串口通信MSComm控件。添加了MSComm控件后,首先要对控件初始化,然后打开串口准备按位接收字符。串口通信模块的主要程序代码如下:
显示模块是当串口接收到字符后,对接收的字符进行分离并对应显示在软件界面上。上位机软件显示效果如图6所示。
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)