📄 12864液晶屏已经调试通过,下面是源程序,无偿奉献.txt
字号:
12864液晶屏已经调试通过,下面是源程序,无偿奉献
发表时间:2005-10-28 14:50:54 浏览人数:258
XCS BIT 00H ;显示器片选0=CS1,1=CS2 ;20H-2FH为位
寻址区,位地址从00H-7FH
BZPD BIT 01H ;0=上8X8半字,1=下8X8半字
HHBZ BIT 02H ;换行标志
HZDH BIT 03H ;0=显示汉字,1=显示动画
LCD_RW BIT P3.0
LCD_DI BIT P3.1
LCD_E BIT P3.3
LCD_CS1 BIT P3.5
LCD_CS2 BIT P3.4
LCD_OPEN DATA 30H
LCD_LINE DATA 31H
LCD_PAGE DATA 32H
LCD_Y DATA 33H
YCPD DATA 34H ;左右半屏溢出判断
HHPD DATA 35H ;换行判断
XWPD DATA 36H ;写完一整屏判断
ORG 0000H
MOV SP,#40H
SETB XCS ;选择CS2
MOV LCD_OPEN,#01H ;开显示器1,关显示器
0 ;CS2
LCALL LCDOPEN
MOV LCD_LINE,#00H ;设置起始
行 ;CS2
LCALL SETLINE
MOV LCD_PAGE,#00H ;设置页地址 ;CS2
LCALL SETPAGE
MOV LCD_Y,#00H ;设置列地
址 ;CS2
LCALL SETY
LJMP CLRST1
CLR4:INC LCD_PAGE
CLRST1:LCALL SETPAGE
MOV R7,#40H
CLR5:MOV A,#0FFH ;显示校
验 ;CS2
LCALL LCDWRDATA
DJNZ R7,CLR5
MOV A,LCD_PAGE
CJNE A,#07H,CLR4
MOV LCD_LINE,#00H
LCALL SETLINE
MOV LCD_PAGE,#00H
LCALL SETPAGE
MOV LCD_Y,#00H
LCALL SETY
LJMP CLRST2
CLR6:INC LCD_PAGE
CLRST2:LCALL SETPAGE
MOV R7,#40H
CLR7:MOV A,#00H ;清显
示 ;CS2
LCALL LCDWRDATA
DJNZ R7,CLR7
MOV A,LCD_PAGE
CJNE A,#07H,CLR6
CLR XCS ;选择CS1
MOV LCD_OPEN,#01H ;开显示器1, 关显示器
0 ;CS1
LCALL LCDOPEN
MOV LCD_LINE,#00H
LCALL SETLINE ;设置起始
行 ;CS1
MOV LCD_PAGE,#00H
LCALL SETPAGE ;设置页地
址 ;CS1
MOV LCD_Y,#00H
LCALL SETY ;设置列地
址 ;CS1
LJMP CLRST3
CLR0:INC LCD_PAGE
CLRST3:LCALL SETPAGE
MOV R7,#40H
CLR1:MOV A,#0FFH ;显示校
验 ;CS1
LCALL LCDWRDATA
DJNZ R7,CLR1
MOV A,LCD_PAGE
CJNE A,#07H,CLR0
MOV LCD_LINE,#00H
LCALL SETLINE
MOV LCD_PAGE,#00H
LCALL SETPAGE
MOV LCD_Y,#00H
LCALL SETY
LJMP CLRST4
CLR2:INC LCD_PAGE
CLRST4:LCALL SETPAGE
MOV R7,#40H
CLR3:MOV A,#00H ;清显
示 ;CS1
LCALL LCDWRDATA
DJNZ R7,CLR3
MOV A,LCD_PAGE
CJNE A,#07H,CLR2
;初始化完毕
*************************************************************************
CLR HZDH
WRLCD:JNB HZDH,XZF
XDH:MOV DPTR,#DHDOT ;写动画或图片
LJMP DH0
XZF:MOV DPTR,#HZDOT ;写字符(汉字或字母或符号)
MOV XWPD,#00H
HZ0:CLR XCS
MOV LCD_LINE,#00H ;置起始行
LCALL SETLINE
MOV LCD_PAGE,#00H
LCALL SETPAGE ;置页
MOV LCD_Y,#00H ;置列
LCALL SETY
MOV HHPD,#00H
HZ7:MOV YCPD,#00H
HZ8:CLR BZPD
HZ3:MOV R0,#08H ;写左上8个Y列
HZ1:MOV A,#00H
MOVC A,@A+DPTR
LCALL LCDWRDATA
INC DPTR
INC LCD_Y
DJNZ R0,HZ1
JB BZPD,HZ2
CLR C ;Y列减8, 即返回扫描
MOV A,LCD_Y
SUBB A,#08H
MOV LCD_Y,A
LCALL SETY
INC LCD_PAGE ;页地址加1,即换第2页扫描
LCALL SETPAGE
SETB BZPD
LJMP HZ3
HZ2:DEC LCD_PAGE ;返回到第1页中,准备下一个半
字扫描
LCALL SETPAGE
INC YCPD
MOV A,YCPD
CJNE A,#08H,HZ8
JB XCS,HZ9
SETB XCS ;换屏
LCALL SETPAGE
MOV LCD_Y,#00H ;置列
LCALL SETY
LJMP HZ7
HZ9:CLR XCS ;写完一行后从CS2返回到CS1
中
INC LCD_PAGE
INC LCD_PAGE
LCALL SETPAGE ;下一行开始
MOV LCD_Y,#00H
LCALL SETY
INC HHPD
MOV A,HHPD
CJNE A,#04H,HZ7
INC XWPD ;换第二幅画面
MOV A,XWPD
CJNE A,#02H,HZ0
LJMP$
DH0:MOV XWPD,#00H
DH1:CLR XCS
MOV LCD_LINE,#00H ;置起始行
LCALL SETLINE
MOV LCD_PAGE,#00H
LCALL SETPAGE ;置页
MOV LCD_Y,#00H ;置列
LCALL SETY
MOV HHPD,#00H
DH2:MOV R0,#40H ;写上64个Y列
DH3:MOV A,#00H
MOVC A,@A+DPTR
LCALL LCDWRDATA
INC DPTR
DJNZ R0,DH3
JB XCS,DH4
SETB XCS
LCALL SETPAGE
MOV LCD_Y,#00H
LCALL SETY
LJMP DH2
DH4:CLR XCS ;写完一行后从CS2返回到CS1
中
INC LCD_PAGE
LCALL SETPAGE ;下一行开始
MOV LCD_Y,#00H
LCALL SETY
INC HHPD
MOV A,HHPD
CJNE A,#08H,DH2
INC XWPD ;换第二幅画面
MOV A,XWPD
CJNE A,#02H,DH1
LJMP$
LCDWRINST:NOP
JB XCS,INS0
CLR LCD_CS1
SETB LCD_CS2
LJMP INS1
INS0:SETB LCD_CS1
CLR LCD_CS2
INS1:SETB LCD_E
CLR LCD_DI
CLR LCD_RW
MOV P1,A
LCALL DLY10
CLR LCD_E
LCALL DLY10
NOP
RET
LCDWRDATA:NOP
JB XCS,DAT0
CLR LCD_CS1
SETB LCD_CS2
LJMP DAT1
DAT0:SETB LCD_CS1
CLR LCD_CS2
DAT1:SETB LCD_E
SETB LCD_DI
CLR LCD_RW
MOV P1,A
LCALL DLY10
CLR LCD_E
LCALL DLY10
NOP
RET
LCDOPEN:MOV A,LCD_OPEN ;开显示器
ANL A,#3FH
ORL A,#3EH
LCALL LCDWRINST
NOP
RET
SETLINE:MOV A,LCD_LINE
ORL A,#0C0H ;设置起始行
LCALL LCDWRINST
NOP
RET
SETPAGE:MOV A,LCD_PAGE
ANL A,#0BFH
ORL A,#0B8H ;设置页地址
LCALL LCDWRINST
NOP
RET
SETY:MOV A,LCD_Y
ANL A,#7FH
ORL A,#40H
NOP ;设置列地址
LCALL LCDWRINST
NOP
RET
DLY10:NOP
MOV R5,#01H
DL1:MOV R4,#01H
DL2:MOV R6,#0FH
DL3:DJNZ R6,DL3
DJNZ R4,DL2
DJNZ R5,DL1
NOP
RET
HZDOT:
;新 CD0C2
DB 000H,044H,04CH,07CH,0D7H,0E6H,07CH,05CH
DB 000H,022H,01AH,04EH,0FFH,07FH,00EH,09AH
DB 044H,0FEH,0FCH,046H,0C2H,0C3H,062H,040H
DB 060H,03FH,01FH,000H,0FFH,0FFH,000H,000H
;年 CC4EA
DB 000H,020H,010H,018H,0ECH,0CFH,04AH,048H
DB 000H,004H,004H,004H,007H,007H,004H,004H
DB 0F8H,0F8H,048H,048H,068H,04CH,008H,000H
DB 0FFH,0FFH,004H,004H,004H,004H,006H,004H
;快 CBFEC
DB 000H,0C0H,060H,0FFH,0FEH,030H,060H,008H
DB 000H,000H,000H,0FFH,07FH,080H,041H,071H
DB 008H,0FFH,0FEH,008H,0F8H,0FCH,008H,000H
DB 03DH,00FH,007H,00DH,039H,071H,0E1H,041H
;乐 CC0D6
DB 000H,000H,080H,080H,0FEH,0FCH,084H,084H
DB 000H,040H,020H,030H,01CH,00EH,024H,040H
DB 0FEH,0F6H,082H,083H,0C2H,080H,000H,000H
DB 0FFH,07FH,000H,002H,00CH,018H,070H,020H
;欢 CBBB6
DB 000H,034H,0C4H,004H,0C4H,0FCH,03EH,024H
DB 000H,040H,038H,00FH,007H,03CH,098H,060H
DB 018H,00EH,0EFH,0CAH,048H,038H,01CH,008H
DB 030H,01CH,00FH,007H,01CH,070H,0E0H,040H
;迎 CD3AD
DB 000H,040H,046H,0DCH,0E8H,040H,0FEH,0FCH
DB 000H,040H,0E0H,03FH,01FH,032H,067H,0C3H
DB 006H,003H,0FDH,0FCH,004H,0FCH,0FEH,004H
DB 0C2H,0C1H,0FFH,0DFH,0C2H,0C7H,0C3H,040H
;使 CCAB9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -