黄金会员
 
主题
帖子
积分9859
阅读权限40
注册时间2009-11-11
最后登录1970-1-1
在线时间 小时
|
硬件参考了论坛倪老师的,在此说声感谢!有汇编源码和仿真文件 org 0000h
ajmp 0030h
org 0030h
RESET:clr es ; 禁止串行中断
mov scon,#00h ; 串行工作方式0
MAIN: ACALL ys45 ;lcd初始化
acall ys45
acall ys45
acall ys45
mov a,#33h
acall xzl
mov a,#30h
acall xzl
mov a,#02h
acall xzl
mov a,#101000b ;4BIT ,2行显示
acall delay1
acall xzl
mov a,#01h ;清屏
acall xzl
mov a,#00000010b ;光标复位
acall xzl
MOV A,#00000110B ;地址增量1,字符不移动
acall xzl
mov a,#00001111b ;显示开,光标有,光标闪
acall xzl
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a,#01000000b ;指向GCRAM首址
acall xzl
mov r0,#00h ;将预定字符写入
xzf:mov a,r0
mov dptr ,#tab
movc a,@a+dptr
acall xsj
inc r0
cjne r0,#40,xzf
mov r0,#00h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a,#80h ;光标到第一行第一位
acall xzl
MOV A,#33H ;写固有字符‘3’
ACALL XSJ
mov a,#03H ;写自定字符‘年’
ACALL XSJ
mov a,#33h ;写固有字符‘3’
acall xsj
mov a,#02h ;写自定字符‘月’
acall xsj
mov a,#33h
acall xsj
mov a,#00h;写自定字符‘日
acall xsj ;写固有字符‘3’
mov a,#33h ;写固有字符‘3’
acall xsj
mov a,#01h ;写自定字符
acall xsj
mov a,#0c8h ;光标到第一行第一位
acall xzl
MOV A,#33H ;写固有字符‘3’
ACALL XSJ
mov a,#03H ;写自定字符‘年’
ACALL XSJ
mov a,#33h ;写固有字符‘3’
acall xsj
mov a,#02h ;写自定字符‘月’
acall xsj
mov a,#33h
acall xsj
mov a,#00h;写自定字符‘日
acall xsj ;写固有字符‘3’
mov a,#33h ;写固有字符‘3’
acall xsj
mov a,#01h ;写自定字符
acall xsj
ajmp $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XZL: MOV 30H,A ;写指令
acall xzl1
MOV A,30H
SWAP A
xzl1: ANL A,#0f0H ;屏蔽低4位
orl a,#00000001b ;设RS为0,E为1
mov sbuf,a
acall delay1
jnb ti,$
clr ti
MOV SBUF,#00000000b ;E清0 下降沿
acall delay1
JNB TI,$
CLR TI
RET
XSJ: MOV 30H,A ;写数据
ACALL XSJ1
MOV A,30H
SWAP A
XSJ1:ANL A,#0F0H ;屏蔽低4位
ORL A,#00000101B ;设RS为1,E为1
mov sbuf,a
JNB TI,$
CLR TI
MOV SBUF,#00000000b ;E清0
JNB TI,$
CLR TI
RET
delay1:mov r7,#20 ;这是初始化完成后正常操作1602的延时程序
d11: mov r6,#10
djnz r6,$
djnz r7,d11
ret
ys45:mov r7,#0bh
ys1: mov r6,#0cbh
djnz r6,$
djnz r7,ys1
ret
tab :db 0fh,1001b,1001b,0fh,1001b,1001b,0fh,00h;日
db 10000b,111b,1000b,1000b,1000b,1000b,111b,00h ;温度符号
db 0fh,1001b,0fh,1001b,0fh,1001b,10011b,00h ;月
db 0FH,10010B,0FH,1010B,1fh,10b,10B,00h ;年
end |
|