基于MSP430F169的射频识别器彩色液晶显示驱动设计
2021-04-13王浩,雷宇,魏启,王钗,王军,艾梅
王 浩,雷 宇,魏 启,王 钗,王 军,艾 梅
(中国石油集团东方地球物理勘探公司西安物探装备分公司 陕西 西安 710061)
0 引 言
声学二次定位系统[1,2]是利用船上的数据采集系统与投放到海底的应答器[1,2]之间的声纳通信,获取声纳信号走时,确定两者距离,并结合船载GPS的位置坐标,通过主机软件系统计算获取水下应答器的空间坐标。由于海洋勘探采集设备(采集站)内置或外置应答器,投放到水下时和水面GPS位置存在一定的偏差,利用声学系统可进行进一步的精确定位,即声学二次定位[3,4]。每一个应答器单元,都有自己的组号、ID序列号和内置电池的电压。新开发研制的声学二次定位射频识别器(RFID)能够在应答器下水前,识别每一个接近的应答器单元,以真彩色、醒目大字体显示其组号、ID序列号和内置电池的电压,并提供低压报警,便于应答器在海上施工作业下水过程中,船上施工人员监视应答器的状态,将异常应答器检出,确保状态正常的应答器才能下水。基于MSP430F169的串口液晶显示驱动是射频识别器的显示控制子系统,根据射频识别器的主处理器和液晶选型,确定通讯接口、通讯协议和驱动控制。选用不同厂商制造的液晶屏,需要开发对应的液晶驱动控制程序。
1 液晶驱动的硬件平台
液晶的显示驱动控制是建立在射频识别器的主处理器的类型和液晶终端的选型基础上的。
射频识别器的主处理器MCU选用微处理器MSP430F169。MSP430F169是美国TI(Texas Instruments)公司生产的一种混合信号处理器,具有超低功耗和强大的处理能力[5]。体系架构采用16位RISC,最高运算速度为8 MIPS。其片内整合多款低功耗外围模块,具有60 KB闪存、2048 B RAM、12位ADC、双DAC,2个USART、I2C接口、HW乘法器接口、1个DMA通道。
选用微处理器MSP430F169的主要原因是:其供电电压采用1.8~3.6 V伏,工作功耗250 μA/MIPS(MIPS:每秒百万条指令数),具有超低功耗。此外MSP430F169接口资源丰富,拥有USART接口,可通过简单的接口转换芯片变成RS232 接口,实现与串口液晶的通讯控制。
液晶彩屏终端选择了一款具有RS232串行接口的智能型液晶彩屏终端,该终端是一款高性能、低功耗的真彩显示器。该液晶彩屏终端的主要性能[6]:
1)处理器: 32位ARM处理器+FPGA双核控制架构;
2)存储容量:内置标准的1 GBit Flash;
3)接口特性:与上位机MCU通讯接口:RS232或3.3V CMOS/TTL UART;
4)PC下载图形接口:USB2.0;
5)分辨率:800×480,16位真彩色RGB显示;
6)内置8×12、8×16、12×24、16×32、32×64 ASCII字库;12×12、16×16、24×24 GBK和32×32、64×64 GB2312字库,可自定义任意WINDOWS字库;
7)尺寸:7 in(1 in=25.44 mm,下同);
8)工作电压:最小7.6 V、标准9.0 V、最大24 V;
9)工作电流:最小110 mA、标准340 mA、最大440 mA;
10)工作温度:-20~70 ℃;
11)触摸屏工作温度:-10~60 ℃。
该液晶彩屏终端选型完全满足海洋勘探船上作业需求:标准功耗3 W;彩屏大小7 in,屏幕分辨率800×480,拥有64点阵的超大汉字字库,以64点阵字体可以显示12行文本,完全满足射频识别器显示信息需要的行数;具有64 K色的TFT真彩,显示美观;具有RS232串行接口,只需3根连线就可实现与主处理器的通讯。
二次定位射频识别器的原理图如图1所示。射频识别器的主处理器MCU通过射频接口获取应答器的组号、ID序列号和内置电池的电压的分档编号,经解析、处理后通过RS232接口发送给液晶终端,显示对应字符信息。
图1 RFID 器系统原理框图
2 液晶驱动应用软件设计
液晶显示驱动应用接口软件是基于微处理器MSP430F169开发和设计的,通过RS232接口与智能液晶终端进行数据通讯,实现字符信息的显示。
液晶显示驱动应用接口软件的应用需求如下:
1)显示设备制造商名称:64点阵中文显示;
2)显示应答器的组号:BCD码,最小1,最大999,64点阵3位显示;
3)显示应答器的ID:BCD码,最小1,最大99, 64点阵3位显示;
4)显示应答器内置电池的电压:共27档(从5 V到13.50 V),浮点数,64点阵3位显示。
液晶显示驱动应用接口软件采用汇编语言开发,这样编译的代码容量小,执行速度快,效率高。整个驱动程序由主程序、组号显示子程序、ID号显示子程序和电池电压显示子程序组成,如图2所示。
图2 液晶显示驱动程序的组成
上述应用子程序建立在串口发送子程序[7]的基础上,主程序完成显示数据字段的定义、串口的初始化和子程序的初始化和调用等。整个程序设计的核心是基于串口通讯协议,用汇编语言实现应用通讯接口模块。下面从MSP430F169 与液晶彩屏终端的通讯协议、MSP430F169的存储空间地址映射、驱动程序数据区定义和核心关键子程序的设计4个方面完整地阐述其驱动程序的设计思路。
2.1 MSP430F169与液晶彩屏终端的通讯协议
MSP430F169与液晶彩屏终端的通信协议帧由4部分组成:帧头+指令+参数+帧尾。其帧结构详细组成见表1。如果指令参数多于1个字节,统一以MSB方式(高字节在前,低字节在后)进行通信,每帧最大的数目是1024B(包含帧头和帧尾),指令数据均以十六进制表示。与字符显示相关的帧指令格式见表2,给出了设置前景色0x41指令和文本显示指令0x20指令的详细指令帧结构。
表1 帧的结构组成
表2 字符显示帧指令格式
液晶和上位机的通讯协议是整个液晶字符控制显示的基础,通过向串口液晶彩屏终端按照数据帧格式发送数据帧,就能在液晶屏幕给定的位置坐标、给定的背景色以字体前景颜色显示给定点阵大小的字体,实现字符的显示控制。
2.2 MSP430F169的存储空间地址映射
MSP430F169的存储空间地址映射[8]定义了中断向量表的入口地址0FFFEh、flash程序存储区的地址空间的起始地址01100h、RAM 数据存储区的地址空间,其详细地址映射如图3所示。液晶驱动控制显示是基于MSP430F169的存储空间地址映射的,它是整个液晶显示驱动程序框架设计的基础。
图3 MSP430F169的存储空间地址映射
2.3 数据区定义
液晶显示驱动数据区主要定义驱动程序的数据区,它包括:组号显示控制码的头部和尾部,中间需要插入实际组号的BCD码(百位+十位+个位);ID 号的显示控制和组号相似,只是显示的BCD 码有两位(十位+个位);电池电量显示数据包含27个电池电量显示表。其数据区定义详见下面的代码部分。
ORG 0FFFEh ;定义程序入口地址
DC16 init ;
ORG 01100h ;MCU 复位地址
Tab_GrpNo01:
DB 0EEh,20h,00h,32h,00h,8Ch,01h,09h,0D7h,0E9h,0BAh,0C5h,0A3h,0BAh;
;组号显示控制码第1部分:在屏幕坐标(50,140)蓝色背景显示64点阵字体
"组号:";在第1部分和尾部分插入BCD码组号值(百位+十位+个位)
Tab_GrpNo02:
DB 0FFh,0FCh,0FFh,0FFh;组号显示控制码尾部分,帧结束标志
Tab_ID01:
DB 0EEh,20h,00h,32h,00h,0F0h,01h,09h,49h,44h,0BAh,0C5h,0A3h,0BAh;
;ID号显示控制码第1部分:在屏幕坐标(50,240)蓝色背景显示64点阵字体"ID号:";在第1部分和尾部分插入BCD码ID号值(十位+个位)
Tab_ID02:
DB 0FFh,0FCh,0FFh,0FFh;ID号显示控制码尾部分
;定义27个电量表显示控制码,不一一列出,只给出3个表以抛转引玉。
Tab_Bat00: ;显示"电量: 5.00 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 20h, 35h, 2Eh, 30h, 30h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
Tab_Bat01: ;显示"电量: 6.00 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 20h, 36h, 2Eh, 30h, 30h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
Tab_Bat1A: ;显示"电量:13.75 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 31h, 33h, 2Eh, 37h, 35h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
2.4 液晶驱动关键子程序设计思想
液晶驱动程序在射频识别器的应用工作流程如图4所示:通过搜寻接近的应答器,分别读取其组号、ID号、电池电压档位编号,通过依次调用组号、ID号、电池电压子程序,在屏幕设定的行上以蓝色背景和红色字体显示其组号、ID号、电池电压。
图4 液晶驱动程序应用工作流程
液晶显示驱动的核心程序包括:组号发送子程序、ID号发送子程序和电池电压发送子程序。
组号发送子程序的帧结构是:"组号:"+组号的BCD码数值(百位+十位+个位)+组号显示控制码尾部分(帧结束标志),分别通过串口发送三部分的内容就可以在屏幕指定的坐标开始以一行显示组号的具体数值。前面的数据区的标号Tab_GrpNo01定义了"组号:",标号Tab_GrpNo02定义了帧结束标志,具体的组号值由于是3位BCD码,存储于两个8位寄存器中,子程序需要分别读取两个寄存器的BCD码值,并转换成ASCII码。
ID号发送子程序和组号发送子程序结构完全相同,只是发送的内容不同。"ID号:"+ID号的BCD码数值(十位+个位)+ID号显示控制码尾部分(帧结束标志),分别通过串口发送三部分的内容就可以在屏幕指定的坐标开始以一行显示ID号的具体数值。前面的数据区的标号Tab_ID01定义了" ID号:",标号Tab_ID02定义了帧结束标志,具体的ID号值由于是2位BCD码,存储于一个8位寄存器中,子程序需要读取该寄存器的BCD码值,提取出ID号的十位和个位,并分别转换成ASCII码。
电池电压发送子程序根据测量电压的分档编号值(测量电压区间:5~13.75V,被分成27个档位,5 V的编号为0,对应显示数据表中的Tab_Bat00;依次类推,13.75 V编号为26,对应显示数据表中的Tab_Bat1A)建立和显示数据表中的显示控制码的映射:每帧(每行)电压显示控制码占用25个字节,根据这个偏移量,结合测量电压的分档编号值查询当前编号值对应的显示控制码,这样在屏幕的指定行显示编号对应的电压值。
3 显示效果和开发要点
液晶驱动程序的显示效果如图5所示。
图5 液晶驱动程序显示效果
液晶驱动程序的设计要注意:液晶屏的驱动接口、液晶屏的控制协议、液晶屏幕的显示规划、命令帧结构的组合控制、程序的查表控制、BCD码显示控制需要转ASCII码。注意整体设计逻辑和控制细节才能高效开发驱动控制程序,并且可扩展到其它应用领域。
4 结束语
本文从微处理器MSP430F169 与液晶彩屏终端的通讯协议、MSP430F169的存储空间地址映射、驱动程序数据区定义和核心关键子程序的设计多个方面完整地阐述液晶驱动程序的设计开发思路,并采用汇编语言通过串口通讯实现了声学二次定位射频识别系统(RFID)中对应答器单元组号、ID序列号和内置电池电压的真彩色、大字体中文显示,并提供低压报警功能。该驱动程序已应用于声学二次定位射频识别系统中,已有多套产品应用于海洋勘探施工作业中,满足了客户海上作业的实际应用需求。