Code:
'****************************************************************
'* Name : CRIUS_OLED_Test.pbp *
'* Author : Philtronix *
'* Notice : Copyright (c) 2015 Philtronix *
'* : All Rights Reserved *
'* Date : 15/06/2015 *
'* Version : 1.0 *
'* Notes : PIC18F2550 int osc @ 4mHz 3.3v *
'* : CRIUS OLED display 3.3v *
'****************************************************************
osccon = %01100010 'Int OSC @ 4mHz
adcon1 = %00001111 'All ports digital
ucon.3 = 0 'Disable USB port
ucfg.3 = 1 'Digital in RC4 & RC5
cmcon = 7 'Comparators off
led var LatC.0
scl var PortC.1
sda var PortC.2
dat var byte
counter var word
control con %01111000 'I2C slave address (write mode)
trisb = %11000000
PortB = %00000000
pause 500
trisc = %11111000 'PortC 0, 1, 2 outputs
PortC = %00000110 'scl & sda high to start
pause 2000
' gosub RESET:
gosub init_oled:
i2cwrite sda,scl,control,[$80,$AF] 'Display ON
pause 10
Start:
led = 1 'Code running
i2cwrite sda,scl,control,[$80,$A7] 'Inverse Display
pause 500
i2cwrite sda,scl,control,[$80,$A6] 'Normal Display
pause 20
' i2cwrite sda,scl,control,[$80,$21,$00,$40] 'Set columns
pause 20
' i2cwrite sda,scl,control,[$80,$22,$00,$04] 'Set pages
pause 500
for counter = 0 to 1023
i2cwrite sda,scl,control,[$40,$FF]
next
led = 0 'Code running
for counter = 0 to 1023
i2cwrite sda,scl,control,[$40,$00]
next
GOTO Start:
INIT_OLED:
i2cwrite sda,scl,control,[$80,$AE] 'Display OFF ****
pause 1
i2cwrite sda,scl,control,[$80,$2E] 'Deactivate scrolling
pause 1
i2cwrite sda,scl,control,[$80,$20,$10] 'Page addressing mode ****
pause 1
i2cwrite sda,scl,control,[$80,$A0] ' ****
' i2cwrite sda,scl,control,[$80,$A1] ' ****
pause 1
i2cwrite sda,scl,control,[$80,$A6] 'WHITE chars BLACK backround
' i2cwrite sda,scl,control,[$80,$A7] 'BLACK chars WHITE backround
pause 1
i2cwrite sda,scl,control,[$80,$81,$7F] 'Setup contrast XXXX
pause 1
i2cwrite sda,scl,control,[$80,$AF] 'Display on ****
pause 1
i2cwrite sda,scl,control,[$80,$40]
pause 1
' i2cwrite sda,scl,control,[$80,$C0] 'Flip display vertically ****
i2cwrite sda,scl,control,[$80,$C8] 'Flip display vertically ****
pause 1
' i2cwrite sda,scl,control,[$80,$A0] ' ****
i2cwrite sda,scl,control,[$80,$A1] ' ****
pause 1
i2cwrite sda,scl,control,[$80,$00,$80,$10] 'Set column start address ****
pause 1
i2cwrite sda,scl,control,[$80,$B0] 'Set page start address ****
pause 1
return
RESET:
i2cwrite sda,scl,control,[$80,$AE] 'Display OFF
pause 10
I2Cwrite sda,scl,control,[$80,$20,$02] 'Page addressing mode
pause 10
i2cwrite sda,scl,control,[$80,$B0] 'Page start address
pause 10
i2cwrite sda,scl,control,[$80,$00,$80,$10] 'Set column start address
pause 10
i2cwrite sda,scl,control,[$80,$A0] 'Address 0 mapped to SEG 0
pause 10
' i2cwrite sda,scl,control,[$80,$A1] 'Address 0 mapped to SEG 127
pause 10
i2cwrite sda,scl,control,[$80,$D3,$00] 'Display offset
pause 10
pause 10
i2cwrite sda,scl,control,[$80,$40] 'Display start line
Pause 10
i2cwrite sda,scl,control,[$80,$C0] 'Output scan direction
pause 10
i2cwrite sda,scl,control,[$80,$A6] 'WHITE chars BLACK backround
pause 10
i2cwrite sda,scl,control,[$80,$81,$7F] 'Contrast control
pause 10
i2cwrite sda,scl,control,[$80,$A4] 'Entire display OFF
pause 10
i2cwrite sda,scl,control,[$80,$A6] 'Normal display
pause 10
i2cwrite sda,scl,control,[$80,$A3,$00,$40] 'Set vertical scroll
pause 10
i2cwrite sda,scl,control,[$80,$20,$00] 'Horizontal addressing mode
' i2cwrite sda,scl,control,[$80,$20,$01] 'Vertical addressing mode
RETURN
Bookmarks