当前位置: 首页 > 字符型液晶显示模块显示控制
字符型液晶显示模块显示控制
   字符型液晶显示模块显示控制(2)

    --LCM16x2


 [本文由创梦电子工作原创,转载请注明 出处  2004.04.14]

LCM模块指令表

指令

指令码

说明

指令周期

fosc=250kHz

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

清屏

 

0

0

0

0

0

0

0

0

0

1

清除屏幕,置AC0,光标回位。

1.64ms

光标返回

 

0

0

0

0

0

0

0

0

1

*

DDRAM地址为0,显示回原位,DDRAM内容不变.

1.64ms

设置输入

方式

0

0

0

0

0

0

0

1

I/D

S

设置光标移动方向并指定显示是否移动。

40µs

显示开关

0

 

0

0

0

0

0

1

D

C

B

设置显示开或关D、光标开关C、光标所在字符闪烁B.

40µs

移位

 

0

0

0

0

0

1

S/C

R/L

*

*

移动光标及整体显示,同时不改变DDRAM内容。

40µs

功能设置

 

0

0

0

0

1

DL

N

F

*

*

设置接口数据位数DL、显示行数L、字符字体F

40µs

CGRAM

地址设置

0

0

0

1

ACG

设置CGRAM地址。设置后发送接收数据。

40µs

DDRAM

地址设置

0

0

1

ADD

设置DDRAM地址。设置后发送接收数据。

40µs

忙标志/读地址计数器

0

1

BF

AC

读忙标志BF标志正在执行内部操作并读地址计数器内容。

0µs

CGRAM/DDRAM数据写

1

0

写数据

CGRAMDDRAM写数据。

40µs

CGRAM/DDRAM数据读

1

1

读数据

CGRAMDDRAM读数据。

40µs

 

I/D=1:增量方式;I/D=0:减量方式

S=1:移位

S/C=1:显示移位;S/C=0:光标移位

R/L=1:右移;R/L=0:左移

DL=18位;DL=04

N=12行;N=01

F=15 x 10字体  F=05 x 7字体

BF=1:执行内部操作;BF=0可接收指令

DDRAM:显示数据RAM

CGRAM:字符发生器RAM

ACGCGRAM地址

ADDDDRAM地址及光标

      地址

AC:地址计数器,用于

     DDRAMCGRAM

执行周期主频改变而改变。

例如当fcp

fosc=270KHZ

时:40μs  x

250/270=37μs

 

LCM模块执行指令的基本过程

 选择RSR/W操作(4 à 数据线准备数据àE端从高电平跳到低电平,指令执行

比如我们要执行清屏 指令,步骤如下:

1.        设定LCM的各引脚电平如下 (0=低电平 1=高电平)

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

0

0

0

0

1

2.        E端置0(低电平)

3.        E端电平恢复高电平

51汇编的程序如下(以图3电路驱动)

;-----------------------------------------------

setb P2.7            E1

clr P3.0             RS0

clr P3.1             RW0

mov P0,#00000001B  ;送数据到P0

clr P2.7             ;执行

setb P2.7            E端恢复高电平

;--------------------------------------------------

LCM在运行的时候,会生成一个忙标志位BF,如果BF1的时候,LCM不能接收命令和数据,BF0的时候表示不忙,可以接收命令和数据。所以在运行各个命令之前,先查询BF是否=0,如果=1的话等待,直到BF=0才发送指令给它。

查询BF的指令为

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

BF

x

x

x

x

x

x

x

就是将 RS0R/W端置1就可以在DB7(LCM14)端得到BF信号

 

这里用51汇编定义一段BF查询子程序(一下简称Busy_wait):

功能: 直到BF0才退出该程序

;------------------------------------------------

RSPIN   EQU     P2.7

RWPIN  EQU     P3.0

EPIN    EQU     P3.1

LCM_D  data      P0  ;  LCM BUS  先定义引脚,方便程序修改编辑

 

;BF查询子程序 

BUSY_WAIT:                        

        MOV    P0,#0FFH              ;p0口置1

        CLR     RSPIN                ;RS=0

        SETB    RWPIN                ; RW=1

        SETB    EPIN                 ; E=高电平

WT_BF:  

NOP                         ;

        JB      P0.7,WT_BF          ;   DB7=1  LCD控制器忙

        NOP

        CLR     EPIN                ;   E=0

        RET                         ;   DB7=0  LCD控制器空闲 ,退出BF等待程序

;--------------------------------------------------------

 

所以执行一个指令具体的过程就是

   

       由上述,送一个指令需要两个过程:   检查BF――>输入指令

 1 2 3 4

[关闭]