DSP是一种适合于数字信号处理的实时高速的高性能微处理器,已广泛应用于自动控制、图像处理、通信技术、网络设备、仪器、仪表和家电领域。液晶显示屏以其显示直观、便于操作的特点被用作各种便携式系统的显示终端。传统液晶大多用单片机控制,而单片机的数字信号处理能力远低于DSP芯片,使得其应用范围受到限制。基于此,本文选用TOPWAY公司生产的、以ST7920为控制芯片的128×64点阵3.3V简体中文字库的LM3303A-B型图形液晶,介绍了一种基于DSP和ST7920的液晶显示屏的设计。
1 ST7920控制器介绍
LM3303A-B型液晶显示屏是香港TOPWAY公司采用台湾铭创电子公司生产的ST7920控制器的液晶显示屏。它由128×64点阵构成、接口方便(3.3V)、设计简单、功耗低、价格便宜,可用于各种设备的显示终端[1]。
ST7920支持8位、4位并行或2线、3线串行两种接口方式,带有ZMB的中文字型CGROM,该字库ROM中含有8192个16×16点阵的中文字型,可利用代码简单方便地显示汉字。16KB的半宽字型HCGROM,提供了126个168点阵的ASCII字符库,便于英文和其他常用字符显示。64×16位元的字型产生CGRAM,用户可以根据需要构造生僻字。64×26位元的绘图GDRAM,方便构造图形。控制器具有绘图及文字画面混合显示功能。另外,控制器提供基本指令与扩充指令命令,功能强大。
2 DSP与液晶显示屏硬件接口设计
由于LM3303A-B具有串/并行多种接口方式,针对DSP外围I/O丰富且处理速度快的特点选用8位并行的接口方式,这种方式下虽然接线多,但是速度比串行要快得多,所以将PSB引脚接高电平。
DSP 与LM3303A-B之间的接口电路如图1所示。由于LM3033A-B是3.3V简体中文图形液晶,所以DSP与液晶之间不用电平转换。其中DSP 的IOPE0~IOPE7用作数据接口,与LCD模块的数据线DB0~DB7相连,完成与LM3303A-B 间的数据传送;IOPF0与RS相连,决定是数据(RS=0)还是命令(RS=1);IOPF1与R/W相连,决定是写入(RW=0)还是读出(RW=1); IOPF2与E相连,工作状态使能。IOPD0与/RST相连用于复位。VDD接+3.3V输入电源。A与K引脚间的电压为显示屏内部发光二极管提供电压,使其产生背光;参考文献[1]中要求调节显示屏的对比度是在V0与VOUT之间串接一个电位器,但在实际应用中无法实现,而是采用V0直接接+5V的上拉电阻且空出VOUT,可以有效地调节显示对比度。
3 DSP控制液晶显示屏的软件设计
从程序的可移植性和通用性方面考虑,选择C语言进行软件模块的设计实现。这里通过液晶显示屏的初始化过程以及如何显示文本和一幅图画来具体说明DSP控制液晶显示屏的软件设计。
3.1 软件设计程序流程
DSP要控制液晶显示屏系统运行,首先应将系统接通电源,系统自动复位。复位后进行系统初始化、液晶初始化。在初始化完毕后,系统可以通过控制器发出的指令调用相关函数,完成相应的显示功能。其主程序流程图如图2所示。
3.2 系统及液晶初始化
系统初始化禁止所有可屏蔽中断,并关总中断,在进行关键设置时不允许发生中断,以免产生干扰。允许符号位扩展,将B0配置为数据存储空间。设置IOPE0~IOPE7为LCD数据接口。
液晶初始化需首先进行复位清屏,如果液晶显示屏正常工作,便可写命令到LCD。其中用到用户定义的函数LCD_WriteCommand(uchar cmdcode)和函数LCD_Busy(),其作用分别为写命令到LCD和判断ST7920内部是否处于忙碌状态。这里值得注意的是,当ST7920在接受指令前,DSP必须先确认ST7920内部处于非忙碌状态,即读取BF标志位时BF需为0,方可接受新的指令。
3.3 ST7920的读写时序
在软件设计过程中,只有产生符合ST7920的读写时序后才能对液晶正确操作,否则液晶显示屏不会有任何输出。
本系统中的DSP主频为30MHz,相对而言,液晶属于慢速的外设,所以在读写子程序中应该插入一些延时等待。根据图3和图4中的时序图可以编写以下读写子程序(其中为了提高程序的可移植性与可读性,在程序开头都用了宏定义,限于篇幅在此不再给出):