原创 液晶1602全功能

2011-3-1 19:25 2874 4 4 分类: MCU/ 嵌入式

;===============功能提要====================
;1602液晶屏的静态显示程序与用户自定RAM的使用
;本课难点在于初始化LCD指令的功能
;本讲重要和难点为液晶的通信协议
;===========================================
RS   BIT P2.0     ;RS位为1表示送数据,为0表示送指令
RW   BIT P2.1     ;RW位为1表示读,为0表示写。
E    BIT P2.2     ;E位为1表示允许开关打开,为0表示关闭传送通道。
COM  DATA 30H     ;送指令寄存器
DAT  DATA 31H     ;读数据寄存器
ORG 0000H
MAIN:    MOV SP,#80H
         LCALL CSH
         LCALL CGRAM
         LCALL LCD1H
         LCALL LCD2H
         SJMP $


CSH:     MOV R2,#0
;初始化LCD
CSLCD:   MOV COM,#38H
         ACALL WRI
         MOV COM,#0CH
         ACALL WRI
         MOV COM,#06H
         ACALL WRI
         MOV COM,#01H
         ACALL WRI
         RET
CGRAM:   MOV COM,#40H
         ACALL WRI
LCG1:    LCALL CB
         ACALL WRD
         CJNE R2,#32,LCG1
         MOV R2,#0
         RET
LCD1H:   MOV COM,#80H     ;选择1602液晶第一行的指令
         ACALL WRI
L1H1:    LCALL CB1
         ACALL WRD
         CJNE R2,#16,L1H1
         RET
LCD2H:   MOV COM,#0C0H    ;选择1602液晶第二行的指令
         ACALL WRI
L2H1:    LCALL CB1
         ACALL WRD
         CJNE R2,#32,L2H1
         MOV R2,#0
         RET


CB:      MOV DPTR,#TAB
         LCALL CB2
         RET
CB1:     MOV DPTR,#TABLE
CB2:     MOV A,R2
         MOVC A,@A+DPTR
         MOV DAT,A
         INC R2
         RET
;1602通信协议
;=================================
WRI:     ACALL RDBF    ;调用忙标志位诊断(忙标志是否空闲)
         CLR RW
         MOV P0,COM    ;把我们写的指令送给1602
         SETB E        ;打开允许通信(注:打开通信后,后面一定要跟着关闭)
         CLR E
         RET
WRD:     ACALL RDBF
         SETB RS
         CLR RW
         MOV P0,DAT    ;把我们写的数据送给1602
         SETB E
         CLR E
         RET
RDBF:    CLR RS        ;选择送指令通道
         SETB RW       ;选中读
LBF1:    MOV P0,#80H   ;把忙标志置1
         SETB E
         MOV A,P0      ;把忙标志位送给累加器做诊断
         CLR E
         JB ACC.7,LBF1 ;忙标志位为0表示空闲,空闲就退出
         RET
;=================================
TAB:
DB 04H,0FH,12H,0FH,0AH,1FH,02H,00H
DB 0FH,09H,0FH,09H,0FH,09H,13H,00H
DB 1FH,11H,11H,1FH,11H,11H,1FH,00H
DB 0CH,12H,12H,0CH,00H,00H,00H,00H
TABLE:
DB '2011',00H,'01',01H,'11'02H,' 12',03H,'C'
DB 'LunShang LanQu86'
END

PARTNER CONTENT

文章评论0条评论)

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