1602显示,为什么我照着写的 怎么都不显示任何东西啊?

来源:互联网 发布:中软加密软件 编辑:程序博客网 时间:2024/04/29 01:21

;******** 在1602液晶模块第一行第1个字符位置显示字母“A”程序 ********

    RS   EQU P3.4

    RW   EQU P3.5

    E    EQU P3.6

    ORG   0000H

    AJMP  START

    ORG   0033H

START: MOV   SP,#60H

MAIN:  LCALL  DELAY      ;判断液晶忙状态?

    ACALL  ENABLE

    MOV   P1,#00000001B  ;写指令01H,清屏

    ACALL  ENABLE

    MOV   P1,#00111000B  ;写指令38H,设定LCD为16×2显示,5×7点阵,8位数据接口

    ACALL  ENABLE

    MOV   P1,#00001111B  ;写指令0FH,显示ON,光标ON,闪烁ON

    ACALL  ENABLE

    MOV   P1,#00000110B  ;写指令06H,文字不动,光标自动右移

    ACALL  ENABLE

    MOV   P1,#80H     ;第一行第1个字符地址

    ACALL  ENABLE

    MOV   P1,#01000001B  ;字母A的代码(#41H)

    SETB   RS       ;RS=1

    CLR   RW       ;RW=0

    CLR   E        ;E=0

    ACALL  DELAY      ;判断液晶忙状态?

    SETB  E        ;E=1

    AJMP  $

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

ENABLE: CLR   RS       ;写入控制命令的子程序

    CLR   RW

    CLR   E

    ACALL  DELAY

    SETB  E

    RET

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

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

    CLR   RS

    SETB   RW

    CLR   E

    NOP

    SETB   E

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

    RET

    END