黄金会员
主题
帖子
积分9587
阅读权限40
注册时间2009-11-11
最后登录1970-1-1
在线时间 小时
|
不大稳定。比如多次开关电源会乱码。但用八线驱动却很正常。程序如下
RS EQU P2.5
RW EQU P2.6
E EQU P2.7
ORG 0000H
ajmp start
org 0033h
start:
mov sp,#60h
mov 30h,#1h ;显示缓存
mov 31h,#0ah
mov 32h,#3h
mov 33h,#9h
mov 34h,#0bh
mov 35h,#0ch
main: MOV P0,#00H;清屏
ACALL ENABLE
MOV P0,#10H
ACALL ENABLE
MOV P0,#00H;清屏
ACALL ENABLE
MOV P0,#10H
ACALL ENABLE
MOV P0,#20H ;功能设置 2行,5X7
ACALL ENABLE
MOV P0,#80H
ACALL ENABLE
MOV P0,#00H;光标复位
ACALL ENABLE
MOV P0,#20H
ACALL ENABLE
MOV P0,#00H;字符和光标 ,I/D=0光标 左移S=0字符移动无效
ACALL ENABLE
MOV P0,#40H
ACALL ENABLE
MOV P0,#00H ;显示开关控制 D=1开显示,C=1光标,B=1光标闪
ACALL ENABLE
MOV P0,#0F0H
ACALL ENABLE
i123: mov r2,#81h ;第1行第2位开始显示,显示9位
mov r0,#30h
i125: MOV A,R2
mov p0,A
ACALL ENABLE
SWAP A
MOV P0,A
ACALL ENABLE
;ACALL DELAY
ACALL DISP
inc r2
inc r0
cjne r2,#8ah,i125 ;显示9位未到,显示继续
mov r3,#0c0h ;第2行第1位开始显示
mov r0,#34h
MOV A,R3
MOV P0,A
ACALL ENABLE
SWAP A
mov p0,A
ACALL ENABLE
; ACALL DELAY
ACALL DISP
AJMP i123
;;;;;;;;;;;
ENABLE: CLR RS ;送命令
;CLR RW
CLR E
ACALL DELAY
SETB E
RET
;;;;;;;;;;;;
DISP:
mov dptr,#tab
LOOP:MOV A,@r0
MOVC A,@A+DPTR
ACALL DISP1
RET
;;;;;;;;;;;;;;;
DISP1:MOV P0,A
SETB RS
CLR RW
CLR E
ACALL DELAY
SETB E
SWAP A
MOV P0,A
SETB RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;;;;;;;;;;;;;;;;;;;
DELAY: MOV R7,#255
D1: MOV R6,#2
DJNZ R6,$
DJNZ R7,D1
RET
TAB: DB "0123456789!%*"
END
|
|