将所要发送的数据送入发送缓冲器时,由于MAX3100要等T=1时,发送缓冲器为空,才可以接收另一个需发送的数据,所以此时加入合适的延时,是非常必要的,可以保证所发数据准确无误。
4.3 建立字库
在实现OLED显示时,先将需要显示的汉字组成一个汉字库,英文字符或阿拉伯数字组成一个西文字库。
如汉字“效”字,设置宋体12号,对应的点阵为宽×高=16×16,用取模软件横向取模对应的32字节为: {O×10,0×20,0×08,0×30,O×08,0×20,0×
阿拉伯数字“1”,设置宋体12号,对应的点阵为宽×高=8×16,用取模软件横向取模对应的16字节为:{0×00,0 x0o,0×00,0×10,0×70,0×10,0×10,O×10,0×10,0×10,0×10,O×10,0×10,0×
4.4 软件要点设计
软件设计的时候,有两部分关键设计,一是对串口接收到的GPS模块数据进行处理;二是将所需的定位信息在OLED显示屏上显示出来。软件流程图如图2所示。
在MAX3100中定义一个8位移位的子程序,C语言代码如下:
这个子程序的任务就是通过对MAX3100的DIN和DOUT引脚进行8次移位操作,来完成两个任务,首先是接收部分,通过初始化配置后,经过 RX接收GPS模块的NEMA语句,送入接收缓冲区。接下来是发送部分,接收SPI数据并进行发送缓冲,通过TX按异步串行发送出去。
接收NEMA语句时首先从行首标志“$”开始,在没有进一步处理之前,NEMA语句是一长串字节流,这些信息在经过分类提取之前是无法加以利用的,因此,必须通过软件程序将各个字段的信息从字节流中提取出来,将其转化成纬度、经度、高度、速度、日期、时间、航向、卫星状况等定位信息。
在OLED显示屏上某一位置显示某一定位信息,是通过软件设置来完成的,其中Row代表所要显示位置的开始行,Column代表所要显示位置的开始列,a代表在已经建立的汉字库和西文字库中的序列号,C语言代码如下:
5 结束语
本系统结合MAX3100高效的异步收发通信优点,吸取了其功耗低、体积小、传输快以及OLED显示屏超轻薄、高亮度、广视角、自发光、响应速度快、适应温度范围宽、抗震强、功耗低等优点。设计开发出由电池供电的便携式GPS定位系统,已经成功应用到产品中,取得很好的效果。