📄 lcd12864.asm
字号:
;* 控制器:KS0107 *
;* LCD型号:TS12864A-2或兼容型号 *
;* MCU:AT89S5* ,晶体频率:11.0592MHz *
;* 取模方式:纵向字节倒序 *
;* CS1和CS2为高电平有效 * *
;***************硬件端口定义***********
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
CS1 EQU P2.3
CS2 EQU P2.4
RST EQU P2.5
COM EQU 20H ;指令数据寄存器
DAT EQU 21H ;显示数据寄存器
;**********************************主程序入口地址
ORG 0000H
AJMP STR
ORG 0003H
;*********************************中断程序入口地址
STR:
AJMP L0100
L0100: CLR RST
NOP
NOP
SETB RST
;********************************以上是软件复位
CLR P2.6
MOV SP,#60H
MOV IE,#81H ;中断允许
MOV IP,#01H ;优先中断
MOV TCON,#00H ;电平中断
MOV COM,#3FH ;显示开
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
MOV COM,#0C0H ;第一行
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
MOV COM,#0B8H ;第一页
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
MOV COM,#40H ;第一列
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;********************************************************以上是软件初始化
MOV B,#0AAH
LCALL XIHX ;显示横线1
LCALL DELAY
; MOV B,#55H
; LCALL XIHX
; LCALL DELAY ;显示横线2
MOV B,#0FFH
MOV 29H,#00H
LCALL XISX
LCALL DELAY ;显示竖线1
; MOV B,#00H
; MOV 29H,#0FFH
; LCALL XISX
; LCALL DELAY ;显示竖线2
MOV DPTR,#TAB1
LCALL LEFT
MOV DPTR,#TAB2
LCALL RIGHT
LCALL DELAY ;显示第一幅图片
MOV DPTR,#TAB3
LCALL LEFT
MOV DPTR,#TAB4
LCALL RIGHT
LCALL DELAY ;显示第二幅图片
MOV DPTR,#TAB5
LCALL LEFT
MOV DPTR,#TAB6
LCALL RIGHT
LCALL DELAY ;显示第三幅图片
AJMP L0100
;=======================================================以上是主程序
LEFT: MOV R1,#0B8H
_AB: MOV COM,R1 ;第一页
LCALL S02A9 ;左半屏写指令子程序
MOV COM,#40H ;第一列
LCALL S02A9 ;左半屏写指令子程序
MOV R0, #64
S027B: MOV A,#00H
MOVC A,@A+DPTR
MOV DAT,A
LCALL S02B1 ;左半屏写数据子程序
INC DPTR
DJNZ R0,S027B
INC R1
CJNE R1, #0C0H,_AB
RET
;======================================================以上是左半屏写数据子程序
RIGHT: MOV R1,#0B8H
ABC: MOV COM,R1 ;第一页
LCALL S02C1 ;右半屏写指令子程序
MOV COM,#40H ;第一列
LCALL S02C1 ;右半屏写指令子程序
MOV R0, #64
S027D: MOV A,#00H
MOVC A,@A+DPTR
MOV DAT,A
LCALL S02B9 ;右半屏写数据子程序
INC DPTR
DJNZ R0,S027D
INC R1
CJNE R1, #0C0H,ABC
RET
;*******************************************************以上是右半屏写数据子程序
XIHX: MOV R1,#0B8H
BA: MOV COM,R1 ;第一页
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
MOV COM,#40H ;第一列
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
MOV R0, #64
W027B: MOV DAT,B
LCALL S02B1 ;左半屏写数据子程序
LCALL S02B9 ;右半屏写数据子程序
DJNZ R0,W027B
INC R1
CJNE R1, #0C0H,BA
RET
;---------------------------------------------------------
XISX: MOV R1,#0B8H
CA: MOV COM,R1 ;第一页
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
MOV COM,#40H ;第一列
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
MOV R0, #32
X027B: MOV DAT,B
LCALL S02B1 ;左半屏写数据子程序
LCALL S02B9 ;右半屏写数据子程序
MOV DAT,29H
LCALL S02B1 ;左半屏写数据子程序
LCALL S02B9 ;右半屏写数据子程序
DJNZ R0,X027B
INC R1
CJNE R1, #0C0H,CA
RET
;****************************************************以上是显示线条程序
S02A9: SETB CS1
LCALL S02C9
CLR CS1 ;左半屏写指令子程序
RET
S02B1: SETB CS1 ;左半屏写数据子程序
LCALL S02E0
CLR CS1
RET
S02C1: SETB CS2 ;右半屏写指令子程序
LCALL S02C9
CLR CS2
RET
S02B9: SETB CS2 ;右半屏写数据子程序
LCALL S02E0
CLR CS2
RET
;****************************************************
S02C9: CLR RS
SETB RW
S02C9A: MOV P0,#0FFH
SETB E
MOV A, P0
CLR E
JB ACC.7,S02C9A
CLR RW
MOV P0,COM
SETB E
NOP
CLR E
RET
;*************************************************以上是写指令子程序
S02E0: CLR RS
SETB RW
S02E0A: MOV P0,#0FFH
SETB E
MOV A, P0
CLR E
JB ACC.7,S02E0A
SETB RS
CLR RW
MOV P0,DAT
SETB E
NOP
CLR E
RET
;************************************************以上是写数据子程序
DELAY: MOV R5,#0BH ;延时
D1: MOV R7,#0FFH
D2: MOV R6,#0FFH
D3: DJNZ R6,$
DJNZ R7,D2
DJNZ R5,D1
RET
;****************************************************************
TAB1:
;-- 调入菲戈幅图像左半屏:纵向取模下高位,数据排列:从左到右从上到下
;-- 宽度x高度=64x64
DB 000h,000h,000h,040h,080h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,010h
DB 060h,080h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FCh,000h,000h
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,0C0h,030h,008h,000h,000h,000h,000h
DB 000h,000h,000h,000h,000h,080h,040h,000h,000h,000h,000h,000h,000h,000h,000h,000h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -