液晶显示控制器SED1330与DSP的接口应用

dsp与液晶显示模块sed1330的接口设计
tms320lf2407a对sed1330接口控制板的访问有直接访问和间接访问两种方式。直接访问方式是将dsp的读写信号线与sed1330接口控制板引出的读写信号线直接相连,其时序由dsp内部读写逻辑控制,但是由于液晶显示模块是dsp的一个慢速外设,要使两者的速度达到匹配,还必须加入一定的等待状态才能满足要求,考虑到dsp内部等待状态发生器所能插入的等待周期非常有限(只能给指定的存储空间插入一个等待状态),在不添加额外的硬件设备的情况下,很难满足设备的要求,所以设计中只采用间接访问方式,即用dsp的i/o口来控制seed1330,而通过软件编程来模拟sed1330的接口时序。
在此设计中,dsp的主频一般为30mhz,液晶显示模块接口控制时序采用m8080时序,它与dsp之间的接口电路如图2所示,其中,tms320lf2407的iopb0-iopb7用作数据接口,与液晶显示模块的数据线db0-db7相连,以完成与sed1330间的数据传送,iopa6与wr相连时,可在写sed1330时置为低,iopa7则与rd相连时,则在读sed1330时置为低;cs接地将时钟使能sed1330,iopa5与a0相连可决定是数据(a0=0),还是指令(a0=1)。背光电压由逆变器提供,调节电位器可以调节液晶显示屏的对比度。

dsp与sed1330的软件接口设计
为了使液晶屏能够正常工作,还必须编写硬件驱动程序,软件设计的关键是对液晶显示模块的初始化,以及对dsp与sed1330间接口时序的匹配。
液晶显示模块的初始化
初始化程序的主要任务是根据所控制的液晶显示模块的特性和用户的显示要求,写入适当的命令和参数,通常以参数表的形式送入,这些命令和参数必须首先写入,如果指令设置出现错误,则显示必定不正常,图3所示为sed1330的初始化流程,其参数分别有:system
set(30h、87h、07h、28h、42h、0f0h、28h、00h),scroll(00h、00h、0f0h、80h、25h、0f0h、00h、4bh、00h、00h),hdot
scr(00h),ovlay (1ch),csrform(5dh、07h),csrw(02h、00h),csrdir(指令4ch),disp
on(指令59h)。其中system set的驱动系统结构设置为单屏,选用外部字符发生器,字符格式为8×8,字符代码为80h-9fh,内部cgram有效,显示字符宽度和高度都是8,lcd每行需要的字节数为40,点行数为240,lcd的工作频率为70hz,显示内存内分配给一个显示行的单元数为40字节。

若需要把文本和图形混合显示,则只能设为二重合成显示,而三重合成显示只能用于图形方式。在双屏结构下,四个显示区同时参加二重合成显示时,一、二显示区位于上半屏,三、四显示区位于下半屏,并且此时一、三显示区合成为第一层,二、四显示区合成为第二层。
sed1330的读写时序
由于本设计中的液晶显示没有用dsp的数据线,而是用dsp的io口来模拟液晶控制器的时序,因此,在设计中,用io口来模拟sed1330的读写时序是重中之重。
sed1330的读写时序有m8080和m6800两种,本设计选用m8080时序,其时序如图4所示,其中的时间限定如表1所列。


由于dsp的处理速度远远快于sed1330的显示速度,所以每次向sed1330送出待显示的数据后,dsp应产生一定的延迟以等待响应sed1330的显示,所以在读写子程序中,要利用软件来产生如上时序才能对液晶进行正确操作,否则液晶将来不及显示而导致错误,在设计过程中,dsp的读写时序使用软件模拟,而不是靠dsp的引脚r/w、rd、we与地址数据线的定来保证时序,这一点在设计中应特别注意,下面给出笔者在设计过程中缩写的读写子程序:
wr_command:;入口参数为command
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=1
or #0e020h
sacl padatdir
ldp #4h
lacl command
or #0ff00h
sacl pbdatdir
;iopa6--/wr=0(写使能)
ldp #mcra>>7
lacl padatdir
or #0e000h
and #0e0b0h
sacl padatdir
rpt #10
nop
;iopa6--/wr=1(写不使能)
lacl padatdir
or #0e40h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delays1;延时100us
ret
wr_data:入口参数为data
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=0
or #0e000h
and #0e0d0h
sacl padatdir
ldp #4h
lacl data1
or #0ff00h
ldp #mcra>>7
sacl pbdatdir
;iopa6--/wr=0(写使能)
lacl padatdir
or #0e000h
and #0e0b0h
sacl padatdir
rpt #10
nop
;iopa6--/wr=1(写不使能)
lacl padatdir
or #0e40h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delays1;延时100us
ret
rd_data;
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=1
or #0e020h
sacl padatdir
;iopa7--/rd=0(读使能)
lacl padatdir
or #0e000h
and #0e070h
sacl padatdir
lacl pbdatdir
ldp #4h
sacl data2
rpt #10
nop
;iopa7--/rd=1(读不使能)
ldp #mcra>>7
lacl padatdir
or #0e80h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delaysi;延时100us
ret
rd_busy:
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=0
or #0e000h
and #0e0d0h
sacl padatdir
;iopa7--/rd=0(读使能)
lacl padatdir
or #0e000h
and #0e070h
sacl padatdir
lacl pbdatdir
ldp #4h
sacl data3
;iopa7--/rd=1(读使能)
ldp #mcra>>7
lacl padatdir
or #0e80h
sacl padatdir
ldp #4h
splk #100.yanshi1
call delays1;延时100us
;判断是否忙
ldp #4h
bit data2,9
bcnd rd_busy,tc
ret
显示软件设计程序流程
图形显示方式可以显示数字、汉字以及各种能绘制出来的图形,但是事先必须生成相应的点阵文件,实际上,显示字符、汉字和图形都是对液晶屏上的特定区域写入相应的数据,本质上没有区别,这些数据都存储在程序中,待显示时再将这些数据写入显示ram中,不过,在显示汉字字符时,可以将需要显示的字模提取出来存储,进行显示时再直接调用更为简单,想要显示一幅图画时,可以通过windows附带的画图工具制作一幅320×240象素的黑白位图,并先将位图反色,再将处理过的图片以16进制文件的形式和程序一起烧入外部24lc256中,注意:位图应存入一个起始地址。设置三层图形叠加方式显示的方法是一样的,图5所示是一个软件设计程序流程图。需要说明的是,当dsp上电后,sed1330要能正确复位,否则将不能正确显示。

结束语
sed1330控制器有64kb大容量缓存区,能适用多种规格的显示屏,其内部固化的字符发生器可产生160种字模并可外扩字符发生器,而且通过改变指令参数可以实现图像的闪烁、翻转、移动等,从总体性能方面而言,sed1330大大强于同类型的其他控制器,非常适用于各种液晶显示屏控制系统的设计需求。
本文介绍的由该控制器构成的液晶显示方案已成功地通过了调试,它与同类型的其他图形点阵液晶显示模块相比,其硬件电路结构简单,显示功能强大,同时这对于其他型号的接口芯片,也有很好的参考价值。
评论