?? 1302-12232f.asm
字號:
CLR SCLK
NOP
MOV A,DS1302_DATA
MOV R4,#8
WRITE2: RRC A
NOP ;送數(shù)據(jù)給1302
CLR SCLK
NOP
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
DJNZ R4,WRITE2
CLR RST
RET
;
;******************讀1302程序********************;
;
READ: CLR SCLK
NOP
NOP
SETB RST
NOP
MOV A,DS1302_ADDR
MOV R4,#8
READ1: RRC A ;送地址給1302
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
NOP
CLR SCLK
NOP
NOP
DJNZ R4,READ1
MOV R4,#8
READ2: CLR SCLK
NOP ;從1302中讀出數(shù)據(jù)
NOP
NOP
MOV C,IO
NOP
NOP
NOP
NOP
NOP
RRC A
NOP
NOP
NOP
NOP
SETB SCLK
NOP
DJNZ R4,READ2
MOV DS1302_DATA,A
CLR RST
RET
;
;
;******************時(shí)間顯示子程序*******************
TIME: MOV A,#80H ;第一行左第一個(gè)字開始
LCALL WRITE_COM
MOV DPTR,#CHINESE2 ;16*16點(diǎn)陣“時(shí)間”
LCALL WRITE_HZ2
;
TIMEUP:
MOV A,#82H ;第一行左第5個(gè)字開始
LCALL WRITE_COM
MOV R1,#70H ;將70-79H時(shí)間數(shù)據(jù)查出字碼寫入LCD
MOV DPTR,#TABLE1
MOV R2,#0AH ; 查10次
MOV A,#00H
MOVCLOP:MOV A,@R1 ;
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC R1
DJNZ R2,MOVCLOP ;
RET
;
;***************開機(jī)顯示畫面***********************
LOGON: MOV A,#80H ;第一行左第一個(gè)字開始
LCALL WRITE_COM
MOV DPTR,#CHINESE ;WORD 16*16點(diǎn)陣TEST
LCALL WRITE_HZ
MOV A,#90H ;第二行左第一個(gè)字開始
LCALL WRITE_COM
MOV DPTR,#CHINESE1 ;WORD 16*16點(diǎn)陣TEST
LCALL WRITE_HZ
CLR LAMPBLAK ;開背光燈
LCALL DELAY5S ;顯示5秒
SETB LAMPBLAK ;關(guān)背光燈
RET
;**********初始化程序*************
SETUP: LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A,#01H ;CLEAR DISPLAY
LCALL WRITE_COM
MOV A,#00110000B ;FUNCTION SETTING
LCALL WRITE_COM
MOV A,#00000010B ;DDRAM SET TO '00H'
LCALL WRITE_COM
MOV A,#00000100B ;
LCALL WRITE_COM
MOV A,#00001100B ;DISPLAY ON
LCALL WRITE_COM
MOV A,#00000001B ;CLEARING SCREEN
LCALL WRITE_COM
MOV A,#10000000B ;SET DDRAM ADDRESS
LCALL WRITE_COM
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
RET
;************串行命令寫入子程序****************
;寫入命令字在A中
WRITE_COM:
LCALL DELAY1 ;
SETB CS
PUSH ACC
MOV R0,#8
MOV A,#11111000B
COMM1:
CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,COMM1
POP ACC
MOV R5,A
ANL A,#0F0H
MOV R0,#8
COMM2: CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,COMM2
MOV A,R5
SWAP A
ANL A,#0F0H
MOV R0,#8
COMM3: CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,COMM3
CLR CS
RET
;
;***********串行數(shù)據(jù)寫入子程序****************
;寫入數(shù)據(jù)字在A中
WRITE_DAT:
LCALL DELAY1
SETB CS
PUSH ACC
MOV R0,#8
MOV A,#11111010B
DATA1: CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,DATA1
POP ACC
MOV R5,A
ANL A,#0F0H
MOV R0,#8
DATA2: CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,DATA2
MOV A,R5
SWAP A
ANL A,#0F0H
MOV R0,#8
DATA3: CLR C
RLC A
MOV SID,C
CLR CLK
SETB CLK
DJNZ R0,DATA3
CLR CS
RET
;
;**************延時(shí)子程序**********************
;0.544ms
DELAY1:
MOV R7,#010H
D11: MOV R6,#010H
DJNZ R6,$
DJNZ R7,D11
RET
;0.13s
DELAY:
MOV R1,#00H
D2: MOV R2,#00H
DJNZ R2,$
DJNZ R1,D2
RET
;5.2s
DELAY5S:MOV R3,#28H
DE5S: LCALL DELAY
DJNZ R3,DE5S
RET
;
;************16*16點(diǎn)陣漢字寫入子程序共7個(gè)***********
WRITE_HZ: ;WRITE 7 CHINESE TO LCD
MOV R4,#7
DD: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD
RET
;************16*16點(diǎn)陣漢字寫入子程序共2個(gè)***********
WRITE_HZ2: ;WRITE 8 CHINESE TO LCD
MOV R4,#2
DD4: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD4
RET
;
;*****************************16*8點(diǎn)陣的字符代碼表**********************************
TABLE1: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH,3EH,20H
; 0 1 2 3 4 5 6 7 8 9 : ; < = > "不顯"
;**********************************自造字符地址表***********************************
CGRAM1: DB 000H,000H
CGRAM2: DB 000H,002H
CGRAM3: DB 000H,004H
CGRAM4: DB 000H,006H
;******************"這里是16*16點(diǎn)陣的漢字代碼表"************************************
CHINEMOV DW 0C3BFH,0CCECH,0B6BCH,0D3D0H,0BAC3H,0D0C4H,0C7INC,0DBA0H;每天都有好心情
CHINESE1: DW 0BACEH,0CEC4H,0B5C2H,0D7A8HINC2B5H,0C9E8H,0BCC6H,0DBA0H;何文德專業(yè)設(shè)計(jì)
CHINESE2RETW 0CAB1H,0BCE4H ;時(shí)間
END
;******************************結(jié)束************************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -