接口/总线/驱动
引言
常用液晶显示模块的种类有笔段式、字符式和图形式等,可方便地用于各种嵌入式系统的液晶显示。字符式液晶显示模块SMC1602B是长沙太阳人电子有限公司的8位并行接口、内藏控制器HD44780的背光式两行液晶显示模块。
本文使用的DSP是AD公司的一种低价格、高性能的16位定点运算DSP—ADSP2181。它集成度高,在ADSP21XX基础上,把24x16KB的程序存储器,16x16KB的数据存储器,两路串行接口和两路DMA都集成在一个芯片上,运行速度快,指令周期可达25ns。它具有2048个存储单元的I/O口,支持并行的外围设备以及相应的可编程等待状态发生器,适合与不同速度的外设接口,可扩展性强。
SMC1602B的原理
字符式液晶显示模块SMC1602B由一块5x7点阵液晶屏和控制芯片HD44780及其辅助电路组成。它可以显示字母、数字、符号等,显示容量为16x2 个字符,芯片工作电压为4.5~5.5V,工作电流为2mA(5V),模块最佳工作电压为5V,字符尺寸为4.95x7.95(W×H)mm。
接口信号说明
SMC1602B液晶显示模块具有16条接口信号线,包括8条三态数据线,使能信号线E,读写选择信号线R/W,命令/数据选择信号线RS等,其详细的接口信号说明如表1所示。
其中,VL为液晶屏的参考电源,外接可调电阻可用来调节液晶屏的对比度。R/W为读写选择信号,R/W=1为读状态,R/W=0为写状态。RS为寄存器选择信号,RS=1为指令寄存器,RS=0为数据寄存器。E为使能信号,读状态在高电平有效,写状态在高脉冲下降沿有效。这三条控制线用于主控CPU访问模块内部控制器HD44780使用。
读写操作时序
SMC1602B模块接口控制时序适合M6800系列MPU,具有较宽的适应能力,其具体读、写操作时序如图1所示。
RAM地址映射图
模块SMC1602B内部的控制器是日立公司的HD44780,它是专用于字符显示的液晶显示控制驱动集成电路,集驱动器与控制器于一体,内藏有显示缓冲区 DDRAM和用户自定义的字符发生器CGRAM。其中,显示缓冲区DDRAM是用来存储显示字符代码的,共有80x8位(80个字节),CPU可对 DDRAM进行读、写操作,读、写单元的地址由内部地址计数器AC提供。DDRAM各个单元均对应着显示屏上的各个字符位,他们的对应关系如图2所示。即使显示屏没有这么大,但他们的对应关系依然存在,由HD44780内定的,是不可更改的。因此,当需要在屏幕上某行某列显示某个字符时,CPU只需将字符对应的数据写入显示DDRAM相应的地址处即可,该模块会自动将显示DDRAM内容送往液晶屏,完成相应的显示。可见,SMC1602B模块能根据主控 CPU写入到该模块的各种命令字及显示RAM数据,自行对液晶屏进行一系列操作,而不再需要主控CPU的参与。
指令说明
液晶模块SMC1602B具有特定的指令,指令格式非常简单,主控CPU只需通过接口将指令写入到液晶模块就可设置工作方式,或者控制液晶模块实现某种功能。常用的指令如表2所示。
状态字说明
液晶显示模块SMC1602B内有一个忙标志位STA7,它反映了控制器HD44780内部运行时序状态。当STA7=1时,表示内部操作正在运行,不能接受外部数据;当STA7=0时,表示已准备好接收,可以随时接收CPU发来的数据和命令,这是SMC1602B向CPU发出的唯一联络信号。CPU对模块的读操作(RS=0,R/W=1),读出来的状态字是忙标志位与7位当前数据地址指针值的组合,其格式如表3所示。因此,对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0。
ADSP2181与SMC1602B硬件接口设计
一般地,主控CPU与SMC1602B液晶模块的硬件接口有总线方式和模拟口线方式两种,这里,我们以ADSP2181作为主控CPU,使用总线接口方式,如图3所示。通过数据总线与控制总线,直接采用I/O设备访问形式控制该液晶显示模块。
根据液晶模块的读写时序要求,使能信号E由适合的逻辑器件组合控制,同时也可增加适当的硬件延时。由于液晶显示模块SMC1602B是8位μP接口的,故只须将ADSP2181的低8位数据总线与之相连即可。工作时,地址线A9为低电平,同时,地址线A1和A0分别控制模块的读写选择信号R/W与命令数据选择信号RS,相应的操作即可直接对DSP的I/O存储器空间进行。根据接口电路设计,相应的I/O操作口地址有四种:写指令为IO(0X000),写数据为IO(0X001),读状态为IO(0X010),读数据为IO(0X011)。
ADSP2181与SMC1602B软件接口设计
相对快速的DSP而言,SMC1602B是一慢速的外设,但ADSP2181内置有可编程等待状态产生器,等状态控制寄存器映射于数据存储区DM (0X3FFE)。在CPU读写I/O端口时,通过增加0~7个等待状态,可以加长CPU等待外部I/O口响应的时间,完全满足SMC1602B的时序要求。另外,在连续向液晶模块写数据时,为了解决LCD反应太慢的问题,在连续写之间调用了延时5ms子程序。在系统DSP程序中,液晶显示模块子程序流程图如图4所示,其中,对LCD读写位于I/O存储器地址0X000~0X003。
结语
本文以ADSP2181为主控CPU,实现了与液晶模块SMC1602B的接口,较好地解决了两者之间的速度匹配问题,类似地,51系列、96系列、 M6800系列等单片机以及其他系列的DSP器件都可以实现液晶显示。以液晶模块SMC1602B作为某测控系统的显示部分,具有工作电压低,显示清晰可靠,受干扰小等优点,同时也要注意到其反应较慢的缺陷。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !