用80C31和SED1335控制三星LCD模块
扫描二维码
随时随地手机看文章
作者:孙友伟 韩少华 韩国三星320×240lcd lcd模块是一款低价位高品质的lcd模块,具有高分辨率(点为0.27mm×0.27mm)、高对比度fstn、高可靠性、低功耗、低价格等优点,特别适用于数控机床、pda、掌上电脑、游戏机等产品。 sed1335是日本seikoepson公司出品的液晶显示控制器,在同类产品中是功能很强。其特点为:有较强功能的i/o缓冲器;指令功能丰富;四位数据并行发送;图形和文本方式混合显示。 sed1335指令集 sed1335有13条指令,多数指令带有参数,参数值由用户根据所控制的液晶显示模块的特征和显示的需要来设置。指令表如表1所示。 sed1335 液晶控制板是用于mpu系统与液晶模块之间的控制接口板,接收来自mpu系统的指令与数据,并产生相应的时序及数据控制模块的显示。a0为lcd控制器寄存器选择输入,类似于通常字符点阵lcd模块的rs或d/i。mpu把指令代码写入指令输入缓冲器内(即a0=1),指令的参数数据则随后通过数据输入缓冲器(a0=0)写入。带有参数指令代码的作用之一就是选通相应的参数寄存器,除sleepin、csrdir、csrr和mread外任一条指令的执行都产生在附属参数的输入完成之后。mpu可用写入新参数与余下的旧参数有效地组合成新的参数,需要注意的是所写参数的顺序不能改变,也不能省略。 表1 sed1335指令集 硬件接口电路 一般sed1335控制板有一跳线,用来选择mpu是mcs51或mc68000单片机。此处硬件设计采用单片机80c31控制sed1335来完成对液晶显示模块的控制。 80c31外扩32k的27256 eeprom,用以存储程序及显示资料。lcd的八位数据d0~d7接到80c31的外部数据总线p0.0-p0.7上,lcd的片选cs接80c31的 p2.7(a15),lcd的a0接80c31的p2.0(a8),所以lcd的口地址为0xxxxxx0xxxxxxxxb或 0xxxxxx1xxxxxxxxb,v0为lcd的对比度调节,接一个20k的电位器中间抽头,当向vee方向调时,lcd对比度增大,向vdd方向调时,lcd对比度减小。 软件 seed1335的程序设计非常简洁方便,其流程是: 在硬件系统上电复位后,软件根据液晶模块的参数(如液晶的行数、列数、扫描频率等)和需要的显示方式设置各个指令的参数来初始化系统,之后就可以由单片机把数据直接送给sed1335的显示缓存,sed1335就可以控制液晶显示。如果在后面需要改变显示的形式(如使原来静止的图片翻转),只要对应表1 中的指令改变相应指令的参数,然后重新输入数据即可改变显示的方式。 设置系统命令参数或送数据给显缓的方法是:先将指令代码送到sed1335的命令口地址,然后把该指令的参数送到数据口地址后即可把数据送到数据口地址。语法如下: mov dptr,#xxxxh;xxxxh为命令口或数据口地址mov a,#xxh;xxh为指令代码、代码参数、数据movx @dptr,a 软件初始化就是根据表1中提供的指令集设置一些有关lcd的参数,以便lcd能正确显示图文信息。对80c31而言,所有对lcd操作的指令均为访外部 i/o指令movx。例如,要显示320×240的黑白位图,先将位图反色,把bmp.hex和程序一起烧录到27256中,位图存放在1000h开始的地址。针对320×240lcd点阵三层图形叠加显示初始化程序如下。 init:mov dptr,#0101h;命令40h参数设置,#0101h为命令口地址mov a,#40hmovx @dptr,a;把命令代码送给命令口地址 mov a,#30hmov dptr,#0000h;#0000h为数据口地址movx @dptr,a;把参数送给数据口地址mov