基于DSP和ST7920的液晶显示模块的实现

[复制链接]
790|19
手机看帖
扫描二维码
随时随地手机跟帖
Peonys|  楼主 | 2018-1-13 10:56 | 显示全部楼层 |阅读模式
基于DSP和ST7920的液晶显示模块的实现

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,可以有效地调节显示对比度。

20102295950802.gif

  3 DSP控制液晶显示屏的软件设计

  从程序的可移植性和通用性方面考虑,选择C语言进行软件模块的设计实现。这里通过液晶显示屏的初始化过程以及如何显示文本和一幅图画来具体说明DSP控制液晶显示屏的软件设计。

  3.1 软件设计程序流程

  DSP要控制液晶显示屏系统运行,首先应将系统接通电源,系统自动复位。复位后进行系统初始化、液晶初始化。在初始化完毕后,系统可以通过控制器发出的指令调用相关函数,完成相应的显示功能。其主程序流程图如图2所示。

20102295950445.gif

  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中的时序图可以编写以下读写子程序(其中为了提高程序的可移植性与可读性,在程序开头都用了宏定义,限于篇幅在此不再给出):

20102295950527.jpg


20102295950207.jpg

20102295950432.jpg

  3.4 液晶显示程序设计

  液晶初始化完成后,可调用函数void dis_txt()进行文本的写入与显示。详细代码如下(其中函数void dis_hz(char*s)用来显示字符串):

20102295950385.jpg

 液晶显示屏显示图片,调用void Disp_Img(uchar*img)函数,先完成地址归位和清屏等相关工作,其后的关键功能代码实现如下:


20102295950849.jpg

  本文对基于DSP和ST7920液晶显示模块的实现方法进行了探讨,对显示模块ST7920进行了有效的控制, 所应用程序均在TMS320LF240x系列的软件编译环境CCS V2.0下调试通过。液晶显示屏能够正常显示连续的汉字、字符以及图形,性能稳定。与同类型的其他图形点阵液晶显示模块相比,其硬件电路结构简单、方式灵活、对于其他型号的接口芯片也有参考价值。该显示模块能够应用于工程机械上。



相关帖子

quickman| | 2018-1-13 21:42 | 显示全部楼层
LCD12864?

使用特权

评论回复
jstgotodo| | 2018-1-13 21:43 | 显示全部楼层
ST7920控制器的12864液晶

使用特权

评论回复
iamaiqiyi| | 2018-1-13 21:47 | 显示全部楼层
能够显示字母、数字、中文和自定义字符

使用特权

评论回复
dzfansman| | 2018-1-13 21:47 | 显示全部楼层
ST7920控制器的128×64中文字库点阵屏

使用特权

评论回复
sanxingnote7| | 2018-1-13 21:47 | 显示全部楼层
代码很全面。

使用特权

评论回复
backlugin| | 2018-1-13 21:48 | 显示全部楼层
显示图形并不合适

使用特权

评论回复
sdCAD| | 2018-1-13 21:48 | 显示全部楼层
内置12864-12汉字图形点阵的液晶显示

使用特权

评论回复
eefas| | 2018-1-13 21:49 | 显示全部楼层
DSP怎么不使用串口显示屏呢

使用特权

评论回复
pl202| | 2018-1-13 21:49 | 显示全部楼层
可以串行驱动12864液晶屏

使用特权

评论回复
quickman| | 2018-1-13 21:50 | 显示全部楼层
带全部的汉字字库吗?

使用特权

评论回复
jstgotodo| | 2018-1-13 21:50 | 显示全部楼层
性能看着不错,价格呢?

使用特权

评论回复
iamaiqiyi| | 2018-1-13 21:50 | 显示全部楼层
支持8位、4位并行及串行总线接口。

使用特权

评论回复
dzfansman| | 2018-1-13 21:50 | 显示全部楼层

使用特权

评论回复
sanxingnote7| | 2018-1-13 21:50 | 显示全部楼层
适合后期参考开发。

使用特权

评论回复
backlugin| | 2018-1-13 21:50 | 显示全部楼层
它绘图时先要关闭显示,绘完后又要打开,速度会较慢

使用特权

评论回复
sdCAD| | 2018-1-13 21:50 | 显示全部楼层
实际的效果没有使用过。

使用特权

评论回复
fengm| | 2018-1-13 21:50 | 显示全部楼层
现在都有TFT了,功能非常强大。

使用特权

评论回复
eefas| | 2018-1-13 21:50 | 显示全部楼层
显示内容更为重要的是图形。

使用特权

评论回复
pl202| | 2018-1-13 21:50 | 显示全部楼层
并口占用太多的自由,不如串口。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

640

主题

901

帖子

5

粉丝