📄 33-0 万年历时钟程序.asm
字号:
MOV A,#0
MOVC A,@A+DPTR
CALL LCDWRITE
INC YPOS
INC DPTR
CLR A
MOVC A,@A+DPTR
CALL LCDWRITE
DEC YPOS
INC DPTR
CALL CUSORNEXT
MOV A,XPOS
JNZ PAC_LAX
INC YPOS
PAC_LAX:
DJNZ R7,PAC_PA
RET
;=========================================================================
LCDFILL: ;LCD整屏显示A的内容
MOV R7,A
MOV YPOS,#0
LFL_PB: MOV XPOS,#0
LFL_PA: MOV A,R7
LCALL LCDWRITE ;定位并写数据
LCALL CUSORNEXT ;加行或者列
MOV A,XPOS;列
JNZ LFL_PA ;XPOS<128则循环(128列)
MOV A,YPOS
JNZ LFL_PB;行 ;YPOS<8则循环(8页)
RET
;======================================================================
DIS_TU: MOV YPOS,#0 ;从0行开始
LFL_PB1: MOV XPOS,#0 ;从0列开始
LFL_PA1: MOV A,#00h
movc a,@a+dptr
LCALL LCDWRITE ;定位并写数据
LCALL CUSORNEXT ;行或者列加一
INC DPTR
MOV A,XPOS ;
JNZ LFL_PA1 ;XPOS<128则循环(128列)
MOV A,YPOS
JNZ LFL_PB1 ;YPOS<8则循环(8页)
RET
;======================================================================
LCDWRITE: ;定位并写数据子程序
CALL LCDPOS ;内部写数指针定位
CALL LCDWD ;写数据/分左右屏
RET
;======================================================================
CUSORNEXT:
ANL YPOS,#7 ;页码
INC XPOS ;列码
MOV A,XPOS
JNB ACC.7,CNT_LAX ;小于128
MOV XPOS,#0 ;清列码
INC YPOS ;加一行
MOV A,YPOS
ANL A,#0F8H ;大于8则结束
JZ CNT_LAX
MOV YPOS,#0
CNT_LAX:
RET
;======================================================================
LCDPOS: ;内部写数指针定位子程序
PUSH ACC ;保存要写的数据
MOV A,XPOS ;列数据
JB ACC.6,LPS_LAY ;列大于64则跳转
MOV A,YPOS ;XPOS列方向小于64则对CS1操作
ANL A,#07H ;页码
ADD A,#0B8H ;固定码,芯片要求的
LCALL LCDWC1 ;设页码,在第几行?
MOV A,XPOS
ANL A,#3FH ;小于63
ORL A,#40H ;固定码,见说明书
CALL LCDWC1 ;设列码
JMP LPS_LAX
LPS_LAY:MOV A,YPOS ;XPOS列方向大于等于64则对CS2操作
ANL A,#07H
ADD A,#0B8H
CALL LCDWC2 ;设页码
MOV A,XPOS
ANL A,#3FH
ORL A,#40H
CALL LCDWC2 ;设列码
LPS_LAX:POP ACC
RET
;========================================================================
LCDWD: ;送数据子程序
MOV B,A
MOV A,XPOS
JB ACC.6,LWD_LAY
MOV A,B ;XPOS列方向小于64则对CS1操作
CALL LCDWD1
JMP LWD_LAX
LWD_LAY:MOV A,B ;XPOS列方向大于等于64则对CS2操作
CALL LCDWD2
LWD_LAX:
RET
;==========================================
LCDRESET: ;LCD控制器复位
clr LCDRST
setb LCDRST
MOV A,#3FH ;打开LCD显示
CALL LCDWC1
CALL LCDWC2
MOV A,#0C0H ;设显示起始行
CALL LCDWC1
CALL LCDWC2
RET
LCDWC1: ;送片1控制字子程序
CALL WAITIDLE1 ;判断液晶是否忙?
MOV P0,A
CLR RSPIN ;RS=0 RW=0 CS1=1 E=高脉冲
CLR RWPIN
SETB CS1PIN
SETB EPIN
NOP
CLR EPIN
CLR CS1PIN
RET
LCDWC2: ;送片2控制字子程序
CALL WAITIDLE2
MOV P0,A
CLR RSPIN ;RS=0 RW=0 CS2=1 E=高脉冲
CLR RWPIN
SETB CS2PIN
SETB EPIN
NOP
CLR EPIN
CLR CS2PIN
RET
LCDWD1: ;片1写数据子程序
CALL WAITIDLE1
MOV P0,A
SETB RSPIN ;RS=1 RW=0 CS1=1 E=高脉冲
CLR RWPIN
SETB CS1PIN
SETB EPIN
NOP
CLR EPIN
CLR CS1PIN
RET
LCDWD2: ;片2写数据子程序
CALL WAITIDLE2
MOV P0,A
SETB RSPIN ;RS=1 RW=0 CS2=1 E=高脉冲
CLR RWPIN
SETB CS2PIN
SETB EPIN
NOP
CLR EPIN
CLR CS2PIN
RET
LCDRD1: ;片1读数据子程序
CALL WAITIDLE1
MOV P0,#0FFH
SETB RSPIN ;RS=1 RW=1 CS1=1 E=高电平
SETB RWPIN
SETB CS1PIN
SETB EPIN
NOP
MOV A,P0
CLR EPIN
CLR CS1PIN
RET
LCDRD2: ;片2读数据子程序
CALL WAITIDLE2
MOV P0,#0FFH
SETB RSPIN ;RS=1 RW=1 CS1=2 E=高电平
SETB RWPIN
SETB CS2PIN
SETB EPIN
NOP
MOV A,P0
CLR EPIN
CLR CS2PIN
RET
WAITIDLE1: ;
MOV P0,#0FFH
CLR RSPIN ;RS=0 RW=1 CS1=1 E=高电平
SETB RWPIN
SETB CS1PIN
SETB EPIN
WT1_PA: NOP
JB P0.7,WT1_PA
CLR EPIN
CLR CS1PIN
RET
WAITIDLE2:
CLR RSPIN ;RS=0 RW=1 CS2=1 E=高电平
SETB RWPIN
SETB CS2PIN
SETB EPIN
WT2_PA: NOP
JB P0.7,WT2_PA
CLR EPIN
CLR CS2PIN
RET
;/*-- 文字: 时 --*/
Shi:
DB 000H,000H,0FCH,007H,044H,004H,044H,004H,044H,004H,0FCH,007H,010H,000H,090H,000H
DB 010H,003H,010H,040H,010H,080H,0FFH,07FH,010H,000H,010H,000H,010H,000H,000H,000H
;/*-- 文字: 钟 --*/
Zhong:
DB 040H,001H,030H,001H,02CH,001H,0EBH,0FFH,028H,041H,028H,021H,000H,000H,0F8H,001H
DB 008H,001H,008H,001H,0FFH,0FFH,008H,001H,008H,001H,0F8H,001H,000H,000H,000H,000H
;/*-- 文字: 星 --*/
Xing:
DB 000H,000H,000H,048H,000H,046H,0BEH,041H,02AH,049H,02AH,049H,02AH,049H,0EAH,07FH
DB 02AH,049H,02AH,049H,02AH,049H,02AH,049H,03EH,049H,000H,041H,000H,004H,000H,000H
;/*-- 文字: 期 --*/
Qi:
DB 000H,042H,004H,022H,0FFH,01BH,054H,002H,054H,002H,054H,00AH,0FFH,033H,004H,062H
DB 000H,018H,0FEH,007H,022H,002H,022H,022H,022H,042H,0FEH,03FH,000H,000H,000H,000H
;/*-- 文字: 天 --*/
Week0:
DB 000H,000H,040H,080H,042H,040H,042H,020H,042H,010H,042H,008H,042H,006H,0feH,001H
DB 042H,002H,042H,004H,042H,008H,042H,010H,042H,030H,042H,060H,040H,020H,000H,000H
;/*-- 文字: 一 --*/
Week1:
DB 000H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H
DB 080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,0C0H,000H,080H,000H,000H,000H
;/*-- 文字: 二 --*/
Week2:
DB 000H,000H,000H,010H,004H,010H,004H,010H,004H,010H,004H,010H,004H,010H,004H,010H
DB 004H,010H,004H,010H,004H,010H,006H,010H,004H,010H,000H,018H,000H,010H,000H,000H
;/*-- 文字: 三 --*/
Week3:
DB 000H,000H,004H,020H,084H,020H,084H,020H,084H,020H,084H,020H,084H,020H,084H,020H
DB 084H,020H,084H,020H,084H,020H,084H,020H,084H,020H,004H,020H,000H,020H,000H,000H
;/*-- 文字: 四 --*/
Week4:
DB 000H,000H,0FEH,07FH,002H,028H,002H,024H,002H,023H,0FEH,020H,002H,020H,002H,020H
DB 0FEH,021H,002H,022H,002H,022H,002H,022H,002H,022H,0FEH,07FH,000H,000H,000H,000H
;/*-- 文字: 五 --*/
Week5:
DB 000H,020H,002H,020H,082H,020H,082H,020H,082H,020H,082H,03FH,0FEH,020H,082H,020H
DB 082H,020H,082H,020H,0C2H,03FH,082H,020H,002H,020H,000H,030H,000H,020H,000H,000H
;/*-- 文字: 六 --*/
Week6:
DB 010H,000H,010H,040H,010H,020H,010H,010H,010H,00CH,091H,003H,012H,001H,01EH,000H
DB 094H,000H,010H,001H,010H,002H,010H,00CH,010H,078H,010H,030H,010H,000H,000H,000H
;/*-- 文字: 0123456789:/ --*/
Number0:;0
DB 000H,000H,0E0H,00FH,010H,010H,008H,020H,008H,020H,010H,010H,0E0H,00FH,000H,000H
Number1:;1
DB 000H,000H,010H,020H,010H,020H,0F8H,03FH,000H,020H,000H,020H,000H,000H,000H,000H
Number2:;2
DB 000H,000H,070H,030H,008H,028H,008H,024H,008H,022H,088H,021H,070H,030H,000H,000H
Number3:;3
DB 000H,000H,030H,018H,008H,020H,088H,020H,088H,020H,048H,011H,030H,00EH,000H,000H
Number4:;4
DB 000H,000H,000H,007H,0C0H,004H,020H,024H,010H,024H,0F8H,03FH,000H,024H,000H,000H
Number5:;5
DB 000H,000H,0F8H,019H,008H,021H,088H,020H,088H,020H,008H,011H,008H,00EH,000H,000H
Number6:;6
DB 000H,000H,0E0H,00FH,010H,011H,088H,020H,088H,020H,018H,011H,000H,00EH,000H,000H
Number7:;7
DB 000H,000H,038H,000H,008H,000H,008H,03FH,0C8H,000H,038H,000H,008H,000H,000H,000H
Number8:;8
DB 000H,000H,070H,01CH,088H,022H,008H,021H,008H,021H,088H,022H,070H,01CH,000H,000H
Number9:;9
DB 000H,000H,0E0H,000H,010H,031H,008H,022H,008H,022H,010H,011H,0E0H,00FH,000H,000H
Number10:;:
DB 000H,000H,000H,000H,000H,000H,0C0H,030H,0C0H,030H,000H,000H,000H,000H,000H,000H
Number11:;/
DB 000H,000H,000H,060H,000H,018H,000H,006H,080H,001H,060H,000H,018H,000H,000H,000H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -