📄 ssd1303.asm
字号:
;********************************************************
;********************************************************
;*** IC: SSD1303T ***
;*** DESCRIPTION: OLED TEST PROGRAM ***
;*** DOT SIZE: 96*64 ***
;*** WRITTEN BY: BlestPan ***
;*** DATE: 20040605 ***
;*** STRUCTURE: A)INTERFACE DEFINITION ***
;*** B)MAIN PROGRAM ***
;*** C)INITIALIZATION MAIN PROGRAM ***
;*** D)DISPLAY MAIN PROGRAM ***
;*** E) WRITE DATA/COMMAND SUBPROGRAM ***
;*** F)DELAY SUB PROGRAM ***
;*** G)DISPLAY DATA ***
;********************************************************
;********************************************************
; *******************************
; A)INTERFACE DEFINITION
; *******************************
CS2 EQU P3.4
cs1 equ p3.0
RS EQU P3.2
WRB EQU P3.3
RDB EQU P3.6
RESET EQU P3.1
PIXEL EQU 32H
PAGE1 EQU 33H
; *******************************
; B)MAIN PROGEAM
; *******************************
ORG 00H
JMP MAIN
MAIN: LCALL DELAY2S
lcall check
LCALL INITIALM1
LCALL DELAY2S
MAIN1:
MOV DPTR,#PICTURE2
LCALL DISPLAYS
LCALL DELAY20mS
LCALL DELAY20mS
LCALL DELAY20mS
LCALL DELAY20mS
JB P3.5,$
MOV PIXEL,#55H
LCALL DISPLAYS_MULT
LCALL DELAY20mS
LCALL DELAY20mS
LCALL DELAY20mS
LCALL DELAY20mS
JB P3.5,$
JMP MAIN1
INITIALM:
CLR RESET
LCALL DELAY2S
setb reset
LCALL DELAY20mS
MOV A,#0E2H ;software reset
LCALL WRITE_SS
MOV A,#0EEH
LCALL WRITE_SS
MOV A,#0A8H ;MUX
LCALL WRITE_SS
MOV A,#03FH ;second byte
LCALL WRITE_SS
MOV A,#0D0H ;ICON mode off
LCALL WRITE_SS
MOV A,#40H ;display start line
LCALL WRITE_SS
MOV A,#0A1H ;segment re-map off
LCALL WRITE_SS
MOV A,#0C8H ;COM re-map
LCALL WRITE_SS
MOV A,#0A6H ;normal display
LCALL WRITE_SS
MOV A,#0A4H ;entire display mode off
LCALL WRITE_SS
MOV A,#81H ;contrast seting
LCALL WRITE_SS
MOV A,#05AH ;for minimun 40 cd/m2 setting
LCALL WRITE_SS
MOV A,#0D5H ;Frame rate setting
LCALL WRITE_SS
MOV A,#10H ;second byte
LCALL WRITE_SS
MOV A,#0AFH ;Display on
LCALL WRITE_SS
RET
INITIALM1:
MOV A,#0E8H ;set area colour mode on
LCALL WRITE_SS
MOV A,#030H
LCALL WRITE_SS ;second comane
MOV A,#091H
LCALL WRITE_SS
MOV A,#60
LCALL WRITE_SS
MOV A,#16
LCALL WRITE_SS
MOV A,#032
LCALL WRITE_SS
MOV A,#48
LCALL WRITE_SS
MOV A,#92h
LCALL WRITE_SS
MOV A,#00h
LCALL WRITE_SS
check: setb cs2
clr cs2
setb rs
clr rs
setb wrb
clr wrb
setb rdb
clr rdb
setb reset
clr reset
setb p1.0
clr p1.0
setb p1.1
clr p1.1
setb p1.2
clr p1.2
setb p1.3
clr p1.3
setb p1.4
clr p1.4
setb p1.5
clr p1.5
setb p1.6
clr p1.6
setb p1.7
clr p1.7
ret
DISPLAYS:
MOV R4,#8
mov PAGE1 ,#0B0H
LOOP: MOV A ,PAGE1
LCALL WRITE_SS
MOV A,#012H ;high col address
LCALL WRITE_SS
MOV A,#04H ;Low col address
LCALL WRITE_SS
MOV R2,#96
LOOP1: MOV A,#00H
MOVC A,@A+DPTR
LCALL WRITE_sD
INC DPTR
DJNZ R2,LOOP1
INC PAGE1
DJNZ R4,LOOP
RET
DISPLAYS_MULT:
MOV R4,#8
MOV PAGE1,#0B0H
LOOPM: MOV A ,PAGE1
MOV R2,#96
LCALL WRITE_SS
MOV A,#04H ;Low col address
LCALL WRITE_SS
MOV A,#012H ;high col address
LCALL WRITE_SS
LOOPM1: MOV A,#00H
MOV A,PIXEL
LCALL WRITE_SD
DJNZ R2,LOOPM1
INC PAGE1
DJNZ R4,LOOPM
RET
;*****************************************
; WRITE DATA/COMMAND SUBPROGRAM
;*****************************************
WRITE_SD:
setb cs1
CLR CS2
SETB RS
SETB RDB
SETB WRB
MOV P1,A ;8080 SEQUENCE,WR=0,RD=1,WRITE DATA
CLR WRB
NOP
SETB WRB
SETB CS2
RET
;*****************WRITE STATUS******************
WRITE_SS:
setb cs1
CLR CS2
CLR RS
SETB RDB
SETB WRB
MOV P1,A
CLR WRB
NOP
SETB WRB
SETB CS2
RET
;********************************************
; F)DELAY SUBPROGRAM
;********************************************
DELAY20mS:
MOV R6,#0FFH
MOV R7,#00H
DEL2P1:
DJNZ R7, DEL2P1
DJNZ R6,DEL2P1
RET
;******************DELAY 60.4ms*****************
DELAY60 :
MOV R6,#030;76H
MOV R7,#00H
DLP1:
nop
nop
nop
DJNZ R7,dlp1 ;$
DJNZ R6,DLP1
RET
;*****************DELAY 2S**********************
DELAY2S:
MOV R5,#1
MOV R7,#200
MOV R6,#200
D3LP1:
DJNZ R7,$
DJNZ R6,$-2
DJNZ R5,D3LP1
RET
WAIT: NOP
DELAY: MOV 40H,#032H ;10.05ms
DELAY1: MOV 41H,#030H
DELAY2: DJNZ 41H,DELAY2 ;192us
DJNZ 40H,DELAY1
RET
PICTURE2:
;-- 调入了一幅图像:G:\MY-TEXTPICTUE\SSD1303-1.bmp --
;-- 宽度x高度=96x64 --
DB 0FFH,001H,001H,001H,001H,001H,0C1H,001H,001H,001H,001H,001H,001H,041H,0C1H,041H,
DB 041H,041H,041H,081H,001H,001H,001H,001H,001H,081H,041H,041H,041H,081H,0C1H,001H,
DB 001H,041H,0C1H,041H,041H,041H,081H,001H,001H,001H,001H,041H,0C1H,041H,041H,041H,
DB 041H,0C1H,001H,001H,041H,0C1H,041H,041H,041H,041H,041H,0C1H,001H,001H,001H,001H,
DB 001H,081H,041H,041H,041H,0C1H,001H,001H,041H,0C1H,041H,001H,001H,001H,041H,0C1H,
DB 041H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,0FFH,
DB 0FFH,000H,000H,000H,0F0H,04FH,040H,04FH,0F0H,000H,000H,000H,000H,000H,0FFH,008H,
DB 008H,008H,00CH,013H,0E0H,000H,000H,0FEH,001H,000H,000H,000H,000H,000H,081H,000H,
DB 000H,000H,0FFH,000H,000H,000H,000H,083H,07CH,000H,000H,000H,0FFH,008H,008H,008H,
DB 03EH,000H,001H,000H,000H,0FFH,008H,008H,008H,008H,03EH,000H,001H,000H,000H,0FEH,
DB 001H,000H,000H,000H,020H,0E1H,020H,000H,000H,0FFH,010H,010H,010H,010H,010H,0FFH,
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,000H,004H,007H,004H,000H,000H,000H,004H,007H,004H,000H,000H,004H,007H,004H,
DB 004H,004H,004H,002H,001H,000H,000H,000H,003H,004H,004H,004H,004H,002H,001H,000H,
DB 000H,004H,007H,004H,004H,004H,002H,001H,000H,000H,000H,004H,007H,004H,004H,004H,
DB 004H,006H,001H,000H,004H,007H,004H,000H,000H,000H,000H,000H,000H,000H,000H,000H,
DB 003H,004H,004H,004H,004H,003H,000H,000H,004H,007H,004H,000H,000H,000H,004H,007H,
DB 004H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,000H,000H,000H,002H,002H,0FEH,002H,002H,000H,000H,000H,000H,000H,000H,000H,
DB 002H,002H,0FEH,002H,002H,000H,002H,0FEH,082H,040H,0E0H,01AH,006H,002H,002H,000H,
DB 000H,002H,0FEH,002H,000H,000H,000H,000H,000H,000H,002H,0FEH,01EH,0E0H,000H,0E0H,
DB 01EH,0FEH,002H,000H,002H,0FEH,006H,038H,0C0H,000H,002H,0FEH,002H,000H,000H,0F0H,
DB 00CH,002H,002H,002H,002H,00CH,0F0H,000H,000H,002H,0FEH,082H,082H,082H,082H,044H,
DB 038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H,000H,000H,0C0H,080H,080H,
DB 080H,040H,03FH,000H,000H,000H,020H,03FH,020H,000H,000H,003H,02CH,030H,020H,000H,
DB 000H,020H,03FH,020H,020H,020H,020H,020H,018H,000H,020H,03FH,020H,003H,03EH,003H,
DB 020H,03FH,020H,000H,020H,03FH,020H,000H,000H,003H,00CH,03FH,000H,000H,000H,007H,
DB 018H,020H,020H,020H,020H,018H,007H,000H,000H,020H,03FH,020H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,000H,000H,080H,060H,010H,010H,010H,010H,060H,080H,000H,000H,000H,020H,020H,
DB 0F0H,000H,000H,000H,000H,000H,000H,0E0H,010H,010H,010H,010H,010H,0E0H,000H,000H,
DB 000H,0E0H,010H,010H,010H,010H,0E0H,000H,000H,000H,000H,000H,000H,080H,040H,020H,
DB 0F0H,000H,000H,000H,000H,0F0H,010H,010H,010H,010H,010H,010H,000H,000H,000H,000H,
DB 0C0H,020H,010H,010H,010H,010H,060H,000H,000H,070H,010H,010H,010H,090H,070H,010H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,000H,000H,03FH,0C0H,020H,020H,060H,080H,0C0H,03FH,000H,000H,000H,000H,000H,
DB 0FFH,000H,000H,000H,000H,000H,000H,080H,040H,020H,010H,008H,006H,0C1H,000H,000H,
DB 000H,0E0H,000H,002H,002H,003H,084H,078H,000H,000H,000H,018H,016H,011H,010H,010H,
DB 0FFH,010H,010H,000H,000H,0E7H,004H,002H,002H,002H,084H,078H,000H,000H,000H,07FH,
DB 084H,002H,002H,002H,002H,084H,078H,000H,000H,000H,000H,0F8H,006H,001H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,
DB 0FFH,080H,080H,080H,080H,081H,081H,083H,085H,084H,082H,080H,080H,080H,081H,081H,
DB 081H,081H,081H,080H,080H,080H,080H,081H,081H,081H,081H,081H,081H,081H,080H,080H,
DB 080H,080H,081H,081H,081H,081H,080H,080H,080H,080H,080H,080H,080H,080H,081H,081H,
DB 081H,081H,081H,080H,080H,080H,081H,081H,081H,081H,080H,080H,080H,080H,080H,080H,
DB 080H,081H,081H,081H,081H,080H,080H,080H,080H,080H,080H,081H,080H,080H,080H,080H,
DB 080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,080H,0FFH,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -