Code:
' OLED-72x40_16F18446
' ====== FUSES =====================================================================================
' External oscillator
#CONFIG
__config _CONFIG1, _FCMEN_OFF & _CSWEN_OFF & _CLKOUTEN_OFF & _RSTOSC_EXT1X & _FEXTOSC_HS
__config _CONFIG2, _MCLRE_OFF & _PWRTS_PWRT_64 & _LPBOREN_OFF & _BOREN_OFF & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF
__config _CONFIG3, _WDTCPS_WDTCPS_31 & _WDTE_SWDTEN & _WDTCWS_WDTCWS_7 & _WDTCCS_LFINTOSC
__config _CONFIG4, _BBSIZE_BB512 & _BBEN_OFF & _SAFEN_OFF & _WRTAPP_OFF & _WRTB_OFF & _WRTC_OFF & _WRTD_OFF & _WRTSAF_OFF & _LVP_OFF
__config _CONFIG5, _CP_OFF
#ENDCONFIG
@ ERRORLEVEL -306
@ ERRORLEVEL -202
' ====== REGISTERS =================================================================================
ANSELB = %00000000
' ====== DEFINES ===================================================================================
DEFINE OSC 32
DEFINE NO_CLRWDT 1 ' don't waste cycles clearing WDT
DEFINE HSER_CLOERR 1 ' automatic clear overrun error
DEFINE I2C_SLOW 1 ' if >8MHz
' ====== VARIABLES =================================================================================
SDA VAR PORTB.5 ' I2C Clock
SCL VAR PORTB.6 ' I2C Data
' SSD1306 OLED 72x40 module (has built-in 10k pull-up on SDA/SCL)
I2CDevice CON $78
Page VAR BYTE ' OLED's Pages 0..4
' ====== SSD1306 I2C OLED initialization ===========================================================
PAUSE 500 ' let display settle
' Initializing command set
I2CWrite SDA,SCL,I2CDevice,[$00,$AE,$D5,$80,$A8,$3F,$D3,$00,$20,$00,$AD,$30,$8D,$14,$68,$A6,$A4,_
$A1,$C8,$DA,$12,$81,$7F,$D9,$22,$DB,$40,$2E,$AF]
PAUSEUS 50
' ====== PROGRAM STARTUP ===========================================================================
STARTUP:
Gosub CLEAR_DISPLAY_FULL
' ====== MAIN PROGRAM ==============================================================================
MAIN:
GOSUB SPLASH1
PAUSE 2000
GOSUB SPLASH2
PAUSE 2000
GOTO MAIN
END
' ====== CLEAR FULL DISPLAY ROUTINE ================================================================
CLEAR_DISPLAY_FULL:
I2CWrite SDA,SCL,I2CDevice,[$00,$21,28,99,$22,0,4]
FOR Page = 0 TO 4
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
NEXT Page
RETURN
' ====== SPLASH SCREEN DISPLAY =====================================================================
SPLASH1:
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,252,252,252,60,28,28,28,56,248,248,240,192,0,0,0,252,252,252,0,0,0,0,192,240,248,120,60,28,28,28,28,60,248,248,240,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,255,255,255,56,56,56,56,60,31,31,15,3,0,0,0,255,255,255,0,0,0,62,255,255,255,128,0,0,0,0,0,0,192,192,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,1,3,7,15,14,14,12,14,14,15,15,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,140,140,204,252,120,0,0,0,96,96,32,32,224,224,0,0,192,224,224,32,32,96,64,0,0,192,236,108,0,128,192,224,96,32,96,96,64,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,63,55,49,49,57,31,31,6,0,28,62,54,34,18,63,63,7,0,16,56,49,35,55,62,30,0,0,56,63,15,0,0,31,63,48,48,48,56,24,0,0]
RETURN
SPLASH2:
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,128,128,192,192,0,0,0,0,128,192,192,192,192,192,128,0,0,192,192,192,192,192,192,0,0,128,128,192,192,0,0,0,0,128,192,64,192,128,0,0,0,0,0,0,0,192,192,192,0,0,0,0,0,0,0,192,192,192,0,0,0,128,192,192,192,192,192,128,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,1,129,255,255,128,0,0,0,255,255,136,12,140,249,249,0,0,255,255,12,12,12,12,0,0,1,129,255,255,128,0,0,99,255,32,8,156,255,99,0,0,96,120,124,103,99,255,255,96,0,0,96,120,124,103,99,255,255,96,0,0,255,255,136,12,140,249,249,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0]
I2CWrite SDA,SCL,I2CDevice,[$40,_
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
RETURN
Bookmarks