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

📄 lcdhz51.asm

📁 MCS-51单片机实验 39个实用实验和源码
💻 ASM
字号:
;for        eat598
MASTERI     EQU  0F200H  ;左液晶的地址口
MASTERD     EQU  0F202H  ;左液晶的数据口
SLAVEI      EQU  0F208H  ;右液晶的地址口
SLAVED      EQU  0F20AH  ;右液晶的数据口
LCDON       EQU  0AFH   ;点亮LCD
STARTLINE   EQU  0C0H   ;0~31
STARTCOL    EQU  00H    ;0~79
STARTPAGE   EQU  0B8H   ;0~3
            ORG     0000H
            AJMP    START
            ORG     0040H
START:
            MOV     SP,#60H ;初始化堆栈指针
            LCALL   INITLCD ;初始化LCD
            LCALL   CLEARLCD;清LCD
            MOV     R0,#00H
            MOV     R1,#00H
            MOV     R2,#00H
            MOV     R3,#00H
            MOV     R4,#00H
            MOV     R5,#00H
            MOV     R6,#00H
            MOV     R7,#00H    
            MOV     40H,#00H  
            MOV     DPTR,#CCTAB    ;置显示常数表起始位置  
            MOV     R0,DPL
            MOV     R1,DPH
            NOP
            MOV     DPTR,#MASTERI  ;写左液晶
            MOV     R2,DPL
            MOV     R3,DPH
            MOV     DPTR,#MASTERD
            MOV     R4,DPL
            MOV     R5,DPH
            MOV     R6,#STARTCOL+29;置起始列
            MOV     R7,#STARTPAGE  ;置起始页:第1页
            LCALL   WRITEHZ        ;写“欢”字
            MOV     R6,#STARTCOL+45
            MOV     R7,#STARTPAGE
            LCALL   WRITEHZ        ;写“迎”字
            MOV     DPTR,#SLAVEI   ;写右液晶
            MOV     R2,DPL         
            MOV     R3,DPH
            MOV     DPTR,#SLAVED
            MOV     R4,DPL
            MOV     R5,DPH
            MOV     R6,#STARTCOL
            MOV     R7,#STARTPAGE
            LCALL   WRITEHZ        ;写“使”字
            MOV     R6,#STARTCOL+16
            MOV     R7,#STARTPAGE
            LCALL   WRITEHZ        ;写“用”字
            MOV     DPTR,#MASTERI  ;写左液晶
            MOV     R2,DPL
            MOV     R3,DPH
            MOV     DPTR,#MASTERD
            MOV     R4,DPL
            MOV     R5,DPH
            MOV     R6,#STARTCOL+21
            MOV     R7,#STARTPAGE+2   
            LCALL   WRITEA           ;写"E"
            MOV     R6,#STARTCOL+29
            MOV     R7,#STARTPAGE+2
            LCALL   WRITEA           ;写"A"
            MOV     R6,#STARTCOL+37
            MOV     R7,#STARTPAGE+2
            LCALL   WRITEA           ;写"T"
            MOV     R6,#STARTCOL+45
            MOV     R7,#STARTPAGE+2
            LCALL   WRITEA           ;写"9"
            MOV     R6,#STARTCOL+53
            MOV     R7,#STARTPAGE+2
            LCALL   WRITEA           ;写"8"    
            MOV     DPTR,#SLAVEI     ;写右液晶
            MOV     R2,DPL
            MOV     R3,DPH
            MOV     DPTR,#SLAVED
            MOV     R4,DPL
            MOV     R5,DPH
            MOV     R6,#STARTCOL
            MOV     R7,#STARTPAGE+2  ;置起始页:第2页
            LCALL   WRITEA           ;写"5"  
            MOV     R6,#STARTCOL+8   ;写"实"
            MOV     R7,#STARTPAGE+2  
            LCALL   WRITEHZ   
            MOV     R6,#STARTCOL+24  ;写"验"
            MOV     R7,#STARTPAGE+2  
            LCALL   WRITEHZ
            MOV     R6,#STARTCOL+40  ;写"仪"
            MOV     R7,#STARTPAGE+2  
            LCALL   WRITEHZ  
            SJMP    $

CLEARLCD:
            MOV     R0,#02H          ;分别清除左右液晶
WRITEMORS:
            LCALL   WRITELCDCMD1
            MOV     R1,#00H          ;分0~3页写
WRITEPAGE:		
            LCALL   WRITELCDCMD2
            MOV     R2,#00H          ;分61列写
            LCALL   WRITELCDDATA
            CJNE    R1,#04H,WRITEPAGE
            DJNZ    R0,WRITEMORS        
            RET

WRITELCDCMD1:
            MOV     A,R0
            CJNE    A,#01H,MASTER1
            MOV     DPTR,#SLAVEI
            LCALL   AA
            SJMP    EXIT1
MASTER1:
            MOV     DPTR,#MASTERI
            LCALL   AA 
EXIT1: 
            RET 
AA:
            MOV     A,#STARTPAGE
            MOVX    @DPTR,A
            MOV     A,#STARTLINE
            MOVX    @DPTR,A
            RET
		
WRITELCDCMD2:
	        MOV     A,R0
            CJNE    A,#01H,MASTER2
            MOV     DPTR,#SLAVEI
            LCALL   BB
            SJMP    EXIT3
MASTER2:
            MOV     DPTR,#MASTERI
            LCALL   BB 
EXIT3: 
            RET                      
BB: 
            MOV     A,R1
            CJNE    A,#00H,MASTER21
            MOV     A,#STARTPAGE 
            MOVX    @DPTR,A
            SJMP    EXIT2
MASTER21:		
            CJNE    A,#01H,MASTER22
            MOV     A,#0B9H
            MOVX    @DPTR,A
            SJMP    EXIT2
MASTER22:		
            CJNE    A,#02H,MASTER23
            MOV     A,#0BAH
            MOVX    @DPTR,A
            SJMP    EXIT2
MASTER23:
            MOV     A,#0BBH
            MOVX    @DPTR,A
EXIT2:    		
	        INC     R1    
            RET

WRITELCDDATA:
            MOV     A,#STARTCOL
BDATA:        
            ADD     A,R2
            MOV     DPTR,#MASTERI
            MOVX    @DPTR,A  
            MOV     DPTR,#slaveI
            MOVX    @DPTR,A  
            MOV     A,R0
            CJNE    A,#01H,MASTERD1
            MOV     DPTR,#SLAVED
            MOV     A,#00H
            MOVX    @DPTR,A
            SJMP    EXITD1
MASTERD1:
            MOV     DPTR,#MASTERD
            MOV     A,#00H
            MOVX    @DPTR,A
EXITD1:     		
            CJNE    R2,#61H,EXITD2
	        RET
EXITD2:
            INC     R2
            LJMP    BDATA            
INITLCD: 
  	        MOV     DPTR,#MASTERI
  	        MOV     A,#LCDON
  	        MOVX    @DPTR,A
  	        MOV     A,#STARTLINE
  	        MOVX    @DPTR,A
  	        MOV     A,#STARTPAGE
  	        MOVX    @DPTR,A          
            MOV     DPTR,#SLAVEI
  	        MOV     A,#LCDON
  	        MOVX    @DPTR,A
  	        MOV     A,#STARTLINE
  	        MOVX    @DPTR,A
  	        MOV     A,#STARTPAGE
  	        MOVX    @DPTR,A    
            RET      	    

WRITEHZ:                     ;写16*16点阵汉字子程序
            MOV     DPL,R2
            MOV     DPH,R3
            MOV     A,R6      
            MOVX    @DPTR,A  
            MOV     A,R7
            MOVX    @DPTR,A                
            MOV     40H,#16
            LCALL   TEMP                     
            MOV     DPL,R2
            MOV     DPH,R3
            MOV     A,R6
	        MOVX    @DPTR,A	
	        INC     R7	
            MOV     A,R7
            MOVX    @DPTR,A                
            MOV     40H,#16
            LCALL   TEMP 
            RET

WRITEA:                       ;写8*16点阵字符子程序
            MOV     DPL,R2
            MOV     DPH,R3
            MOV     A,R6      
            MOVX    @DPTR,A  
            MOV     A,R7
            MOVX    @DPTR,A                
            MOV     40H,#8
            LCALL   TEMP                     
            MOV     DPL,R2
            MOV     DPH,R3
            MOV     A,R6
	        MOVX    @DPTR,A	
	        INC     R7	
            MOV     A,R7
            MOVX    @DPTR,A                
            MOV     40H,#8
            LCALL   TEMP 
            RET            
 TEMP:	
	        CLR     A	
	        MOV     DPL,R0
	        MOV     DPH,R1	
            MOVC    A,@A+DPTR
            LCALL   DISP
            INC     R0
            CJNE    R0,#0FFH,TEMP1
            INC     R1
TEMP1:
            DJNZ    40H,TEMP 
            RET
DISP:
			MOV     DPL,R4
			MOV     DPH,R5
            MOVX    @DPTR,A		
            RET
;16x16汉字写入顺序
;01 02 03 04 05 06 07 08
;09 10 11 12 13 14 15 16     
CCTAB:
        DB  004H,034H,0C4H,004H,0C4H,03CH,020H,010H,00FH,0E8H,008H,008H,028H,018H,000H,000H;欢
		DB  010H,008H,006H,001H,082H,08CH,040H,030H,00CH,003H,00CH,010H,060H,0C0H,040H,000H
		DB  040H,042H,044H,0C8H,000H,0FCH,004H,002H,002H,0FCH,004H,004H,004H,0FEH,004H,000H;迎
		DB  000H,040H,020H,01FH,020H,047H,042H,041H,040H,07FH,040H,042H,044H,063H,020H,000H  
        DB  040H,020H,0F0H,01CH,007H,0F2H,094H,094H,094H,0FFH,094H,094H,094H,0F4H,004H,000H;使
        DB  000H,000H,07FH,000H,040H,041H,022H,014H,00CH,013H,010H,030H,020H,061H,020H,000H
        DB  000H,000H,000H,0FEH,022H,022H,022H,022H,0FEH,022H,022H,022H,022H,0FEH,000H,000H;用
        DB  080H,040H,030H,00FH,002H,002H,002H,002H,0FFH,002H,002H,042H,082H,07FH,000H,000H
        DB  008H,0F8H,088H,088H,0E8H,008H,010H,000H,020H,03FH,020H,020H,023H,020H,018H,000H;E
        DB  000H,000H,0C0H,038H,0E0H,000H,000H,000H,020H,03CH,023H,002H,002H,027H,038H,020H;A
        DB  018H,008H,008H,0F8H,008H,008H,018H,000H,000H,000H,020H,03FH,020H,000H,000H,000H;T
        DB  000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H;5
        DB  000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,031H,022H,022H,011H,00FH,000H;9         
        DB  000H,070H,088H,008H,008H,088H,070H,000H,000H,01CH,022H,021H,021H,022H,01CH,000H;8
        DB  000H,010H,00CH,004H,04CH,0B4H,094H,005H,0F6H,004H,004H,004H,014H,00CH,004H,000H;实
        DB  000H,082H,082H,042H,042H,023H,012H,00AH,007H,00AH,012H,0E2H,042H,002H,002H,000H
        DB  002H,0FAH,082H,082H,0FEH,080H,040H,060H,058H,046H,048H,050H,020H,020H,020H,000H;验
        DB  008H,008H,004H,024H,040H,03FH,022H,02CH,021H,02EH,020H,030H,02CH,023H,020H,000H
        DB  040H,020H,0F0H,00CH,003H,000H,038H,0C0H,001H,00EH,004H,0E0H,01CH,000H,000H,000H;仪
        DB  000H,000H,0FFH,000H,040H,040H,020H,010H,00BH,004H,00BH,010H,020H,060H,020H,000H
  END

⌨️ 快捷键说明

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