原创 用单片机控制字符型液晶显示模块

2007-1-23 15:44 4115 6 6 分类: MCU/ 嵌入式

用单片机控制字符型液晶显示模块<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。


本文介绍字符型液晶模块HS162-4与单片机<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />89C51的接口与编程方法。HS162-4液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为116个字、216个字等。下面以常用的216个字的显示方式介绍HS162-4液晶模块的使用方法。


 


HS162-4采用标准的16脚接口,


其中VSS为地电源,VDD5V正电源,


V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生阴影,使用时可以通过一个10K的电位器调整对比度。


RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。


RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSRW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。


E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。


LEDALEDK为背光电源,LEDA5V正电源,LEDKGND


D0~D78位双向数据线。


 


HS162-4液晶模块内部的字符发生存储器(CGROM)已经存储了128个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写和常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”


1 CGROM 中的字符代码与图形对应关系




   高位低位


0000


0010


0011


0100


0101


0110


0111


0000


CGRAM


 


0


@


P


\


p


0001


 



1


A


Q


a


q


0010


 



2


B


R


b


r


0011


 


#


3


C


S


c


s


0100


 


$


4


D


T


d


t


0101


 


%


5


E


U


e


u


0110


 


&


6


F


V


f


v


0111


 



7


G


W


g


w


1000


 


(


8


H


X


h


x


1001


 


)


9


I


Y


i


y


1010


 


*


:


J


Z


j


z


1011


 


+


;


K


[


k


{


1100


 


,


<

 


L


¥


l


|


1101


 


-


=


M


]


m


}


1110


 


.


>

 


N


^


n



1111


 


/


?


O


_


o



 



 点击看大图


HS162-4液晶模块内部的控制器共有11条控制指令,如表2所示,



指令


指令码


说明


RS


R/W


D0


D1


D2


D3


D4


D5


D6


D7


清屏


0


0


0


0


0


0


0


0


0


1


清显示,光标回位


光标返回


0


0


0


0


0


0


0


0


1


*


ADD=0,回原位


输入方式


0


0


0


0


0


0


0


1


I/D


S


决定是否移动以及移动方向


显示开关


0


0


0


0


0


0


1


D


C


B


D-显示,C-光标,B-光标闪烁


移位


0


0


0


0


0


1


S/C


R/L


*


*


移动光标及整体显示


功能设置


0


0


0


0


1


DL


N


F


*


*


DL-数据位数,L-行数,F-字体


CGRAM地址设置


0


0


0


1


A5  A4  A3  A2  A1 A0


设置CGRAM的地址


DDRAM地址设置


0


0


1


A6 A5  A4  A3  A2  A1 A0


设置DDRAM的地址


忙标志/读地址计数器


0


1


BF


AC6  AC5 AC4  AC3  AC2 C1 AC0


读出忙标志位(BF)AC


CGRAM/DDRAM数据写


1


0


写数据


将内容写入RAM


CGRAM/DDRAM数据读


1


1


读数据


将内容从RAM中读出


补充说明


I/D1-增量方式、0-减量方式
S
1-位移
S/C
1-显示移位、0-光标移位
R/L
1-右移、0-左移
DL
1-8位、0-4
N
1-2行、0-1
F
1-5X10字体、0-5X7字体
BF
1-正在执行内部操作、0-可接收指令


DDRAM:显示数据RAM
CGRAM
:字符发生器RAM
ACG
CGRAM地址
ADD
DDRAM地址及光标地址


 


它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。


(说明:1为高电平、0为低电平)


指令1:清显示,指令码01H,光标复位到地址00H位置


指令2:光标复位,光标返回到地址00H


指令3:光标和显示模式设置


I/D:光标移动方向,高电平右移,低电平左移


 S: 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效


指令4:显示开关控制。


 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示


 C:控制光标的开与关,高电平表示有光标,低电平表示无光标


 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁


指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标


指令6:功能设置命令


DL:高电平时为4位总线,低电平时为8位总线


N:低电平时为单行显示,高电平时双行显示


F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符


指令7:字符发生器RAM地址设置


指令8DDRAM地址设置


指令9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。


指令10:写数据


指令11:读数据


HS162-4液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />



P32


P33


P34


 


P10


P11


P12


P13


P14


P15


P16


P17




RS


RW


E


 


D0


D1


D2


D3


D4


D5


D6


D7




AT89C51


单片机




HS162-41


液晶模块




VDD


 


 


VO


 


 


VSS




VDD +5V


 


 


 


10K


电位器


 


 


 


 


VSS GND

<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />


液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3HS162-4的内部显示地址.



显示位置


1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


1


80


81


82


83


84


85


86


87


88


89


8A


8B


8C


8D


8E


8F


2


C0


C1


C2


C3


C4


C5


C6


C7


C8


C9


CA


CB


CC


CD


CE


CF


 


即,第1行的显示地址应为:80H+显示位置;第2行的显示地址应为:C0H+显示位置。


以下是在液晶模块的第1行显示数字“0-9 :;<  = > ?”,在第2行显示字符“AP”的程序:


 


RS      EQU P3.2


RW      EQU P3.3


E       EQU P3.4


DAT     EQU 30H  ;命令单元


DAT1    EQU 31H  ;数据单元


    AJMP    START


    ORG 0030H


START:


    MOV     DAT,#01H    ; 清屏


    ACALL   ENABLE


    MOV     DAT,#38H    ; 825x7点阵


    ACALL   ENABLE


    MOV     DAT,#0FH    ; 显示器开、光标开、闪烁开


    ACALL   ENABLE


    MOV     DAT,#06H    ; 文字不动,光标自动右移


    ACALL   ENABLE


    MOV     R3,#2  


    MOV     DAT,#080H ; 写入显示起始地址(第一行第一个位置)


    ACALL   ENABLE


    MOV     DAT1,#30H ;数字0ASCII


    ACALL   DSP0


    MOV     DAT,#0C0H ; 写入显示起始地址(第二行第一个位置)


    ACALL   ENABLE


    MOV     DAT1,#61H ;字母aASCII


    ACALL   DSP0


    SJMP    $


DSP0:       MOV R2,#16


DSP1:   ACALL   RDY


    MOV     P1,DAT1


    SETB    RS


    CLR     RW


    CLR     E


    SETB    E


    INC     DAT1


    DJNZ    R2,DSP1


    RET


ENABLE: ACALL   RDY; 写入控制命令的子程序


    MOV     P1,#0FFH


    CLR     RS


    CLR     RW


    MOV     P1,DAT


    CLR     E


    SETB    E


    RET


RDY:    MOV P1,#0FFH ; 判断液晶显示器是否忙的子程序


    CLR     RS


    SETB    RW


    CLR     E


    SETB    E


    JB      P1.7,RDY  ; 如果P1.7为高电平表示忙就循环等待


    RET


    END


    程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序RDY,然后输入显示位置的地址,最后输入要显示的字符的ASCII码。




 


液晶显示示例程序


RS  EQU P3.2


RW  EQU P3.3


E   EQU P3.4


DAT EQU 30H


DAT1    EQU 31H


START:


    MOV DAT,#01H    ;CLEAR


    ACALL   ENABLE


    MOV DAT,#38H ;8bit 2 Rol 5*7


    ACALL   ENABLE


    MOV DAT,#0FH    ;OPEN LCD


    ACALL   ENABLE


    MOV DAT,#06H    ;LEFT TO RIGHT


    ACALL   ENABLE


    MOV R3,#2


    MOV DAT,#080H ;First Addr


    ACALL   ENABLE


    MOV DAT1,#30H


    ACALL   DSP0


    MOV DAT,#0C0H


    ACALL   ENABLE


    MOV DAT1,#61H


    ACALL   DSP0


HERE:   RET      ;  SJMP HERE


DSP0:


    MOV R2,#16


DSP1:   ACALL   RDY


    MOV P1,DAT1


    SETB    RS


    CLR RW


        nop


    CLR E


        nop


    SETB    E


    INC DAT1


    DJNZ    R2,DSP1


    RET


ENABLE: ACALL   RDY


    MOV P1,#0FFH


    CLR RS


    CLR RW


    MOV P1,DAT


    CLR E


        nop


    SETB    E


    RET


 


RDY:    MOV P1,#0FFH


    CLR RS


    SETB    RW


    CLR E


        nop


    SETB    E


 


        MOV   R1,#0FH


DDT8:   MOV   R0,#0FFH


DDT7:   DJNZ  R0,DDT7


        DJNZ  R1,DDT8


      RET


          END


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条