DIY编程器网

标题: GSM/GPS车载系统中的LCD中文显示的编程方法 [打印本页]

作者: admin    时间: 2015-4-27 21:31
标题: GSM/GPS车载系统中的LCD中文显示的编程方法
  GPS车辆调度系统是应用全球定位系统GPS(G1obalPosltlomng System),并基于GSM移动通信网络,通过短消息通信的方式对网内车辆进行定位、跟踪和监控的监管系统。

  目前,在许多行业(如公安、公交和银行等)中,GPS车辆调度系统已经相当普及,GPS车辆调度系统的相关研究也成为业界的一大热门课题。本文LCD中文显示的一种编码方法是笔者在设计GPS车载终端通信系统时使用的方法。

  1 问题的提出

  一个GPS车辆终端在硬件上主要包括以下几部分:

  GPS接收模块,用于接收GPS卫星发回的GPS定位信号。
  GSM通信模块,用于实现终端模块与监控中心的无线通信。
  中央控制单元,对信号接收、短消息通信及人机交互等工作进行控制。
  键盘、显示单元,用于人机交互,显示监控中心的命令。

  在GPS车辆终端系统的开发过程中,出于系统功能和产品成本的综合考虑,大多数设计者都会选取一块廉价、低端的LCD液晶显示器。由于GSM短消息编码方式与普通LCD显示器不兼容,许多GPS车载终端不支持中文信息的显示,这是设计中的一个技术难点。

  GSM短消息通常是以PDU模式收/发的,在这种模式下模块收到的是一串Unicode码字符。unicode码即统一码。是一种在计算机上使用的字符编码方式。它为不同语言的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换和处理的要求。例如,当监控中心向GPS车辆终端发送“速回中心”这样一条调度信息时,终端将收到Unicode字符串“0698 E698 1E18 06FE”。

  但目前大多数LCD显示器并不支持这种编码,要在终端上显示这条信息,必须将其转换为LCD支持的GB码,即字符串“CBD9 BBD8 D6D0 DOC4”。

  要进行这样一种转换,在通常情况下有两种方法:

  ①找出这两种编码方式的运算关系,通过公式进行转换;

  ②分别建立Unicode和GB两张码表,通过查表的方式进行转换。但由于Unicode和GB是两种相互独立的编码方式,它们之间没有任何联系,运算关系更是无从谈起,因此第一种方法是行不通的。而对于第二种方法,从理论上讲是完全可行的,且在PC机上通过高级语言的函数调用即可实现;但对内存极为有限的单片机来说,要建立如此庞大的两张码表显然是不可想象的。即使舔加了存储器,具备了足够的存储空间,码表的录入和对应也同样是一项繁琐的工作。因此,一种切实可行的,能够实现中文显示的设计方案就显得尤为重要。

  2 解决方案的设计

  为了解决上述难题,笔者特设计了一种在GSM模块的TEXT模式下,基于调度中心发送GB码字符串的编码方法。

  GSM短消息的TEXT模式(文本模式)与PDU模式相同,也是一种使用AT命令传输数据的接口协议。不同的是,在信息传输过程中网络传输的是英文或数字等ASCII内码,因此该模式适合于非智能终端、终端仿真器和一些基于V.25ter自动呼叫/自动应答的应用软件。例如,发送字符A到模块,并通过AT命令读SIM卡内容到单片机内存,通过伟福仿真器的DTAE窗可观测到如图1所示的ASCII码。


  将内存中ASCII码翻译后可得如下信息:










  由于所有GB码皆由大写英文字母和数字组成,两者又都是ASCII内码,因此可将调度信息的GB码通过ASCII内码字符的形式向车载终端发送。例如,仍是“速回中心”这条短消息,查GB-2312表可得这4个汉字的GB码为“CBD9 BBD8D6D0 DOC4”。将此条字符串发送到车载终端,终端接收后的信息如图2所示。




  图2中70H~7FH内存单元存放了该条信息。由于此时接收到的只是一串英文和数字的字符,要在LCD上显示,还须将其还原为GB码(即两个字符转换为相应的一个2位16进制数,并存入一个内存单元)。将上述字符串转换、合并,存储在:BOH开始的内存单元中的数据如图3所示。




  图3中BOH~BSH内存单元中存放了“速回中心”这条短消息的GB码。软件实现流程图如图4所示。




  还原为GB码程序实现如下:


  经上述过程后,显示缓冲区中便存放了“速回中心”这4个字的GB码。将这些GB码经程序送入LCD显示器内存DDRAM中后,即可进行显示。

  结语

  本文利用GB码的一些组成特点,提出并实现了一种发送GB码字符串的编码方式。这种方法成功地解决了GSM短消息编码方式与普通LCD显示器不兼容的问题,去除了许多GPS车载终端不支持信息的弊端,有很强的实用性。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2