?? lcd_based_on_cm12864-2.txt
字號:
ORG 0000H
LJMP MAIN
ORG 0035H
rest equ p3.0
CS1 EQU P3.2
CS2 EQU P3.1
DI EQU P3.7
RW EQU P3.5
E EQU P3.4
DATA1 EQU 20H
DATA2 EQU 21H
DATA3 EQU 22H
DATAL equ 23H
DATAR equ 24H
dataline equ 25H
;**********忙判斷子程序***********
busypd:
push acc
setb cs1
setb cs2
clr di
setb rw
busy:
mov p1,#0ffh
setb e
mov a,p1
clr e
jb acc.7,busy
clr cs1
clr cs2
pop acc
ret
;***** *寫左半屏命令********
WRITE_COMMAND_L:
lcall busypd
SETB CS1
clr CS2
CLR RW
CLR DI
MOV P1,DATA1
SETB E
CLR E
CLR CS1
RET
;********寫左半屏數據*******
WRITE_DATA_L:
lcall busypd
SETB CS1
clr CS2
CLR RW
SETB DI
MOV P1,DATA2
SETB E
CLR E
CLR CS1
RET
;******寫右半屏命令********
WRITE_COMMAND_R:
lcall busypd
SETB CS2
clr CS1
CLR RW
CLR DI
MOV P1,DATA1
SETB E
CLR E
CLR CS2
RET
;*******寫右半屏數據**********
WRITE_DATA_R:
lcall busypd
SETB CS2
clr CS1
CLR RW
SETB DI
MOV P1,DATA2
SETB E
CLR E
CLR CS2
RET
;********清屏子程序*******
clrp:
MOV R1,#8
MOV DATA3,#0B8H
MOV DATA1,DATA3
M22: MOV DATA1,DATA3
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV DATA1,#40H
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV R2,#64
L22: MOV DATA2,#00H;#55H
LCALL WRITE_DATA_L
LCALL WRITE_DATA_R
DJNZ R2,L22
INC DATA3
DJNZ R1,M22
LCALL DELAY
Ret
;**********延時程序**********
MS40: MOV R7,#0E8H
MS2: MOV R6,#0FFH
MS1: DJNZ R6,MS1
DJNZ R7,MS2
RET
DELAY: MOV R5,#12;#07H
DELAY1: LCALL MS40
DJNZ R5,DELAY1
RET
;************************************
org 0100h
MAIN:
MOV SP,#60H
MOV P3,#0FFH
; clr rest
; lcall delay
; setb rest
; lcall delay
MOV DATA1,#3EH
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV DATA1,#3FH
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV DATA1,#0C0H
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV DATA1,#0B8H ;PAGE ADDRESS
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
MOV DATA1,#40H ;Y ADDRESS
LCALL WRITE_COMMAND_L
LCALL WRITE_COMMAND_R
loop:
lcall clrp
MOV DPTR,#CHINESE1
mov dataline,#0b8H
lcall writeline
mov dataline,#0baH
lcall writeline
mov dataline,#0bcH
lcall writeline
mov dataline,#0beH
lcall writeline
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall loop
writeline:
mov DATAL,#40H
lcall writeL
lcall delay
mov DATAL,#50H
lcall writeL
lcall delay
mov DATAL,#60H
lcall writeL
lcall delay
mov DATAL,#70H
lcall writeL
lcall delay
mov DATAR,#40H
lcall writeR
lcall delay
mov DATAR,#50H
lcall writeR
lcall delay
mov DATAR,#60H
lcall writeR
lcall delay
mov DATAR,#70H
lcall writeR
ret
;*****寫左半屏一個字*****
writeL:
MOV R1,#2
MOV DATA3,dataline
MOV DATA1,DATA3
M27: MOV DATA1,DATA3
LCALL WRITE_COMMAND_L
MOV DATA1, DATAL
LCALL WRITE_COMMAND_L
MOV R2,#16
L27:
CLR A
MOVC A,@A+DPTR
MOV DATA2,A
LCALL WRITE_DATA_L
INC DPTR
DJNZ R2,L27
INC DATA3
DJNZ R1,M27
Ret
;*****寫右半屏一個字*****
writeR:
MOV R1,#2
MOV DATA3,dataline
MOV DATA1,DATA3
M28: MOV DATA1,DATA3
LCALL WRITE_COMMAND_R
MOV DATA1,DATAR
LCALL WRITE_COMMAND_R
MOV R2,#16
L28:
CLR A
MOVC A,@A+DPTR
MOV DATA2,A
LCALL WRITE_DATA_R
INC DPTR
DJNZ R2,L28
INC DATA3
DJNZ R1,M28
ret
CHINESE1:
DB 010H,021H,086H,060H,090H,090H,0FFH,090H,090H,000H,0FEH,092H,092H,0FEH,000H,000H;
DB 004H,0FCH,003H,000H,01FH,010H,010H,090H,05FH,030H,00FH,040H,080H,07FH,000H,000H;
DB 004H,004H,0E4H,024H,024H,064H,0B4H,02FH,024H,0A4H,064H,024H,024H,0E6H,004H,000H;
DB 000H,000H,07FH,004H,005H,005H,005H,07FH,005H,005H,005H,025H,044H,03FH,000H,000H;
DB 010H,012H,092H,072H,0FEH,051H,091H,000H,022H,0CCH,000H,000H,0FFH,000H,000H,000H;
DB 004H,002H,001H,000H,0FFH,000H,004H,004H,004H,002H,002H,002H,0FFH,001H,001H,000H;
DB 008H,008H,088H,0FFH,048H,028H,000H,0C8H,048H,048H,07FH,048H,0C8H,048H,008H,000H;
DB 001H,041H,080H,07FH,000H,040H,040H,020H,013H,00CH,00CH,012H,021H,060H,020H,000H;
DB 020H,020H,020H,020H,020H,020H,0A0H,07FH,0A0H,020H,020H,020H,020H,020H,020H,000H;
DB 000H,080H,040H,020H,010H,00CH,003H,000H,001H,006H,008H,030H,060H,0C0H,040H,000H;
DB 040H,030H,010H,012H,05CH,054H,050H,051H,05EH,0D4H,050H,018H,057H,032H,010H,000H;
DB 000H,002H,002H,002H,002H,002H,042H,082H,07FH,002H,002H,002H,002H,002H,002H,000H;
DB 080H,040H,030H,0FCH,007H,00AH,0A8H,0A8H,0A9H,0AEH,0AAH,0A8H,0A8H,008H,008H,000H;
DB 000H,000H,000H,07FH,000H,000H,07EH,022H,022H,022H,022H,022H,07EH,000H,000H,000H;
DB 000H,000H,000H,0FCH,054H,054H,056H,055H,054H,054H,054H,0FCH,000H,000H,000H,000H;
DB 000H,020H,038H,001H,03DH,041H,041H,045H,059H,041H,041H,071H,000H,008H,030H,000H;
DB 000H,000H,000H,000H,07EH,048H,048H,048H,048H,048H,048H,048H,048H,0CCH,008H,000H;
DB 000H,004H,004H,004H,004H,004H,004H,004H,004H,024H,046H,044H,020H,01FH,000H,000H;
DB 000H,000H,0F8H,048H,048H,048H,048H,0FFH,048H,048H,048H,048H,0F8H,000H,000H,000H;
DB 000H,000H,00FH,004H,004H,004H,004H,03FH,044H,044H,044H,044H,04FH,040H,070H,000H;
DB 000H,020H,010H,08CH,0A7H,0A4H,0A4H,0A4H,0A4H,0A4H,0A4H,0A4H,024H,004H,004H,000H;
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,00FH,030H,040H,0F0H,000H;
DB 000H,000H,002H,002H,002H,002H,002H,0FEH,002H,002H,002H,002H,002H,002H,000H,000H;
DB 020H,020H,020H,020H,020H,020H,020H,03FH,020H,020H,020H,020H,020H,020H,020H,000H;
DB 010H,012H,0D2H,0FEH,091H,011H,080H,0BFH,0A1H,0A1H,0A1H,0A1H,0BFH,080H,000H,000H;
DB 004H,003H,000H,0FFH,000H,041H,044H,044H,044H,07FH,044H,044H,044H,044H,040H,000H;
DB 040H,030H,010H,012H,05CH,054H,050H,051H,05EH,0D4H,050H,018H,057H,032H,010H,000H;
DB 000H,002H,002H,002H,002H,002H,042H,082H,07FH,002H,002H,002H,002H,002H,002H,000H;
DB 0FEH,002H,032H,04AH,086H,00CH,024H,024H,025H,026H,024H,024H,024H,00CH,004H,000H;
DB 0FFH,000H,002H,004H,083H,041H,031H,00FH,001H,001H,07FH,081H,081H,081H,0F1H,000H;
DB 000H,000H,0F8H,028H,029H,02EH,02AH,0F8H,028H,02CH,02BH,02AH,0F8H,000H,000H,000H;
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -