在本文的设计系统中,我们即采用型号为MGLS-12032A 的图形点阵液晶显示模块,其内置SED 1520 控制驱动器(集行,列驱动器和控制器于一体),采用内藏控制器直接进行控制驱动方式。SED 1520 控制器可以直接与51 系列单片机相连,不必使用其它的接口芯片因此选择存储器映像方式的接口,晶液晶模块当做存储器的一部分对待直接使用存储器读写进行I/O 操作。即将液晶模块的数据总线与单片机的数据总线(P0 口)直接相连,液晶显示的片选与控制引脚与单片机的高8 位地址线(P2 口)相连,这样对液晶模块的各种指令操作,实际上就是与相应的控制地址交换数据。MGLS-12032A 图形点阵液晶显示芯片引脚图如下图6.1 所示。 主要参数如下:
点阵数:120×32;
点大小:0.6×0.425mm; 模块尺寸:75.0×54.0mm;
视频尺寸:60×26.5mm;
驱动方式:内藏控制器驱动; 电参数;(VCC=+5.0V,V0=-10V); 引脚定义如下;
Vcc:+5V 电源; V0:工作负电压;
Vcc 和V0 中间件滑动变阻器可以改变液晶屏的背景光亮度; GND:逻辑电源地;
A0:数据/指令通道选择;1 为选择指令通道;0 为选择数据通道; R/W:读写选择信号;
E1:控制器1 的读写使能; E2:控制器2 的读写使能; NC:空;
D0-D7:三态数据总线。
数据接收和显示电路地址分配和连接如下:
电路原理图1
·74LS00、74LS04:由于LCD并没有独立的片选信号,所以使用单片机的读写信号进行选通,而74LS00、74LS04则是转换读写信号电平,同时作为片选信号。
·E1、E2:连接经过74LS00、74LS04转换后的单片机读写信号,作为单片机对LCD的片选信号。 ·A8:单片机对LCD的数据/指令通道的选择。 ·A9;单片机对LCD的读写信号选择 ·D0~D7:单片机和LCD的数据总线; ·-LCD:为LCD提供负电压的引脚; ·VIN:电源的正电压:
·VCC:经过MAX1677变换后的系统正电源电压; ·TXD_GPS:GPS串口输出;
·RXD:经过MAX232转换后的串口TTL电平。
6.2 液晶模块的电源设计
一般的,单片机系统如果采用电池供电,其输入电压为+3V,而LCD 显示输出除了需要提供+5V 工作电压外,需要提供-10V 的对比度调节电压。所以电源部分设计要求为+5V 和-10V 双电压输出。在这里我们采用MAX1677 芯片进行电源供电方案。
MAX1677 是双电压输出升压DC-DC 变换器,是用于需两种可调电压输出的便携式仪器。MAX1677 芯片的管脚如图10 所示。 MAX1677 芯片性能如下:
·允许输入电压范围:0.7V—5.5V;
·主要输出:2.5V—5.5V 可调电压输 出,预设值
3.3 输出,最大输出电流可达350mA; ·第二输出:可为LCD 对比度调节提供- 28—+28 图6.2 MAX232 引脚图 范围内电压;
·电源效率:可达95%;
·封装形式:16 脚QSOP 封装,体积很 小,不需要外部场效应管;
·其他性能:还包括20uA 静态工作电
图6.2 MAX232 引脚图 流,1uA 关断维持电流和电池欠电压检测。
电源电路原理如电路原理图2所示。 电路原理和地址分配如下说明:
·L1、L2:磁芯电感,选用CoilCraft(线艺)的DO1608C-103 表贴磁芯电感,电感值为10μ;
·D1、D2:肖特基二极管,但也可选用其它型号,只要反向耐压大于16V 即可; R1、R2:电阻,R1 和R2 决定了LCD 对比度输出的电压值Vlcd(图中为Vout2)其中R1 的取值范围为500KΩ~2MΩ;
· R3、R4:电阻,R3 和R4 的比值决定了主输出电压值Vout(对应图中的Vout1),其中R4 的取值范围是10 KΩ~200 KΩ;
· R5、R6:电阻,R5 和R6 的比值决定了系统欠电压检测的门槛电压值Vtrip,当电池电压正常时,电池电压过低,输出管脚LOB(Low-Battery Output) 输出保持高电平;一旦电池电压低于门槛电压Vtrip 时,LBO 管脚输出变成低电平。如果不使用欠电压检测的话,只许将第三管脚(LBI)接地。
·Vin:电源电路的输入端,连接两节1.5V 电池,形成便携式仪表的电源; ·Vout1:连接MAX1677 的16 管脚,输出+5V 电压,作为系统的电源电压;
·Vout2:连接MAX1677 的10 管脚,输出-10V 电压,作为液晶显示模块的背光电源电压;
·Low-Battery Output:连接MAX1677 的4 管脚,输出电源电压不足的报警信号,也就是MAX1677 中的LBO 信号。
7 系统软件设计
7.1 软件设计方案
基于MCS-51 系列单片机的GPS 独立定位测量系统的软件设计由4个模块组成,分别是:1 系统初始化模块;
2 信号接收模块; 3 信号处理模块;
4 数据显示模块。
①系统初始化模块:在用户对设备加电时,对单片机的硬件端口作初始化操作;对GPS OEM 板初始化,做如下操作:输入“$PGRMO,,2*”语句,禁止GPS OEM 板所有输出语句;输入“$PGRMO,GPRMC,1*”语句允许GPS OEM 板输出$GPRMC 语句数据;对液晶显示模块作初始化操作:设置显示模式为16 字×2 行;将定位数据指针指向80H,即屏幕第0 行第1 列;显示屏清屏开显示屏和设置光标;显示光标移动设置。
②信号接收模块: 该模块的功能是使单片机的串口接收从GPS OEM 板发送来的GPS 定位数据,做如下操作:判断接收的字符是否是“$”字符;如果是则将记录标志位置1;把纬度数据计数变量和经度数据计数变量置0;把逗号计数变量置0。接收数据时,如果数据无效则可由单片机响应对GPS OEM板进行配置,以加快定位速度。配置时,该模块负责将输入的信息发送到GPS OEM 板。对发送到GPS OEM 板的信息要转换为NMEA-0183 格式。在对GPS OEM 板配置的语句中,校验码非常重要,因为GPS OEM 板有时可能没有正确接收到配置语句,所以配置时要连续发送,直到GPS OEM 板返回一个确认语句为止。
③信号处理模块:负责从接收的定位数据中分离出纬度和经度信息数据,数据处理模块负责处理从GPS OEM 接收到的数据。接收数据时首先需要判断数据是否有效(在GPRMC 语句中,A为有效,V为无效)。因输出数据是以语句的形式出现的,每条语句代表一种数据,每种数据有它自己的识别码,所以判断有效性后要根据收到的语句的识别码来判断该语句是否为所需要的内容(如GPRMC 中,“GP”为识别符,“RMC”为语句名)。当接收完数据后,还要进行一次检错过程,将所有收到的数据异或求和之后,与校验和“hh”进行比较,如果两者相同,则整个数据接收正确,然后对数据进行处理;若接收不正确,则重新进行接收。操作如下:先判断送来的是否是“,”字符;判断逗号的个数;分别提取第3 和第5 个逗号后的数据,因为这两个数据分别代表当前的纬度和经度数据;把分离出的数据送数据显示模块显示。
④数据显示模块:负责将有用的定位信息数据显示在反映定位置。同时完成从单片机读数据到液晶显示器和从液晶显示器读数据到单片机的双向传输工作。NMEA一0183是以语句形式发送数据的。接收机可能发送很多类型的语句,而我们需要的可能只是某些语句中的几个字段。因此就需要对接收到的数据进行解析,取得所需的信息。另外,可能会由于小数点位数不同等原因,语句的长度是可变的,因而分离感兴趣的信息时,不能按照该信息在语句中所处的字符位置来查找,只能依据逗号分隔符,这些都是我们在程序中需要注意的问题。为解决信息中用户所需要的信息。在应用程序中,首先用软件通过判别消息的引导头是否为“$”来确认是否进行数据接收,然后在对应消息中提取经纬度及时间等数据,最后通过消息尾(即回车符)来停止数据接收的正确提取问题,并提高程序的复用性,可以编写适当的函数,如一个用来分离语句,返回GPS 语句。