OLED 128X96 cheap china lcd


Closed Thread
Results 1 to 11 of 11

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    Quote Originally Posted by Denner View Post
    Hello,
    To display the data you send through I2C or SPI, I have a problem and hope you can help me.
    I have altered Joe's original code to use I2C for comms. I used PIC16F88 for the below code. I used a monochrome display running ssd1306 driver/controller.

    Code:
    ;***************************CONFIG SETUP***************************
    ;__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC 
    ;__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V   
    '*************************************************  ******************************
       #CONFIG     
        __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_ON & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO
        #ENDCONFIG
        
    '==========================MCU SETUP============================================  
    DEFINE OSC 8
    DEFINE I2C_HOLD 1
    'Include "modedefs.bas"
    'DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
    'DEFINE ADC_CLOCK 0     ' Work around that sets Vref bits in ADCON1
    'DEFINE ADC_SAMPLEUS 50 ' ADC sampling time (uSec)
    'ADCON0=ADCON0 | %11000000  ' Work around that sets ADCS in ADCON0
    'CM1CON0 = 0
    'CM2CON0 = 0
    'ANSEL = 0 ' set ANx as analog 
    'ANSELH = 0
    'ADCON1 = %10000000 ' Right justified results for 10 bits
    'ADCON0 = %10000001 ' Internal OSC, AN0, Configure and turn on A/D Module
    'OPTION_REG=7
    'INTCON = 0
     
        TrisB = %00010000
        CMCON = 7                       ' Turn Off Comparators
        ADCON1 = 7                      ' Disable A/D converter    
        ANSEL = %00000000               ' set all analog pins to digital
        OSCCON = %01110000              ' Set PIC16F88 to 4MHz = %01100000 or
                                        ' 8MHz = %01110000
    
    '============================I/O SETUP==========================================
     BT var PortB.4
    LED var PortB.3
    
    '================================usuart========================================
    
    '==============================BAUD SETUP=======================================
    
    I2CDevice var byte
    SCL var PortA.3         ' I2C Clock  PortB.4
    SDA var PortA.2         ' I2C Data   PortB.1
    TEXT VAR BYTE[20]
    LENGTH VAR BYTE[2]
    DC VAR Byte' "DATA OR COMMAND", $40=DATA; $0=COMMAND --> changed from bit to byte
    LCD_DATA VAR BYTE
    COM VAR BYTE'COMMAND
    'PAGE VAR BYTE'LCD PAGE(B0 TO B7)
    
    I VAR BYTE
    J VAR BYTE
    X VAR BYTE' LCD POSITION X(0 TO 127)
    Y VAR BYTE'LCD POSITION Y(0 TO 7)
    CLEAR
    '=============================================================================
    'PAGE = $B0
    
    I2CDevice = $78      ' X/Y/Z = $3C, Display = $78,
    
    PAUSE 20
    
    GOSUB INIT
    GOSUB CLEAR_LCD
    GOSUB TITLE
    
    
    MAIN:
    
    COM=$A6:GOSUB SEND_COMMAND '$A6=NORMAL MODE;$A7=INVERSE MODE
    'PAUSE 100
    COM=$2E:GOSUB SEND_COMMAND
    COM=$27:GOSUB SEND_COMMAND
    COM=$00:GOSUB SEND_COMMAND
    COM=$03:GOSUB SEND_COMMAND
    COM=$04:GOSUB SEND_COMMAND
    COM=$06:GOSUB SEND_COMMAND
    COM=$00:GOSUB SEND_COMMAND
    COM=$FF:GOSUB SEND_COMMAND
    COM=$2F:GOSUB SEND_COMMAND
    'PAUSE 10000
    
    End
    GOTO MAIN
    
    
    '=========================lcd initialization====================================
    INIT:
    
    COM=$AE:GOSUB SEND_COMMAND' DISPALY OFF
    COM=$20:GOSUB SEND_COMMAND' HORIZONTAL MODE
    COM=$00:GOSUB SEND_COMMAND
    COM=$40:GOSUB SEND_COMMAND' DISPLAY START AT 0
    COM=$A1:GOSUB SEND_COMMAND' REMAP 0-127 ----> Mirror display
    COM=$C8:GOSUB SEND_COMMAND' SCAN DIRECTION
    'COM=$DA:GOSUB SEND_COMMAND' COM PINS ------> Not Sure what this does
    'COM=$10:GOSUB SEND_COMMAND' COM PINS ------> Not Sure what this does
    COM=$A4:GOSUB SEND_COMMAND' DISPLAY ON
    COM=$A7:GOSUB SEND_COMMAND' $A6=NORMAL MODE;$A7=INVERSE MODE
    COM=$AF:GOSUB SEND_COMMAND' DISPLAY ON
    
     return
    '===============================================================================
    '==============================clear lcd========================================
    CLEAR_LCD:
    
    
       FOR J=0 TO 7 
        FOR I=0 TO 127
            LCD_DATA=$00:GOSUB SEND_DATA  ' was $00
        NEXT I
       NEXT J                             
    
    RETURN 
    
    '****************SEND COMMAND************************************************
    
    SEND_COMMAND:
    dc=$0
    'SHIFTOUT SDA,SCL,1,[DC\1]'SEND COMMAND BIT(D/C=0)
    'SHIFTOUT SDA,SCL,1,[COM\8]
    
    high LED
    I2CWrite SDA,SCL,I2CDevice,DC,[COM]
    
    Low led
    dc=$40
    RETURN 
    '*****************************************************************************
    
    '======================Send data===============================================
    SEND_DATA:
    DC=$40
    'SHIFTOUT SDA,SCL,1,[DC\1]'SEND DATA BIT(D/C=1)
    'SHIFTOUT SDA,SCL,1,[LCD_DATA\8]
    
    high LED
    I2CWrite SDA,SCL,I2CDevice,DC,[LCD_DATA]
    
    Low led
    RETURN
    '===============================================================================
    '=============================FILL=============================================
    FILL:
    FOR J=0 TO 7
    FOR I=0 TO 127
    LCD_DATA=$FF:GOSUB SEND_DATA
    NEXT I
    NEXT J
    RETURN
    '===============================================================================
    '=========================TITLE=================================================
    TITLE:
    X=0:Y=0 :GOSUB SET_XY
    FOR I=0 TO 127
    LOOKUP I,[$00,$40,$60,$50,$7E,$50,$60,$40,$02,$06,$0E,$1E,$3E,$00,$00,$00,_
    $00,$00,$00,$00,$00,$1F,$3F,$60,$60,$60,$60,$60,$60,$3C,$1C,$00,_
    $00,$7F,$7F,$61,$61,$61,$61,$61,$61,$3F,$1E,$00,$00,$1E,$3F,$61,_
    $61,$61,$61,$61,$61,$38,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
    $00,$00,$00,$00,$00,$00,$00,$1F,$3F,$60,$60,$60,$60,$60,$60,$3C,_
    $1C,$00,$00,$1E,$3F,$61,$61,$61,$61,$61,$61,$38,$18,$00,$00,$3F,_
    $7F,$60,$18,$06,$06,$18,$60,$7F,$3F,$00,$00,$00,$00,$00,$00,$00,_
    $00,$00,$00,$1C,$63,$41,$5D,$41,$5D,$41,$5D,$41,$5D,$41,$7F,$00],LCD_DATA
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    X=0:Y=1 :GOSUB SET_XY
    for i=0 to 127
    lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
    $00,$00,$00,$00,$00,$F8,$FC,$06,$06,$06,$C6,$C6,$C6,$FC,$F8,$00,_
    $00,$FE,$FE,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00,$18,$1C,$86,_
    $86,$86,$86,$86,$86,$FC,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
    $00,$00,$00,$00,$00,$00,$00,$F8,$FC,$06,$06,$06,$C6,$C6,$C6,$FC,_
    $F8,$00,$00,$18,$1C,$86,$86,$86,$86,$86,$86,$FC,$78,$00,$00,$FE,_
    $FE,$00,$00,$00,$00,$00,$00,$FE,$FE,$00,$00,$00,$00,$00,$00,$00,_
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00],lcd_data
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    X=0:Y=3:GOSUB SET_XY
    for i=0 to 127
    lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$7E,$C3,$C3,$C3,$C3,_
    $C3,$C3,$71,$30,$00,$00,$7F,$FF,$C3,$C3,$C3,$C3,$C3,$C3,$C3,$C3,_
    $00,$00,$7F,$FF,$C1,$C1,$C1,$C1,$C1,$C1,$FF,$7F,$00,$00,$7F,$FF,_
    $C3,$C3,$C3,$C3,$C3,$C3,$7E,$3C,$00,$00,$3F,$7F,$C0,$C0,$C0,$C0,_
    $C0,$C0,$70,$30,$00,$00,$FF,$FF,$03,$03,$03,$03,$03,$03,$FF,$FF,_
    $00,$00,$C0,$C0,$C0,$C0,$FF,$FF,$C0,$C0,$C0,$C0,$00,$00,$FF,$FF,_
    $0C,$0C,$03,$03,$00,$00,$FF,$FF,$00,$00,$3F,$7F,$C0,$C0,$C0,$C1,_
    $C1,$C1,$79,$39,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00],lcd_data
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    X=0:Y=4:GOSUB SET_XY
    for i=0 to 127
    lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$30,$38,$0C,$0C,$0C,$0C,_
    $0C,$0C,$F8,$F0,$00,$00,$F8,$FC,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,_
    $00,$00,$FC,$FC,$80,$80,$80,$80,$80,$80,$FC,$FC,$00,$00,$FC,$FC,_
    $80,$C0,$60,$30,$18,$0C,$04,$00,$00,$00,$F0,$F8,$0C,$0C,$0C,$0C,_
    $0C,$0C,$38,$30,$00,$00,$FC,$FC,$00,$00,$00,$00,$00,$00,$FC,$FC,_
    $00,$00,$0C,$0C,$0C,$0C,$FC,$FC,$0C,$0C,$0C,$0C,$00,$00,$FC,$FC,_
    $00,$00,$00,$00,$C0,$C0,$FC,$FC,$00,$00,$F0,$F8,$0C,$0C,$0C,$8C,_
    $8C,$8C,$F8,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00],lcd_data
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    X=0:Y=5:GOSUB SET_XY
    for i=0 to 127
    lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$3F,$30,$30,$30,$30,_
    $30,$30,$30,$30,$00,$00,$0F,$1F,$30,$30,$30,$30,$30,$30,$1F,$0F,_
    $00,$00,$1F,$3F,$30,$30,$30,$30,$30,$30,$1F,$0F,$00,$00,$00,$00,_
    $00,$00,$00,$0F,$1F,$30,$30,$30,$30,$30,$30,$1C,$0C,$00,$00,$30,_
    $30,$30,$30,$3F,$3F,$30,$30,$30,$30,$00,$00,$0F,$1F,$30,$30,$30,_
    $30,$30,$30,$1E,$0E,$00,$00,$3F,$3F,$03,$03,$00,$00,$00,$00,$3F,_
    $3F,$00,$00,$1F,$3F,$30,$30,$30,$30,$30,$30,$3F,$1F,$00,$00,$3F,_
    $3F,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00],lcd_data
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    X=0:Y=6:GOSUB SET_XY
    for i=0 to 127
    lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$C0,$C0,$C0,$C0,_
    $C0,$C0,$00,$00,$00,$00,$FC,$FE,$03,$03,$03,$03,$03,$03,$FE,$FC,_
    $00,$00,$FF,$FF,$E0,$F0,$D8,$CC,$C6,$C3,$81,$00,$00,$00,$00,$00,_
    $00,$00,$00,$0C,$8E,$C3,$C3,$C3,$C3,$C3,$C3,$7E,$3C,$00,$00,$03,_
    $03,$03,$03,$FF,$FF,$03,$03,$03,$03,$00,$00,$FC,$FE,$03,$03,$03,_
    $63,$63,$63,$7E,$7C,$00,$00,$FF,$FF,$00,$00,$C0,$C0,$30,$30,$FF,_
    $FF,$00,$00,$FF,$FF,$60,$60,$60,$60,$60,$60,$FF,$FF,$00,$00,$FF,_
    $FF,$03,$03,$03,$03,$03,$03,$03,$03,$00,$00,$00,$00,$00,$00,$00],lcd_data
    lcd_data=lcd_data rev 8
    GOSUB SEND_DATA
    NEXT I
    
    RETURN
    '===========================================SET X AND Y=========================
    SET_XY:
    COM=$21:GOSUB SEND_COMMAND
    COM=X:GOSUB SEND_COMMAND
    COM=127:GOSUB SEND_COMMAND
    COM=$22:GOSUB SEND_COMMAND
    COM=Y:GOSUB SEND_COMMAND
    COM=Y:GOSUB SEND_COMMAND
    RETURN
    '===============================================================================
    END

  2. #2
    Join Date
    Nov 2003
    Location
    Sao Paulo - Brazil
    Posts
    92


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    Hi Guys,

    thank you for sharing your code.

    I have 3 displays bought from the following selle on e-bay :

    http://www.ebay.com/itm/0-96-128x64-...item1e649b61d1

    I have one doubt :

    What pins are you using for IIC connection ?

    I can see :

    SCL var PortA.3 ' I2C Clock PortB.4
    SDA var PortA.2 ' I2C Data PortB.1

    The RES is not necessary ? Should this grounded or connected to vcc ?

    Thank you !

    Regards,

    Sérgio

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    Hi,
    I've got one from that very same seller and I've tried to get it to work numerous times. First with code of my own then with code from this thread - no luck.

    I've found that mine came strapped for 4 wire serial, which is the mode I tried coding for while I'm pretty sure that the code posted here is for 3 wire serial. I changed the solder straps on the display but no luck.

    The datasheet for the controller chip has notes on what pins to use, not use, tie high or tigh low depending on which mode it's supposed to operate in.

    Anyway, I've pretty much given up on it (mine is probably busted), if you get yours going I'd appreciate it if would post the details so I can give it a try on mine, thanks!

    /Henrik.

  4. #4
    Join Date
    Feb 2010
    Posts
    17


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    Hi all,
    In the code I posted I'm using the picbasic SHIFTOUT function nothing more or less very simple
    SDA var PORTA.2 'pin 4 output
    SCL VAR PORTA.3 'pin 5 clock
    The above pins are assigned.
    My display Has 3 junpers in the back mrked BS0,BS1 AND BS2. I solder BS2 , BS0 and BS1 are off.
    When I started using this display I tried using I2C but with no luck then switched to SPI using SHIFTOUT.
    SDA and SCL does not mean I'm using I2c just variables I created when I started hoping to use I2C but failed I never renamed them.
    Hope this helps.

  5. #5
    Join Date
    Feb 2010
    Posts
    17


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    correction to the above:
    BS0=1;BS1=0BS2=0.
    Sorry.
    Regards,

    Joe

  6. #6


    Did you find this post helpful? Yes | No

    Default Re: OLED 128X96 cheap china lcd

    Quote Originally Posted by srspinho View Post
    Hi Guys,

    thank you for sharing your code.

    I have 3 displays bought from the following selle on e-bay :

    http://www.ebay.com/itm/0-96-128x64-...item1e649b61d1

    I have one doubt :

    What pins are you using for IIC connection ?

    I can see :

    SCL var PortA.3 ' I2C Clock PortB.4
    SDA var PortA.2 ' I2C Data PortB.1

    The RES is not necessary ? Should this grounded or connected to vcc ?

    Thank you !

    Regards,

    Sérgio
    Sorry, the comment:

    SCL var PortA.3 ' I2C Clock PortB.4
    SDA var PortA.2 ' I2C Data PortB.1

    Should read:

    SCL var PortA.3 ' I2C Clock PortA.3
    SDA var PortA.2 ' I2C Data PortA.2

    RES is not necessary in my example as my display only has 4 pins.
    http://www.ebay.com.au/itm/390707779100

    Regards,
    Mac

Similar Threads

  1. Master SPI interface to LCD/OLED??
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 19th September 2009, 23:44
  2. Cheap Serial LCD ?
    By Sam in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 19th August 2009, 01:18
  3. OLED 128x128 color display
    By Ron Marcus in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 21st May 2007, 01:45
  4. Replies: 6
    Last Post: - 4th April 2007, 07:33
  5. Need cheap i2c LCD for 16F877a
    By CodeShredder in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 6th December 2006, 01:25

Members who have read this thread : 5

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts