?? 1602logo.asm
字號:
;///////////////////////////////////////////
;....本程序實現液晶1602循環顯示信息功能.
;....能夠讀取字符表中的英文字母及字符,字符表以$結束,作為語句結束標志。
;....一行顯示不完,會自動換行
;///////////////////////////////////////////
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
BGLIGHT EQU P2.6 ;背景燈光控制
SJ EQU P0
org 00h
ajmp main
org 030h
main:
mov sp,#60h
mov dptr,#tableMline ;第一行表頭位置
LCALL INIT1602
mov 30h,#00h
mov R1,#0 ;數據指針
main1:
LCALL init1602
MOV SJ,#02H ;顯示清屏
ACALL ENABLE ;寫指令01H__________
;
MOV SJ,#80H ;第一行顯示第一個字符的位置
ACALL ENABLE ;調用寫指令
;
call writerow1 ;調用第一行寫子程序
mov SJ,#0c0h ;第二行位置
call enable ;調用寫指令
call writerow2 ;調用第二行寫子程序
Ljmp main1 ;返回主程序不斷的循環
ENABLE: ;寫命令時序(參照1602LCD使用說明書)
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
writerow1: ;寫字符串
a1: mov a,r1 ;把R1的值送到ACC
movc a,@a+dptr ;查表取將顯示的數據并把要顯示的數送入ACC
CJNE A,#36,NE1 ;是否等于'$',若等于則不再往下讀取。
LJMP MAIN
NE1:
call writeChar ;調用寫程序寫入單個字節
inc r1 ;將數據指針加一
; inc 30h
; CJNE R1,#0,NEXT1
; INC DPH
NEXT1: mov a,r1 ;r1 內容對32(兩行)取余
mov b,#20h
div ab
xch a,b
cjne A,#10h,a1 ;R1的內容加到16后就返回到a1處
ret
writerow2: ;寫字符串
B1: mov a,r1 ;把R1的值送到ACC
movc a,@a+dptr ;查表取將顯示的數據并把要顯示的數送入ACC
CJNE A,#36,NE2
LJMP MAIN
NE2:
call writeChar ;調用寫程序寫入單個字節
inc r1 ;將數據指針加一
; inc 30h
; CJNE R1,#0,NEXT2
; INC DPH
NEXT2: mov a,r1 ;r1 內容對32(兩行)取余
mov b,#20h
div ab
xch a,b
cjne A,#0h,B1 ;R1的內容加到16后就返回到a1處
ret ;
writeChar: ;寫單個字符
mov SJ,a ;寫數據到顯示端口
setb rs ;寫數據時序(請參照1602LCD使用說明書)
clr rw
clr e
call delay
setb e
ret
delay:
mov r7,#255
d1: mov r6,#255
d2: djnz r6,d2
djnz r7,d1
ret
INIT1602:
lcall delay ;延時一段時間
CLR BGLIGHT ;開背光@@@
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#08H ;顯示關閉
ACALL ENABLE ;寫指令08H_________
MOV SJ,#01H ;顯示清屏
ACALL ENABLE ;寫指令01H__________
MOV SJ,#06H ;寫指令06H----顯示光標移動設置
;
ACALL ENABLE ;
MOV SJ,#0cH ;寫指令0CH----顯示開及光標設置
ACALL ENABLE ;
RET
Ready1602:
lcall delay ;延時一段時間
CLR BGLIGHT ;開背光@@@
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
clr rs
setb rw
setb e
loop: mov a,sj
jb acc.7,loop
MOV SJ,#38H ;
ACALL ENABLE ;寫指令38H
MOV SJ,#08H ;顯示關閉
ACALL ENABLE ;寫指令08H_________
MOV SJ,#01H ;顯示清屏
ACALL ENABLE ;寫指令01H__________
MOV SJ,#06H ;寫指令06H----顯示光標移動設置
;
ACALL ENABLE ;
MOV SJ,#0cH ;寫指令0CH----顯示開及光標設置
ACALL ENABLE ;
RET
tableMline:
db "0123456789abcdefghijklmnopqrstuvwxyz...$";
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -