⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cjtemp.asm

📁 单片机的汉字点阵式液晶显示器显示程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
shul8:  nop               ;--------------------
        mov     hang,#0   ;hang为常数(总是从第0行开始显示) 
        mov     hangc,#4         
ttt:    lCALL    datawr1
        inc      hang
        inc      hang
        djnz     hangc,  ttt;cs1 enable(在左侧第一列显示4个汉字)
        ret
        
        
;--------右屏纵向显示8个汉字菜单------------------------------
;--------入口参数为lie(1个参数)-----------------------------        
        
shur8:  mov     hang,#0   ;
        mov     hangc,#4  
uuu:    lcall   datawr2        	
        inc     hang
        inc     hang
        djnz    hangc,uuu;cs2 enable 
        ret        



;----------输入的参数为1个:表格地址-------------
;----------在左边显示16个汉字(即左半屏显示)----
;------------------------------------------------
left16: nop
        mov     hang,#0
        mov     hangc,#4
        mov     lie,#0
        mov     liec,#4  
loopl:  lCALL    datawr1  ;setup page and column!
        mov      a,lie
        add      a,#16    ;get next column 
        mov      lie,a
        djnz     liec, loopl
        mov      liec,#4
        mov      lie,#0
        inc      hang
        inc      hang     ;get next page,one hz need two page!
        djnz     hangc,loopl    
        ret
            

;----输入的参数为1个:表格地址-------------------
;----在右边显示16个汉字(即右半屏显示)----------
;------------------------------------------------
right16:nop
        mov     hang,#0
        mov     hangc,#4
        mov     lie,#0
        mov     liec,#4  
loopr:  lCALL    datawr2        
        mov      a,lie
        add      a,#16
        mov      lie,a
        djnz     liec, loopr
        mov      liec,#4
        mov      lie,#0
        inc      hang
        inc      hang
        djnz     hangc,loopr    
        ret

      
                          
;-------在左屏某一个位置显示一个字符-----------------  
;-------入口参数是hang和lie,dptr----------------

bloblx: push  dpl
        push  dph
        mov  counter,#16
        ;--------------------------------------------
        mov  a,hang        
        mov  r1,a
        mov  a,lie
        mov  r2,a
        lcall setpage1
        lcall  setcolumn1;-----------------设定显示地址
        pop    dph
        pop    dpl              
        mov    a,#0   
bloopx:  push  acc
         movc   A,@A+DPTR
         lcall  DTWR1
         inc    DPTR        
         pop    acc        
         djnz   counter,bloopx
         push  dpl
         push  dph
        ;---------------------------------           
         mov   counter,#16
         mov   a,hang;--------------恢复页码
         inc   acc   ;--------------下一页                        
         mov   r1,a
         mov   a,lie
         mov   r2,a               
         lcall setpage1
         lcall  setcolumn1
         pop    dph
         pop    dpl 
         mov    a,#0
bloopy:  push   acc
         MOVC   A,@A+DPTR
         lcall  DTWR1
         INC    DPTR
         pop    acc                 
         djnz   counter,bloopy           
         ret 


blobrx: push  dpl
        push  dph
        mov  counter,#16
        ;--------------------------------------------
        mov  a,hang        
        mov  r1,a
        mov  a,lie
        mov  r2,a
        lcall setpage2
        lcall  setcolumn2;-----------------设定显示地址
        pop    dph
        pop    dpl              
        mov    a,#0   
blooprx:  push  acc
         movc   A,@A+DPTR
         lcall  DTWR2
         inc    DPTR        
         pop    acc        
         djnz   counter,blooprx
         push  dpl
         push  dph
        ;---------------------------------           
         mov   counter,#16
         mov   a,hang;--------------恢复页码
         inc   acc   ;--------------下一页                        
         mov   r1,a
         mov   a,lie
         mov   r2,a               
         lcall setpage2
         lcall  setcolumn2
         pop    dph
         pop    dpl 
         mov    a,#0
bloopry:  push   acc
         MOVC   A,@A+DPTR
         lcall  DTWR2
         INC    DPTR
         pop    acc                 
         djnz   counter,bloopry           
         ret 

;******************************************************************************
DELAY:  MOV     R5,#0FFH  
        MOV     R4,#01H
DELAY1: MOV	R6,#0FFH  
DELAY2: DJNZ	R6,DELAY2
    	DJNZ	R5,DELAY1
	    MOV     R5,#0FFH
	    DJNZ    R4,DELAY1
        RET
;******************************************************************************
PAUSE:  lcall    DELAY   
        lcall    DELAY   
        lcall    DELAY 
        lcall    DELAY   
        RET
;******************************************************************************
CKBUSY1:                                ;Check busy for chip 1
BUSY1:  
        ;---------
        clr     E
        ;---------
        CLR     D/I
        SETB    R/W
        CLR     CS1   ;?
        SETB    E    
        MOV     C,P2.7
        NOP
        CLR     E
        SETB    CS1
        JC      BUSY1   
        RET
;******************************************************************************
CKBUSY2:                                ;Check busy for chip 2
BUSY2:  ;---------
        clr     E
        ;---------
        CLR     D/I
        SETB    R/W
        CLR     CS2
        SETB    E
        MOV     C,P2.7
        NOP
        CLR     E
        SETB    CS2
        JC      BUSY2
        RET

;******************************************************************************
DTWR1:                                  ;Data write for chip 1
        lcall    CKBUSY1                ;Check busy flag
        ;----
        CLR E
        ;----
        ;MOV     P2,A
        SETB    D/I
        CLR     R/W
        CLR     CS1
        SETB    E  
	    NOP
	    MOV     P2,A;------
        CLR     E  
        SETB    CS1
        RET
;******************************************************************************
DTWR2:                                  ;Data write for chip 2
        lcall    CKBUSY2                 ;Check busy flag

        ;MOV     P2,A;
        SETB    D/I
        CLR     R/W
        CLR     CS2
        SETB    E  
        NOP
        MOV     P2,A;------
        CLR     E  
        SETB    CS2
        RET
;******************************************************************************
CMDWR1:                                 ;Command write for chip 1
        lcall    CKBUSY1                ;Check busy flag        
        
        ;MOV     p2,A ;----
        CLR     D/I
        CLR     R/W
        CLR     CS1
        SETB    E  
    	NOP
    	MOV     p2,A ;----
        CLR     E  
        SETB    CS1        
        RET
;******************************************************************************
CMDWR2:                                 ;Command write for chip 2
        lcall    CKBUSY2                 ;Check busy flag

        ;MOV     P2,A;-----
        CLR     D/I
        CLR     R/W
        CLR     CS2
        SETB    E  
        NOP
        MOV     p2,A ;----
        CLR     E  
        SETB    CS2
        RET
;******************************************************************************
SETPAGE1:                               ;Set page address for chip 1
        MOV     A,#10111000B
        ORL     A,R1
        lcall    CMDWR1        
        RET
;******************************************************************************
SETPAGE2:                               ;Set page address for chip 2
        MOV     A,#10111000B
        ORL     A,R1
        lcall    CMDWR2       
        RET
;******************************************************************************
SETCOLUMN1:                             ;Set column address for chip 1
        MOV     A,#01000000B
        ORL     A,R2
        lcall    CMDWR1      
        RET
;******************************************************************************
SETCOLUMN2:                             ;Set column address for chip 2
        MOV     A,#01000000B
        ORL     A,R2
        lcall    CMDWR2        
        RET
        
;-------------------------------------------
;--------入口参数hang,lie和menusel(0,2,4,6)------------------
;--------如果menusel=其他值,该程序就可以显示正常的图形数据
datawr1: mov  counter,#0
        ;-----------
        mov  a,hang
        push acc
        mov  r1,a
        mov  a,lie
        mov  r2,a       
        lcall setpage1
        lcall  setcolumn1
pagel:  mov    A,#00H 
        MOVC   A,@A+DPTR
        
        ;---------------------
        push acc 
        mov  a,hang    ;判断当前选中的菜单是否反色
        xrl  a,menusel
        jz   anticolor1
        pop  acc      
        ajmp noanti1
                
anticolor1:pop acc
          cpl a  
noanti1:   nop           
          ;---------------------
          lcall  DTWR1
          INC    DPTR
          INC    counter
          mov    a,counter
          CJNE   a,#10H,pagel         
          ;---------------------
          mov   counter,#0
          pop acc
          inc acc ;get next page 
          mov  r1,a
          mov  a,lie
          mov  r2,a               
          lcall setpage1
          lcall  setcolumn1
pagell:   mov    A,#00H
          MOVC   A,@A+DPTR
          ;---------------------
         ;---------------------
        push acc 
        mov  a,hang    ;判断当前选中的菜单
        xrl  a,menusel
        jz   anticolor2
        pop  acc      
        ajmp noanti2
                
anticolor2:pop acc
          cpl a  
noanti2:   nop           
          ;---------------------     
          ;---------------------
          lcall  DTWR1
          INC    DPTR
          INC    counter
          mov    a,counter
          CJNE   a,#10H,pagell        
          ret
        
        

datawr2: ;------------------
        mov  counter,#0
        ;-----------
        mov  a,hang
        push acc
        mov  r1,a
        mov  a,lie
        mov  r2,a       
        lcall setpage2
        lcall  setcolumn2
pager:  mov    A,#00H
        MOVC   A,@A+DPTR
        ;---------------------
        ;---------------------
        push acc 
        mov  a,hang    ;判断当前选中的菜单
        xrl  a,menusel
        jz   anticolor3
        pop  acc      
        ajmp noanti3
                
anticolor3:pop acc
           cpl a  
noanti3:   nop           
        ;---------------------        
        ;---------------------
        lcall  DTWR2
        INC    DPTR
        INC    counter
        mov    a,counter
        CJNE   a,#10H,pager        
        ;---------------------
        mov   counter,#0
        pop acc
        inc acc ;get next page 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -