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

📄

📁 SSD1303汇编源程序,保证你能点亮你的OLED
💻
📖 第 1 页 / 共 2 页
字号:
SCLK    EQU     P0.3
RST     EQU     P0.2
SDAT    EQU     P1.7
DC      EQU     P0.0
CS      EQU     P0.1
TMP1    EQU     30H     ;TEMP RAM(USED BY SEND)
PAGETMP EQU     31H
PAGEIN  EQU     32H
WR_NUM  EQU     33H
TMP_DPL EQU     34H
TMP_DPH EQU     35H
CHANGEXY        EQU     36H    


        ORG 0H
        
        LJMP    BEGIN
        ORG     01BH
        SETB    F0
        RETI
        
BEGIN:  CALL    OLEDINIT
        CALL    OLEDCLS
        CALL    LOGO
	
    	MOV	DPTR,#NUM0       
        MOV     CHANGEXY,#030
        MOV     PAGEIN,#7
        CALL    C_XY
        MOV     WR_NUM,#005H
        CALL    WRDB 

    	MOV	DPTR,#NUM0    	       
        MOV     CHANGEXY,#036
        MOV     PAGEIN,#7
        CALL    C_XY
        MOV     WR_NUM,#005H
        CALL    WRDB 
                
        MOV     CHANGEXY,#0                  ;输入X坐标(0-127)  
        MOV     PAGEIN,#5                 ;输入y坐标,以8为单位              
        CALL    DISPFMRES


        MOV     CHANGEXY,#0                  ;输入X坐标(0-127)  
        MOV     PAGEIN,#2                  ;输入y坐标,以8为单位 
        CALL    C_XY   
        MOV     DPTR,#FMLINE
        MOV     WR_NUM,#080H
        CALL    WRDB   
        
TIME:
        MOV	DPTR,#NUM1
        MOV     TMP_DPL,DPL
        MOV     TMP_DPH,DPH
        MOV     R3,DPL
        MOV     R4,DPH
        
        MOV     R1,#00AH
        MOV      TMOD,#01010001B
        MOV     R5,#00AH

                                     
REPEAT: 

        
        MOV      TH0,#0FCH
        MOV      TL0,#018H
        MOV      TH1,#0FCH
        MOV      TL1,#018H
        CLR      P3.5
        MOV      IE,#88H
        SETB     TR1
        SETB     TR0
LOOP:
        JNB     TF0,$
        CLR     TF0
        JBC     F0,HHH
        SETB    P3.5
                       
        MOV     TH0,#0FCH
        MOV     TL0,#018H
        CLR     P3.5
        SJMP    LOOP
                    
HHH:    
        
        MOV     CHANGEXY,#036
        MOV     PAGEIN,#7
        CALL    C_XY
        MOV     DPL,R3
        MOV     DPH,R4
        MOV     WR_NUM,#005H
        CALL    WRDB
        MOV     R3,DPL
        MOV     R4,DPH
        DJNZ    R1,REPEAT
      
        CALL    AD1       
        MOV	DPTR,#NUM1
        MOV     R1,#00AH
        MOV     R3,DPL
        MOV     R4,DPH
                                            
        LJMP    REPEAT

AD1:    
       
        MOV     CHANGEXY,#030
        MOV     PAGEIN,#7
        CALL    C_XY
        MOV     DPL,TMP_DPL
        MOV     DPH,TMP_DPH 
        MOV     WR_NUM,#005H
        CALL    WRDB
        MOV     TMP_DPL,DPL
        MOV     TMP_DPH,DPH
        DJNZ    R5,AD10
        MOV     DPTR,#NUM1
        MOV     R5,#00AH
        MOV     TMP_DPL,DPL
        MOV     TMP_DPH,DPH                             
AD10:        
        RET



DISPFMRES:
        CALL    C_XY           
        MOV     DPTR,#FMRES                     ;FMRES  ADDRIESS
        MOV     WR_NUM,#018H
        CALL    WRDB
        DEC     PAGEIN
        CALL    C_XY
        MOV     WR_NUM,#018H
        CALL    WRDB  
        RET

C_XY:
        MOV     A,PAGEIN
        ADD     A,#0B0H
        CALL    COMMAND
        MOV     A,CHANGEXY
        ANL     A,#0FH
        CALL	COMMAND
        MOV     A,CHANGEXY
        SWAP    A
        ANL     A,#0FH
        ADD     A,#010H
        CALL    COMMAND  
        RET
    

WELCOME:
        MOV     A,#0B7H
        CALL    COMMAND
        MOV 	A,#000H            /*SET LOWER COLUMN ADDRESS*/
        CALL	COMMAND
        MOV     A,#011H            /*SET HIGHER COLUMN ADDRESS*/
        CALL	COMMAND
        MOV     DPTR,#welcomestring
        MOV     WR_NUM,#042H 
        CALL    WRDB
        RET       
        
        
WRDB:      
        MOV     R0,WR_NUM
LOOP_WRDB:
        CLR     A
        MOVC 	A,@A+DPTR
        CALL 	SENDDATA
        INC 	DPTR
        DJNZ    R0,LOOP_WRDB
        RET

        
OLEDINIT:
        CALL    RESET	
        MOV     A,#0A4H        /*SET ENTIRE DISPLAY ON*/
        LCALL   COMMAND      
        MOV     A,#40H         /*set display start line*/
        LCALL   COMMAND        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0A0H        /*re-map(A0/A1)*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0A6H        /*set normal display*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0D3H        /*set display offset*/
        LCALL   COMMAND
        MOV     A,#0H          /*no offset*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0D9H        /*set vp*/
        LCALL   COMMAND
        MOV     A,#22H
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0DAH        /*set pin hardware configuration*/
        LCALL   COMMAND
        MOV     A,#12H
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                
        MOV     A,#81H         /*set contrast control*/
        LCALL   COMMAND
        MOV     A,#0FFH         
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0A8H        /*set multiplex ratio*/
        LCALL   COMMAND
        MOV     A,#03FH        /**/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0ADH        /*set DC-DC*/
        LCALL   COMMAND
        MOV     A,#8AH         /*8B=ON 8A=OF*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0AFH        /*set display ON/OF AF=ON AE=OF*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
        MOV     A,#0D5H        /*set clock driver*/
        LCALL   COMMAND
        MOV     A,#0A0H         /*set 100hz*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0D8H        /*set area color on or off*/
        LCALL   COMMAND
        MOV     A,#0H          /*mono mode*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV     A,#0DBH        /*set vcomh*/
        LCALL   COMMAND
        MOV     A,#25H
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;     
        MOV     A,#0C0H        /*set com output(C0/C8)*/
        LCALL   COMMAND
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
        RET

RESET:	
	SETB    CS
        SETB    SCLK
        SETB    SDAT
        SETB    RST
        NOP
        NOP
        NOP
        NOP
        NOP
        CLR     RST
        NOP
        NOP
        NOP
        NOP
        NOP
        SETB    RST
	RET

COMMAND:	

⌨️ 快捷键说明

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