这是一个让一串字符上下循环显示的lcd程序。 上面显示的是我爱钟予婕,她很感动哦!想要追女孩子的可以学习恋爱两不误!
;* 控制器:KS0107 *
;* LCD型号:TS12864A-2或兼容型号 *
;* MCU:AT89S5* ,晶体频率:11.0592MHz *
;* 取模方式:纵向字节倒序 *
;* CS1和CS2为高电平有效 * *
; 一串字符升降用lcd显示程序
;; 一串字符升降用lcd显示程序
; 一串字符升降用lcd显示程序
; 一串字符升降用lcd显示程序
;***************硬件端口定义***********
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 ;显示数据寄存器
SL EQU 22H
FLAG BIT 23H
;**********************************主程序入口地址
ORG 0000H
AJMP STR
ORG 0003H
;*********************************中断程序入口地址
STR:
AJMP L0100
L0100: CLR RST
NOP
NOP
SETB RST
SETB P2.6
SETB FLAG ;Increase
;CLR P2.6
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
;********************************以上是软件复位
MOV SP,#60H
MOV IE,#81H ;中断允许
MOV IP,#01H ;优先中断
MOV TCON,#00H ;电平中断
MOV COM,#3FH ;显示开
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
; MOV R6,#64
MOV SL,#0C0H ;SET THE START LINE
shift: MOV COM,SL ;第一行
ACALL IncreaseDrop
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
MOV COM,#0B8H ;第一页
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;----------------------------------------------------------------------
MOV COM,#40H ;第一列
LCALL S02A9 ;左半屏写指令子程序
LCALL S02C1 ;右半屏写指令子程序
;********************************************************以上是软件初始化
MOV DPTR,#TAB1
; LCALL LEFT
; MOV DPTR,#TAB2
; LCALL RIGHT
; LCALL DELAY
MOV DPTR,#TAB3
LCALL LEFT
MOV DPTR,#TAB4
LCALL RIGHT
; MOV R3,#04H
;L0: DJNZ R3,L1
; AJMP L2
LCALL DELAY
; LCALL DELAY
;AJMP L0
ACALL IncreaseDrop
MOV A,SL
INC A
MOV SL,A
AJMP shift
AJMP L0100
;=======================================================以上是主程序
LEFT: MOV R1,#0BEH ;THE 7TH PAGE
_AB: MOV COM,R1 ;第一页
LCALL S02A9 ;左半屏写指令子程序
MOV COM,#5FH ;第一列
LCALL S02A9 ;左半屏写指令子程序
MOV R0, #32
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,#0BEH ;THE 5 PAGE
ABC: MOV COM,R1 ;第一页
LCALL S02C1 ;右半屏写指令子程序
MOV COM,#40H ;第一列
LCALL S02C1 ;右半屏写指令子程序
MOV R0, #48
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
;****************************************************************
IncreaseDrop:
MOV A,SL
JB FLAG,Increase
AJMP Drop
Increase: INC A
CJNE A,#0EEH,SHUCHU
CPL FLAG ;Change the direction of word
Drop: DEC A
CJNE A,#0C0H,SHUCHU
CPL FLAG
AJMP Increase
SHUCHU: MOV SL,A
RET
TAB3:
;-- 文字: ME 0? --
;-- System14; 此字体下对应的点阵为:宽x高=16x16 --
DB 020h,020h,022h,022h,0FEh,021h,021h,020h,020h,0FFh,020h,022h,0ACh,020h,020h,000h
; LOVE 0
DB 000h,040h,0B2h,096h,09Ah,092h,0F6h,09Ah,093h,091h,099h,097h,091h,090h,030h,000h
; ME1
DB 004h,004h,042h,082h,07Fh,001h,001h,010h,010h,008h,007h,01Ah,021h,040h,0F0h,000h
;LOVE 1
DB 040h,020h,0A0h,090h,04Ch,047h,02Ah,02Ah,012h,01Ah,026h,022h,040h,0C0h,040h,000h
;-- 文字: 钟 --
;-- System14; 此字体下对应的点阵为:宽x高=16x16 --
TAB4:
;ZONG 0
DB 040h,030h,02Ch,0EBh,028h,028h,000h,0F8h,008h,008h,0FFh,008h,008h,0F8h,000h,000h
;YU 0
DB 000h,020h,020h,021h,021h,025h,029h,0F1h,029h,025h,027h,023h,0E1h,070h,020h,000h
; JIE 0
DB 010h,090h,07Fh,010h,0F0h,022h,0AAh,0AAh,0AAh,0FFh,0AAh,0AAh,0FAh,022h,022h,000h
;-- 文字: 爱 --
;-- System14; 此字体下对应的点阵为:宽x高=16x16 --
;-- 文字: 予 --
;-- System14; 此字体下对应的点阵为:宽x高=16x16 --
;ZONG 1
DB 001h,001h,001h,0FFh,041h,021h,000h,001h,001h,001h,0FFh,001h,001h,001h,000h,000h
;YU 1
DB 000h,000h,000h,000h,020h,040h,080h,07Fh,000h,000h,000h,001h,000h,000h,000h,000h
;-- 文字: 婕 --
;-- System14; 此字体下对应的点阵为:宽x高=16x16 --
;JIE 1
DB 040h,021h,01Ah,086h,059h,020h,01Eh,010h,020h,07Fh,044h,044h,044h,044h,040h,000h
END