标题: 51汇编 1602液晶显示 [打印本页]

作者: 电子爱好者life    时间: 2015-5-31 11:12
标题: 51汇编 1602液晶显示
ORG 0000H
LJMP MAIN
ORG 0010H
    RS BIT P2.0
    RW BIT P2.1
    EN BIT P2.2
MAIN: ;主函数
     LCALL INIT ;初始化
  B1:MOV R3,#00H
     MOV R4,#00H
     MOV R0,#80H
     LCALL WRITE_COM
  B2:MOV DPTR,#TABLE0
     MOV A,R3
     MOVC A,@A+DPTR
     MOV R1,A
     LCALL WRITE_DATE
     ;延时5毫秒
     MOV R2,#05H
  A5:LCALL DELAY_MS
     DJNZ R2,A5
     INC R3
     CJNE R3,#09H,B2  ;TABLE0中只有9个字符
  B3:MOV R0,#0C0H
     LCALL WRITE_COM
  B4:MOV DPTR,#TABLE1
     MOV A,R4
     MOVC A,@A+DPTR
     MOV R1,A
     LCALL WRITE_DATE
     ;延时5毫秒
     MOV R2,#05H
  A6:LCALL DELAY_MS
     DJNZ R2,A6
     INC R4           ;r4++
     CJNE R4,#10H,B4  ;TABLE1中有16个字符
     SJMP B1
;1602写命令
WRITE_COM:
          CLR RS
          CLR RW
          CLR EN
          MOV P0,R0
          MOV R2,#05H
      A1: LCALL DELAY_MS
          DJNZ R2,A1
          SETB EN
          MOV R2,#05H
      A2: LCALL DELAY_MS
          DJNZ R2,A2
          CLR EN
          RET
;1602写数据
WRITE_DATE:
           SETB RS
           CLR RW
           CLR EN
           MOV P0,R1
           MOV R2,#05H
       A3: LCALL DELAY_MS
           DJNZ R2,A1
           SETB EN
           MOV R2,#05H
       A4: LCALL DELAY_MS
           DJNZ R2,A2
           CLR EN
           RET
;1602初始化
INIT:
     CLR EN
     MOV R0,#38H
     LCALL WRITE_COM
     MOV R0,#0CH
     LCALL WRITE_COM
     MOV R0,#06H
     LCALL WRITE_COM
     MOV R0,#01H
     LCALL WRITE_COM
     RET

;/**************************************************************
;函数名称:DELAY_MS
;函数功能:1毫秒延时
;**************************************************************/
DELAY_MS:
         MOV R7,#1
     D3: MOV R6,#250
     D4: NOP
         NOP
         DJNZ R6,D4
         DJNZ R7,D3
         RET

TABLE0:DB "12345678:"
TABLE1:DB "87654321"
END



作者: amchina    时间: 2015-5-31 23:48
感谢楼主,用心了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1