?? 1.asm
字號:
SCLK EQU P0.3
RST EQU P0.2
SDAT EQU P0.4
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
WR_BYTE EQU 34H
WR_MODE EQU 35H
CHANGEXY EQU 36H
OFFSET EQU 37H
ORG 0H
LJMP BEGIN
ORG 01BH
SETB F0
RETI
BEGIN:
ANL 8EH,#0
MOV DPTR,#0400H
MOV A,#1H
MOVX @DPTR,A
MOVX A,@DPTR
MOV WR_MODE,A
MOV OFFSET,#0
CALL OLEDINIT
CALL OLEDCLS
CALL POWER_START
CALL CLS_START
CALL LOGO_START
POWER_START:
MOV TMOD,#01010001B
MOV A,#0AEH /*set display ON/OF AF=ON AE=OF*/
CALL COMMAND
CALL LOGO
MOV A,#0AFH /*set display ON/OF AF=ON AE=OF*/
CALL COMMAND
MOV R0,#08H
POWER_REPEAT:
MOV TH0,#0FCH
MOV TL0,#0FFH
MOV TH1,#0FFH
MOV TL1,#0C0H
CLR P3.5
MOV IE,#88H
SETB TR1
SETB TR0
POWER_LOOP:
JNB TF0,$
CLR TF0
JBC F0,POWER_OK
SETB P3.5
MOV TH0,#0FCH
MOV TL0,#0FFH
CLR P3.5
SJMP POWER_LOOP
POWER_OK:
DJNZ R0,POWER_REPEAT
;CALL OLEDCLS
RET
CLS_START:
MOV TMOD,#01010001B
MOV WR_MODE,#1
MOV A,#0AEH /*set display ON/OF AF=ON AE=OF*/
LCALL COMMAND
CALL OLEDCLS
MOV A,#0AFH /*set display ON/OF AF=ON AE=OF*/
LCALL COMMAND
MOV WR_MODE,#0
MOV R0,#010H
CLS_REPEAT:
MOV TH0,#0FCH
MOV TL0,#008H
MOV TH1,#0FFH
MOV TL1,#0C0H
CLR P3.5
MOV IE,#88H
SETB TR1
SETB TR0
CLS_LOOP:
JNB TF0,$
CLR TF0
JBC F0,CLS_OK
SETB P3.5
MOV TH0,#0FCH
MOV TL0,#008H
CLR P3.5
SJMP CLS_LOOP
CLS_OK:
DJNZ R0,CLS_REPEAT
RET
;------------------------------------------------------;
LOGO_START:
MOV TMOD,#01010001B
MOV A,#0AEH /*set display ON/OF AF=ON AE=OF*/
CALL COMMAND
CALL DRAW_TEST
MOV A,#0AFH /*set display ON/OF AF=ON AE=OF*/
CALL COMMAND
LOGO_REPEAT:
MOV TH0,#0FFH
MOV TL0,#0D0H
MOV TH1,#0FFH
MOV TL1,#0C0H
CLR P3.5
MOV IE,#88H
SETB TR1
SETB TR0
LOGO_LOOP:
JNB TF0,$
CLR TF0
JBC F0,LOGO_OK
SETB P3.5
MOV TH0,#0FFH
MOV TL0,#0C0H
CLR P3.5
SJMP LOGO_LOOP
LOGO_OK:
MOV A,#0D3H /*set display offset*/
LCALL COMMAND
MOV A,OFFSET
CPL A
LCALL COMMAND
INC OFFSET
MOV A,OFFSET
CJNE A,#040H,LOGO_REPEAT
JMP LOGO_REPEAT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOGO:
MOV PAGETMP,#0B5H
MOV DPTR,#POWERON_LOGO
LOGOPAGE:
MOV A,PAGETMP
CALL COMMAND
MOV A,#000H
CALL COMMAND
MOV A,#010H
CALL COMMAND
MOV WR_NUM,#080H
CALL WRDB
DEC PAGETMP
MOV A,PAGETMP
CJNE A,#0B1H,LOGOPAGE
RET
DRAW_TEST:
MOV PAGETMP,#008H
MOV PAGEIN,#007H
MOV CHANGEXY,#000H
P_LOOP:
CALL C_XY
MOV R0,#10H
MOV WR_BYTE,#001H
DRAW_LOOP:
MOV A,WR_BYTE ;畫點
CALL SENDDATA
MOV A,WR_BYTE
RL A
MOV WR_BYTE,A
CJNE A,#00000001B,DRAW_LOOP ;畫斜線
DJNZ R0,DRAW_LOOP ;畫16次
DEC PAGEIN ;換頁畫
DJNZ PAGETMP,P_LOOP ;畫8次
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP_BIGNUM:
MOV WR_NUM,#08H
CALL WRDB
DEC PAGEIN
CALL C_XY
MOV WR_NUM,#08H
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRDB:
MOV A,WR_MODE
JZ WR_OK
CLR A
MOVC A,@A+DPTR
CPL A
JMP CPL_OK
WR_OK: CLR A
MOVC A,@A+DPTR
CPL_OK: CALL SENDDATA
INC DPTR
DJNZ WR_NUM,WRDB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OLEDCLS:
MOV WR_BYTE,#000H
MOV PAGETMP,#008H
MOV PAGEIN,#007H
MOV CHANGEXY,#000H
MOV A,WR_MODE
JZ PAGELOOP
MOV WR_BYTE,#0FFH
PAGELOOP:
CALL C_XY
MOV R0,#80H
CLSLOOP:MOV A,WR_BYTE ;*WRITE 0;
CALL SENDDATA
DJNZ R0,CLSLOOP
DEC PAGEIN
DJNZ PAGETMP,PAGELOOP
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 RST
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR RST
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB RST
RET
COMMAND:
CLR DC ;DC=LOW SEND COMMAND
CLR CS
CALL SENDDB
SETB CS
RET
SENDDB:
MOV TMP1,#008H
LOOP8: RLC A
MOV SDAT,C
SETB SCLK
NOP
NOP
NOP
NOP
NOP
CLR SCLK
DJNZ TMP1,LOOP8
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SENDDATA:
SETB DC
CLR CS
CALL SENDDB
SETB CS
;MOV A,#0E3H /*NOP COMMAND*/
;CALL COMMAND
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
POWERON_LOGO:
DB 00H, 00H, 00H, 00H, 1FH, 20H, 20H, 20H, 1FH, 00H, 20H, 3FH, 20H, 00H, 00H, 00H
DB 20H, 3FH, 24H, 2EH, 30H, 00H, 20H, 3FH, 20H, 20H, 1FH, 00H, 04H, 04H, 04H, 04H
DB 04H, 00H, 04H, 04H, 04H, 04H, 04H, 00H, 00H, 10H, 3FH, 00H, 00H, 00H, 18H, 21H
DB 22H, 24H, 18H, 00H, 1BH, 24H, 24H, 24H, 1BH, 00H, 09H, 06H, 1FH, 06H, 09H, 00H
DB 1FH, 24H, 24H, 34H, 03H, 00H, 02H, 0DH, 11H, 3FH, 01H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 80H, 40H, 40H, 40H, 80H, 00H, 40H,0C0H, 40H, 40H, 40H,0C0H
DB 40H,0C0H, 40H, 40H,0C0H, 00H, 40H,0C0H, 40H, 40H, 80H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 40H,0C0H, 40H, 00H, 00H,0C0H, 40H
DB 40H, 40H, 40H, 00H, 80H, 40H, 40H, 40H, 80H, 00H, 00H, 00H, 80H, 00H, 00H, 00H
DB 80H, 40H, 40H, 40H, 80H, 00H, 00H, 00H, 00H,0C0H, 40H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 06H, 09H, 08H, 08H, 0CH, 00H, 00H, 06H, 09H, 08H, 08H, 0CH
DB 00H, 08H, 0FH, 08H, 08H, 04H, 03H, 00H, 00H, 04H, 04H, 0FH, 00H, 00H, 00H, 00H
DB 06H, 08H, 09H, 09H, 06H, 00H, 03H, 04H, 08H, 08H, 04H, 03H, 00H, 00H, 06H, 08H
DB 09H, 09H, 06H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 48H, 26H, 30H, 01H, 3FH, 20H, 2FH, 20H, 3FH, 00H, 1FH, 00H, 7FH, 00H
DB 42H, 23H, 10H, 08H, 09H, 09H, 09H, 09H, 7CH, 0BH, 48H, 28H, 08H, 00H, 24H, 25H
DB 7FH, 45H, 44H, 01H, 7DH, 45H, 45H, 45H, 45H, 7DH, 00H, 00H, 00H, 3FH, 20H, 29H
DB 29H, 29H, 2BH, 69H, 2BH, 2DH, 29H, 21H, 21H, 00H, 00H, 00H, 00H, 00H, 00H ,00H
DB 00H, 00H, 00H, 00H, 18H, 08H, 88H, 88H, 70H, 00H, 00H, 18H, 08H, 88H, 88H, 70H
DB 00H, 08H,0F8H, 08H, 08H, 10H,0E0H, 00H, 00H, 08H, 08H,0F8H, 08H, 08H, 00H, 00H
DB 30H, 08H, 08H, 08H,0F0H, 00H,0E0H, 10H, 08H, 08H, 10H,0E0H, 00H, 00H, 30H, 08H
DB 08H, 08H,0F0H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 40H,07CH, 80H, 04H,0C8H, 10H,0E0H, 10H,0CCH, 00H,0C8H, 04H,0F8H, 00H
DB 00H,0FCH, 08H, 10H, 08H, 08H,0F8H, 10H, 00H,0E0H, 18H, 04H, 1CH, 00H, 60H, 80H
DB 0FCH, 00H, 84H, 04H, 24H, 24H,0FCH, 24H, 24H, 24H, 04H, 00H, 18H,0E0H, 00H, 00H
DB 00H, 08H, 04H,0F8H, 00H, 00H, 00H, 40H, 80H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
NUM1: DB 000H,042H,0FEH,002H,000H
NUM2: DB 042H,086H,08AH,092H,062H
NUM3: DB 044H,092H,092H,092H,06CH
NUM4: DB 00CH,034H,044H,0FEH,004H
NUM5: DB 0F4H,092H,092H,092H,00CH
NUM6: DB 07CH,092H,092H,092H,04CH
NUM7: DB 080H,080H,09EH,0A0H,0C0H
NUM8: DB 06CH,092H,092H,092H,06CH
NUM9: DB 064H,092H,092H,092H,07CH
NUM0: DB 07CH,08AH,092H,0A2H,07CH
BIG_NUM0:
DB 1FH, 3FH, 70H, 60H, 60H, 70H, 3FH, 1FH
DB 0F8H,0FCH, 0EH, 06H, 06H, 0EH,0FCH,0F8H
BIG_NUM1:
DB 00H, 08H, 18H, 3FH, 7FH, 00H, 00H, 00H
DB 00H, 06H, 06H,0FEH,0FEH, 06H, 06H, 00H
BIG_NUM2:
DB 18H, 38H, 70H, 60H, 61H, 73H, 3FH, 1EH
DB 1EH, 3EH, 76H,0E6H,0C6H, 86H, 06H, 06H
BIG_NUM3:
DB 18H, 38H, 71H, 61H, 61H, 73H, 3FH, 1FH
DB 18H, 1CH, 8EH, 86H, 86H,0CEH,0FCH, 78H
BIG_NUM4:
DB 00H, 00H, 03H, 0FH, 3CH, 7FH, 7FH, 00H
DB 30H,0F0H,0F0H, 30H, 30H,0FEH,0FEH, 30H
BIG_NUM5:
DB 3FH, 7FH, 63H, 63H, 63H, 63H, 61H, 60H
DB 18H, 1CH, 0EH, 06H, 06H, 8EH,0FCH,0F8H
BIG_NUM6:
DB 1FH, 3FH, 71H, 61H, 61H, 71H, 38H, 18H
DB 0F8H,0FCH,0CEH, 86H, 86H,0CEH,0FCH, 78H
BIG_NUM7:
DB 60H, 60H, 60H, 60H, 61H, 63H, 7FH, 7EH
DB 00H, 00H, 00H,0FEH,0FEH, 80H, 00H, 00H
BIG_NUM8:
DB 1EH, 3FH, 73H, 61H, 61H, 73H, 3FH, 1EH
DB 78H,0FCH,0CEH, 86H, 86H,0CEH,0FCH, 78H
BIG_NUM9:
DB 1EH, 3FH, 73H, 61H, 61H, 73H, 3FH, 1FH
DB 18H, 1CH, 8EH, 86H, 86H, 8EH,0FCH,0F8H
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -