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

    --LCM16x2


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

   

例:再16x2的显示屏上第一行第03位开始显示 OK”,51汇编源程序如下:

ORG 000h

AJMP START

 

 

ORG 030H 

RSPIN   EQU     P2.7

RWPIN   EQU     P3.0

EPIN    EQU     P3.1

LCM_D   DATA    P0  ;  LCM BUS

 

START:

  SETB EPIN             ;E端置1

  CALL LCM_RESET        ;初始化

  CALL S_OK             ;显示OK

  JMP $

 

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;显示字符

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

S_OK:

  mov a,#03H               ;字符的显示位置 03

  ORL a,#80H               ;8位置1,以符合DDRAM地址设置指令格式      

  call LCM_COMMAND_00      ;设定DDRAM地址 (显示位置)

  mov a,#'O'               ; O 字符码

  call LCM_COMMAND_10      ;设定DDRAM数据 (显示字符)

 

  mov a,#04H               ;字符的显示位置 03

  ORL a,#80H   ; 80h

  call LCM_COMMAND_00      ;设定DDRAM地址 (显示位置)

  mov a,#'K'               ; K 字符码

  call LCM_COMMAND_10      ;设定DDRAM数据 (显示字符)

 

  ret

 

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;LCM初始化

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LCM_RESET:       

        CALL    DELAY_10MS         ;延时15MS

        CALL    DELAY_10MS

        CALL    DELAY_10MS       

        MOV     A,#00110000B       ;显示模式设置(不检测忙信号)

        CALL    com00_NO_BF       

        CALL    DELAY_10MS       

        MOV     A,#00110000B       ;显示模式设置(不检测忙信号)  

        CALL    com00_NO_BF

        CALL    DELAY_10MS

        MOV     A,#00110000B       ;显示模式设置(检测忙信号)       

        CALL    LCM_COMMAND_00

        MOV     A,#00111000B       ;显示模式设置(以后均检测忙信号)  8位数据,双行显示,5x7点阵

        CALL    LCM_COMMAND_00

        MOV     A,#00001000B       ;显示关闭

        CALL    LCM_COMMAND_00

        MOV     A,#00000001B       ;显示清屏

        CALL    LCM_COMMAND_00

        MOV     A,#00001100B       ;显示光标移动设置

        CALL    LCM_COMMAND_00

        MOV     A,#00000110B       ;显示开及光标设置

        CALL    LCM_COMMAND_00

        RET

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;送控制指令程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LCM_COMMAND_00:                    ;送控制指令程序(检测忙信号)

        CALL    BUSY_WAIT

    com00_NO_BF:                   ;送控制字子程序(不检测忙信号)

        CLR     RSPIN              ;RS=0 RW=0

        CLR     RWPIN

        MOV     P0,A

        NOP

        SETB     EPIN

        NOP

        CLR    EPIN

        RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;写字符子程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LCM_COMMAND_10:                     ;写字符子程序

        CALL    BUSY_WAIT

        SETB    RSPIN               ;RS=1 RW=0 E=高脉冲

        CLR     RWPIN

        MOV     P0,A

        NOP

        SETB     EPIN

        NOP

        CLR    EPIN

        RET

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;BF查询子程序  功能: 直到BF0才退出该程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BUSY_WAIT:                        

        PUSH ACC                    ;保护ACC数据

        MOV    P0,#0FFH             ;p0口置1

        CLR     RSPIN               ;RS=0

        SETB    RWPIN               ; RW=1

        SETB    EPIN                ; E=高电平

        NOP       

    WT_BF: 

        NOP                         ;

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

        CLR    EPIN

        POP ACC                     ;释放ACC数据

        RET

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;延时程序,约10ms       

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DELAY_10MS:

    MOV   R7,#100

 DELAY_10MS_L0:

    MOV   R6,#100

  DELAY_10MS_L1:

    DJNZ  R6,DELAY_10MS_L1

    NOP

    DJNZ  R7,DELAY_10MS_L0

    RET

       

 END

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

 

                                

 

 

 

                                                  1 2 3 4
 

[关闭]