让一串字符上下循环显示的lcd源程序

        这是一个让一串字符上下循环显示的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
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值