ST7565 GLCD Support

Coding and general discussion relating to user created compiler modules

Moderators: David Barker, Jerry Messina

skartalov
Posts: 37
Joined: Fri Apr 09, 2010 10:50 am
Location: BULGARIA

ST7565 GLCD Support

Post by skartalov » Tue Mar 12, 2013 2:17 pm

I succeed to run the GLCD using ST7565 controller.
These GLCDs are very cheap ($12), 128x64 pixels resolution, they have everything integrated and they need just 3,3V power supply.

The LCD module:
http://www.mtech-bg.com/WO12864C2.pdf

The ST7565 Datasheet:

http://www.mtech-bg.com/ST7565P.pdf

This LCD work with the same code for SSD1306 controller. The only difference is the initialization sequence, which I found to be:

Code: Select all

WriteCommand($ae)
    WriteCommand($a3)   //Bias set 
    WriteCommand($a0)   //ADC Select -> Normal        
    WriteCommand($c8)   //Common Output Mode Select -> Normal
    WriteCommand($25)   // Vo Voltage Reg VALUE 
    WriteCommand($81)   // Electronic Volume Control
    WriteCommand($15)   // Value 50 (0-64)
    WriteCommand($2f)   // Power Controller ALL ON internals   
    WriteCommand($40)   //Start address 00                   
    WriteCommand($B0)   // Page 0
    WriteCommand($af)
Image

Image

I would like to include this controller in the GLCD.bas, but I still do not have enough knowledge of how to do that.

Please, someone can explain? Or to do it for me?
I will support with working code, and later test of the GLCD library to confirm if it is OK!

skartalov
Posts: 37
Joined: Fri Apr 09, 2010 10:50 am
Location: BULGARIA

Post by skartalov » Thu Mar 21, 2013 11:12 am

And here it comes the final design of my device.
The are contrast and brighness function for the display.
The the brighness, I use PWM to power the LCD LED's.

Image

User avatar
David Barker
Swordfish Developer
Posts: 1214
Joined: Tue Oct 03, 2006 7:01 pm
Location: Saltburn by the Sea, UK
Contact:

Post by David Barker » Thu Mar 21, 2013 5:19 pm

Great work! - perhaps you would consider sharing your code on the wiki?

http://www.sfcompiler.co.uk/wiki

> I would like to include this controller in the GLCD.bas, but I
> still do not have enough knowledge of how to do that.

if you take a look at "GLCD.bas" you will see a list of devices, such as

Code: Select all

#if GLCD_MODEL = KS0108
include "KS0108.bas"                
public dim
   Pos as KS0108.Pos, 
   Cls as KS0108.Cls,
   SetPixel as KS0108.SetPixel,
   WriteByte as KS0108.WriteByte,
   ReadByte as KS0108.ReadByte,
   GetPixel as KS0108.GetPixel
#endif
So you need ti implement a basic driver and add it to "GLCD.bas". For example:

Code: Select all

#if GLCD_MODEL = MYDRIVER
include "MyDriver.bas"                
public dim
   Pos as MyDriver.Pos, 
   Cls as MyDriver.Cls,
   SetPixel as MyDriver.SetPixel
#endif
It's some time since I worked on a driver, but I think the minimum implementation would be:

Code: Select all

   Pos as <driver>.Pos,
   Cls as <driver>.Cls
   SetPixel as <driver>.SetPixel
If you implement the above, the GLCD module should be able to handle graphics primitives and variable size font for you. If not implementing byte read and writes, then make sure you declare:

Code: Select all

GLCD_PIXEL_08
in you main driver code.

skartalov
Posts: 37
Joined: Fri Apr 09, 2010 10:50 am
Location: BULGARIA

Post by skartalov » Wed Apr 03, 2013 2:14 pm

Thanks David,

following your advices, I suceed to integrate the SSD1306 driver into SwordFish (See my other topic).

Next I will make the ST7565R driver and share with everyone.

skartalov
Posts: 37
Joined: Fri Apr 09, 2010 10:50 am
Location: BULGARIA

Post by skartalov » Thu Apr 04, 2013 8:45 am

As I promised, here it is the library for ST7565R controller! :-)
It uses 6800 interface mode, and supports all graphics shape commands, as well as SetImage, Write Text , etc.

Add ST7565R controller into device select option in GLCD.bas:

Code: Select all

// validate model...
#option GLCD_MODEL = ST7565R
#IF Not (GLCD_MODEL in (KS0108, S1D10605, S1D15G00, SED1520, S1D13700, KS0713, SSD1306,ST7565R))
   #ERROR GLCD_MODEL, "Invalid option. GLCD model not recognized."
#ENDIF
Then add the ST7565R definition in GLCD.bas:

Code: Select all

// import ST7565R driver...
#IF GLCD_MODEL = ST7565R
Include "ST7565R.bas"                
Public Dim
   Pos As ST7565R.Pos, 
   Cls As ST7565R.Cls,
   SetPixel As ST7565R.SetPixel,
   WriteByte As ST7565R.WriteByte,
   ReadByte As ST7565R.ReadByte,
   GetPixel As ST7565R.GetPixel,
   InitLCD As ST7565R.InitLCD
#ENDIF
Write program named "ST7565R.bas" and store it into your swordfish user library folder:

Code: Select all

Module ST7565R

// NOTE: This driver uses 6800 interface mode, therefore the signals must be read as follow:
// RD -> E
// WR -> RW

// import the graphics module...
#define GLCD_PIXEL_01
#define GLCD_COLOR_01
#define GLCD_XY_08
Include "Graphics.bas"   
Include "system.bas"   

// default module options - user options can override these values...
#option GLCD_DATA = PORTD        // data port
#option GLCD_RS = PORTA.1        // RESET pin
#option GLCD_WR = PORTA.3        // 
#option GLCD_RD = PORTA.4        // 
#option GLCD_CS = PORTA.0       // chip select
#option GLCD_DC = PORTA.2
#option GLCD_ASPECT_RATIO = 80   // aspect ratio, smaller number will squeeze y for GLCD circles and box
#option GLCD_INIT_DELAY = 100    // initialisation delay (ms)

// validate data port...
#if IsOption(GLCD_DATA) 
   #if Not IsValidPort(GLCD_DATA)
      #error GLCD_DATA, "Invalid option. DATA must be a valid port name."
   #endif
   #ifdef GLCD_DATA@ Then
      #error GLCD_DATA@, "Invalid option. DATA port cannot be a single bit value."
   #endif
#endif

#if IsOption(GLCD_RS) And Not IsValidPortPin(GLCD_RS) 
   #error GLCD_RS, "Invalid option. RS must be a valid port pin."
#endif

#if IsOption(GLCD_WR) And Not IsValidPortPin(GLCD_WR) 
   #error GLCD_WR, "Invalid option. WR must be a valid port pin."
#endif

#if IsOption(GLCD_RD) And Not IsValidPortPin(GLCD_RD) 
   #error GLCD_RD, "Invalid option. RD must be a valid port pin."
#endif

#if IsOption(GLCD_CS) And Not IsValidPortPin(GLCD_CS) 
   #error GLCD_CS, "Invalid option. CS must be a valid port pin."
#endif

#if IsOption(GLCD_DC) And Not IsValidPortPin(GLCD_DC) 
   #error GLCD_DC, "Invalid option. DC must be a valid port pin."
#endif

// validate initialisation delay...
#if IsOption(GLCD_INIT_DELAY)
   #if Not (GLCD_INIT_DELAY in (0 to 1000))
      #error GLCD_INIT_DELAY, "Invalid option. GLCD initialize delay must be between 0 and 1000 (ms)."
   #endif
#endif 

// now create Data TRIS...
#option _GLCD_DATA_TRIS = GetTRIS(GLCD_DATA)

// GLCD width and height...
Public Const
   GLCDWidth = 128,
   GLCDHeight = 64

// x, y position...
Public Dim
   Pos As TPosition
  
Const
   cmdPage = $B0,
   GLCDDelay = GLCD_INIT_DELAY     

// port and pin settings, these are brought into
// the program by using the above options...
Dim        
   DATA As GLCD_DATA,           
   TRISData As _GLCD_DATA_TRIS, 
   RS As GLCD_RS.GLCD_RS@,      
   RD As GLCD_RD.GLCD_RD@,     
   WR As GLCD_WR.GLCD_WR@,      
   CS As GLCD_CS.GLCD_CS@,   
   DC As GLCD_DC.GLCD_DC@    

{
****************************************************************************
* Name    : WaitForIdle (PRIVATE)                                          *
* Purpose : Block further GLCD access until signalled ready.               *
****************************************************************************
}     
Sub WaitForIdle()    
   TRISData = $FF   
   DC=0
   WR=1
   CS=0 
   RD=1
   While DATA.7=1
   Wend
   RD=0
   'CS=1
End Sub 
{
****************************************************************************
* Name    : SetData (PRIVATE)                                              *
* Purpose : Write a data byte to GLCD                                      *
****************************************************************************
}     
Sub SetData(pData As Byte) 
   WaitForIdle
   TRISData=$00
   DATA = pData
   DC=1
   WR=0
   'CS=0            
   RD=1
   DelayUS(1)
   RD=0
   CS=1
End Sub

{
****************************************************************************
* Name    : GetData (PRIVATE)                                              *
* Purpose : Read byte from GLCD                                            *
****************************************************************************
}     
Function GetData() As Byte
   WaitForIdle      
   TRISData = $FF   
   DC=1
   WR=1
   'CS=0 
   RD=1
   DelayUS(1)
   Result = DATA    // get the data
   RD=0
   CS=1
End Function 
  
{
****************************************************************************
* Name    : Command (PRIVATE)                                              *
* Purpose : Write a command byte to GLCD                                   *
****************************************************************************
}     
Sub Command(pCommand As Byte) 
   WaitForIdle
   TRISData=$00           
   DATA = pCommand        
   DC=0
   WR=0
   'CS=0                   
   RD=1             
   DelayUS(1)
   RD=0
   CS=1
End Sub

{
****************************************************************************
* Name    : SetPosition (PRIVATE)                                          *
* Purpose : Set GLCD x and y positions                                     *
****************************************************************************
}     
Sub SetPosition()
   Command(cmdPage Or Pos.y)   // set y position
   Command($00 + (Pos.x And $0F))
   Command($10+((Pos.x>>4)And $0F))	  
End Sub
{
****************************************************************************
* Name    : WriteByte                                                      *
* Purpose : Write a byte at x, page                                        *
****************************************************************************
} 
Public Sub WriteByte(pValue As Byte)
   SetPosition
   SetData(pValue)
End Sub 
{
****************************************************************************
* Name    : ReadByte                                                       *
* Purpose : Read a byte at x, page                                         *
****************************************************************************
} 
Public Function ReadByte() As Byte
   SetPosition
   GetData
   Result = GetData
End Function
{
****************************************************************************
* Name    : SetPixel                                                       *
* Purpose : Set pixel at pixel location x,y                                *
****************************************************************************
} 
Public Sub SetPixel(pX, pY As Byte)
   Dim YBit As Byte
   Dim Pixel As Byte
   
   If (pX < GLCDWidth) And (pY < GLCDHeight) Then

      YBit = 1 << (pY Mod 8)
      Pos.y = pY / 8
      Pos.x = pX
   
      SetPosition
      GetData
      Pixel = GetData  

           
      // pen is white...
      If Pen.Color = 0 Then
         If Pen.Mode = pmCopy Then
            yBit = Not yBit
            Pixel = Pixel And YBit
         EndIf
   
      // pen is black...
      Else

         // pen copy or merge...
         If Pen.Mode <> pmXOR Then
            Pixel = Pixel Or yBit
      
         // pen XOR
         Else
            If (Pixel And YBit) = 0 Then
               Pixel = Pixel Or yBit
            Else
               yBit = Not yBit
               Pixel = Pixel And YBit
            EndIf      
         EndIf
      EndIf

      SetPosition
      SetData(Pixel)
   EndIf
End Sub
{
****************************************************************************
* Name    : GetPixel                                                       *
* Purpose : Return pixel colour at pixel position x, y                     *
****************************************************************************
}
Public Function GetPixel(pX, pY As Byte) As TColor
   Dim Pixel As Byte
   Pos.y = pY / 8
   Pos.x = pX
   SetPosition
   GetData
   Pixel = GetData >> (pY Mod 8) 
   Result = Pixel.0  
End Function
{
****************************************************************************
* Name    : Cls                                                            *
* Purpose : Clear the GLCD screen                                          *
****************************************************************************
} 
Public Sub Cls()
   Dim x, y As Byte
   For y=$b0 To $b7
    Command(y)
    Command($00)
    Command($10)
    For x=0 To 127
        SetData(0)
    Next
   Next             
End Sub
     
{
****************************************************************************
* Name    : Initialize                                                     *
* Purpose : Configure the OLED before use                                  *
****************************************************************************
} 
Public Sub InitLCD()
   Pos.x = 0
   Pos.y = 0  
   DelayMS(GLCDDelay) 
   Output(RD)         
   Output(RS)         
   Output(WR)         
   Output(CS)        
   Output(DC)
   Low(RS) DelayMS(10) High(RS)
   DelayMS(50)
   RD=0 WR=0 DC=1 CS=1
 
    Command($ae)
    Command($a1)   //Bias set $a3 
    Command($a0)   //ADC Select -> Normal        
    Command($c8)   //Common Output Mode Select -> Normal
    Command($25)   // Vo Voltage Reg VALUE 
    Command($81)   // Electronic Volume Control
    Command($24)   // Value $15 (0-64)
    Command($2f)   // Power Controller ALL ON internals   
    Command($40)   //Start address 00                   
    Command($B0)   // Page 0
    Command($af)
End Sub 


In your program enter:

Code: Select all

#option GLCD_MODEL = ST7565R
and then in main code start with:

Code: Select all

GLCD.InitLCD()
And you are ready to have fun!

(Use #option to declare the ST7565R pinouts in your setup)

Image

raspen
Posts: 9
Joined: Thu Apr 30, 2020 2:28 pm

Re: ST7565 GLCD Support

Post by raspen » Mon May 18, 2020 6:06 pm

Hello All,

I know this is an old post, but I am trying to connect a EA DOGM128W-6 GLCD (ST7665R) to a PIC 18F4550.
After 2 weeks of no success and frustration, I am reaching out for help.
Has anyone successfully connected one of these GLCDs to a PIC using Swordfish Basic?

Also can anyone explain if I need an external oscillator?


Here is my code:

Device = 18F4550 // select device
Clock = 8 //KEEP THIS - MUST HAVE //Do I need an external Oscilator?????

// optional - wait for intosc freq stable bit (the module defaults to not waiting)
//'#option _INTOSC_IOFS_WAIT = true

Include "intOSC.bas" //KEEP THIS HERE - MUST HAVE

// User options
#Option GLCD_MODEL = ST7565R // GLCD driver
#option GLCD_SCREEN_WIDTH = 128 // Screen Width in Pixels
#option GLCD_SCREEN_HEIGHT = 64 // Screen Height in Pixels

#option GLCD_DATA = PORTD // data port //not used??????
#option GLCD_RS = PORTB.1 // RESET pin
#option GLCD_WR = PORTB.4 //SI serial data
#option GLCD_RD = PORTB.3 // SCL serial clock
#option GLCD_CS = PORTB.0 // chip select aka CS1
#option GLCD_DC = PORTB.2 // A0 data command
#option GLCD_ASPECT_RATIO = 80 // aspect ratio, smaller number will squeeze y for GLCD circles and box
#option GLCD_INIT_DELAY = 100 //initialization delay (ms)

// Modules
Include "glcdra.bas" // main GLCD module
Include "graphics.bas" // support for GLCD
Include "Bitmaps3.bas" // support for GLCD
Include "utils.bas" // support to make all MCU pins Digital
Include "Arial.bas" // ArialFont for GLCD
Include "setdigitalio.bas"
Include "ST7565R.bas"

TRISA = %00000000 //
TRISB = %00000000 // Set all Ports output
TRISC = %00000000 //
TRISD = %00000000
TRISE = %00000000

SetAllDigital () // set MCU pins as digital
GLCD.InitLCD()

// Demo pattern on GLCD
// GLCD.Cls // clear GLCD display
// GLCD.Rectangle(20,20,107,43) // draws a rectangle on all corners of display (X,Y,X,Y)
// GLCD.Line(6,6,20,60) // draws line (left of screen)
// GLCD.Line(125,2,105,2) // draws line (top right of screen)
// GLCD.Ellipse(40,32,20,30) // draws Ellipse
// GLCD.Circle(94,25,20) // draws Circle

GLCD.SetFont(ArialBold) // set font BOLD
GLCD.WriteAt(10,10,"IT WORKS") // write String to GLCD at x=60 y=50
GLCD.WriteAt(10,30,"IM HERE") // write String to GLCD at x=60 y=50
GLCD.WriteAt(10,50,"LINE 3") // write String to GLCD at x=60 y=50



Main:

Toggle(PORTA.1)
DelayMS(200)

GoTo main
End

Thanks for any help.

Jerry Messina
Swordfish Developer
Posts: 1469
Joined: Fri Jan 30, 2009 6:27 pm
Location: US

Re: ST7565 GLCD Support

Post by Jerry Messina » Tue May 19, 2020 10:58 am

Also can anyone explain if I need an external oscillator?
As long as you include "intosc.bas" in your main program it should set it to run at the specified "clock=" freq.
Does PORTA.1 toggle? That should give you a good indication that it's running.

I can't help much with the display... I've never used it.

User avatar
David Barker
Swordfish Developer
Posts: 1214
Joined: Tue Oct 03, 2006 7:01 pm
Location: Saltburn by the Sea, UK
Contact:

Re: ST7565 GLCD Support

Post by David Barker » Tue May 19, 2020 11:26 am

There is a lot that could be wrong in your program. I think you need to roll your code back and start again. Firstly (as Jerry suggested) you need to get your clock and configs working. Are you wanting to use an external clock / internal clock? What development board are you using? Does it have an external clock installed? Put an LED or scope on a pin and test. For example, something like:

Code: Select all

dim LED as PORTD.0
while true
   high(LED)
   delayms(500)
   low(500)
   delayms(500)
end while
will tell your straight away if your device is working tickety-boo. If using a development board, does it have a "standard" GLCD installed? For example, KS0108? If it does, start with that as Swordfish has a well tested module for it. A simple program such as:

Code: Select all

Include "GLCD.bas"
Include "FixedFont.bas"
GLCD.Cls	
GLCD.SetFont(Fixed)
GLCD.WriteAt(4,2,"System Font")
will test.

I don't recognise the modules you have imported (although I may have missed something). For example,

Code: Select all

Include "glcdra.bas" // main GLCD module
Include "Bitmaps3.bas" // support for GLCD
Include "ST7565R.bas"
In any case, you should not normally has to include your device driver. If the GLCD ? graphics module has been set up correctly it is those modules that interface to your driver. Where did you get the driver module from?

I hope you appreciate that unless people have access to the same hardware as you and the same code, it's very difficult (if not impossible) to debug via the forum. However, if you build up your program again step by step I am sure we can help...

User avatar
David Barker
Swordfish Developer
Posts: 1214
Joined: Tue Oct 03, 2006 7:01 pm
Location: Saltburn by the Sea, UK
Contact:

Re: ST7565 GLCD Support

Post by David Barker » Tue May 19, 2020 11:29 am

Just looking through previous posts, I see where you got the driver. However, you state you need a ST7665R driver. Certainly without this, your code will not work.

Jerry Messina
Swordfish Developer
Posts: 1469
Joined: Fri Jan 30, 2009 6:27 pm
Location: US

Re: ST7565 GLCD Support

Post by Jerry Messina » Tue May 19, 2020 1:05 pm

I think the "ST7665R driver" is just a typo. The EA DOGM128W-6 uses an ST7565R controller, same as the code posted above.

The real problem is that the DOGM128 uses serial SPI to communicate and the ST7565R.bas driver in the above posts from skartalov uses a parallel interface, so that code won't work w/that display.

raspen
Posts: 9
Joined: Thu Apr 30, 2020 2:28 pm

Re: ST7565 GLCD Support

Post by raspen » Tue May 19, 2020 2:23 pm

Hi David thank you for your reply.
I have cleaned up my code. GLCDra was my version of GLCD with the ST7565R stuff added in as suggested from above. I have modified GLCD.bas and added it to my user library.

I added your LED code and found I had to have "dim LED as PORTD.0" at the top of the code.

One thing that is causing a big delay is the line "GLCD.InitLCD()". When this line is commented (//) out my light flashes right away. When enabled the light wont flash for 24 seconds.It seems like the program is stuck. I tried changing it to ST7565R.InitLCD(), but that did not help.
This line was from Skartalov from 2013.

I am using a demo board from Olimex, and I was able to get a KS0108 GLCD working, however I need a 3 volt GLCD.
Are there other GLCD screens you know of that are better with more program examples available?

Here is my latest code: (not sure how to attach this in the cool code box you use)

{
*****************************************************************************
* Name : GasMon-.BAS *
* Author : RASPEN *
* Notice : Copyright (c) 2020 *
* : All Rights Reserved *
* Date : 5/8/2020 *
* Version : 1.0 *
* Notes : CHIP 18F4550 *
* :Screen EA DOGM128W-6 ST7565R GLCD 128X64 COG *
* :add 9 capacitors 1 uF 445-175543-ND *
*****************************************************************************
}


Device = 18F4550 // select device
Clock = 8

// optional - wait for intosc freq stable bit (the module defaults to not waiting)
//'#option _INTOSC_IOFS_WAIT = true

// Modules
Include "intOSC.bas" //
Include "glcd.bas" // main GLCD module
Include "graphics.bas" // support for GLCD
Include "Bitmaps.bas" // support for GLCD
Include "utils.bas" // support to make all MCU pins Digital
Include "Arial.bas" // ArialFont for GLCD
Include "setdigitalio.bas"
Include "ST7565R.bas"

Dim LED As PORTA.1 //MUST BE HERE


// User options
#Option GLCD_MODEL = ST7565R // GLCD driver
#option GLCD_SCREEN_WIDTH = 128 // Screen Width in Pixels
#option GLCD_SCREEN_HEIGHT = 64 // Screen Height in Pixels

#option GLCD_DATA = PORTD // data port //not used??????
#option GLCD_RS = PORTB.1 // RESET pin
#option GLCD_WR = PORTB.4 //B.3 SI serial data
#option GLCD_RD = PORTB.3 //B.4 SCL serial clock
#option GLCD_CS = PORTB.0 // chip select aka CS1
#option GLCD_DC = PORTB.2 // A0 data command
#option GLCD_ASPECT_RATIO = 80 //80 // aspect ratio, smaller number will squeeze y for GLCD circles and box
#option GLCD_INIT_DELAY = 100 //100 // initialisation delay (ms)


//TRISB = %00000000 // Set all Ports output

SetAllDigital () // set MCU pins as digital
GLCD.InitLCD() // THIS LINE CAUSES BIG DELAY FOR LIGHT TO FLASH 24 SECIONDS!

// Demo pattern on GLCD
// GLCD.Cls // clear GLCD display
// GLCD.Rectangle(20,20,107,43) // draws a rectangle on all corners of display (X,Y,X,Y)
// GLCD.Line(6,6,20,60) // draws line (left of screen)
// GLCD.Line(125,2,105,2) // draws line (top right of screen)
// GLCD.Ellipse(40,32,20,30) // draws Ellipse
// GLCD.Circle(94,25,20) // draws Circle

// GLCD.SetFont(ArialBold) // set font BOLD
// GLCD.WriteAt(10,10,"IT WORKS") // write String to GLCD at x=60 y=50
// GLCD.WriteAt(10,30,"IM HERE") // write String to GLCD at x=60 y=50
// GLCD.WriteAt(10,50,"LINE 3") // write String to GLCD at x=60 y=50

While true
High(LED)
DelayMS(500)
Low(LED)
DelayMS(500)
Wend

raspen
Posts: 9
Joined: Thu Apr 30, 2020 2:28 pm

Re: ST7565 GLCD Support

Post by raspen » Tue May 19, 2020 2:39 pm

Hi Jerry,

You said "The real problem is that the DOGM128 uses serial SPI to communicate and the ST7565R.bas driver in the above posts from skartalov uses a parallel interface, so that code won't work w/that display."

Is there any Swordfish code out there for the DOGM128? or other 3v GLCD screens you can recommend?

Jerry Messina
Swordfish Developer
Posts: 1469
Joined: Fri Jan 30, 2009 6:27 pm
Location: US

Re: ST7565 GLCD Support

Post by Jerry Messina » Tue May 19, 2020 3:25 pm

I don't really use the GLCD displays, so I'm not the best one to ask.

If you look at the standard driver S1D15G00.bas you can see how to switch a driver over to SPI

User avatar
David Barker
Swordfish Developer
Posts: 1214
Joined: Tue Oct 03, 2006 7:01 pm
Location: Saltburn by the Sea, UK
Contact:

Re: ST7565 GLCD Support

Post by David Barker » Wed May 20, 2020 7:41 am

Having a *very* brief look at the ST7565R datasheet, the device can be run either parallel or serial.

Code: Select all

P/S = “H”: Parallel data input/output.
P/S = “L”: Serial data input.

Jerry Messina
Swordfish Developer
Posts: 1469
Joined: Fri Jan 30, 2009 6:27 pm
Location: US

Re: ST7565 GLCD Support

Post by Jerry Messina » Wed May 20, 2020 8:57 am

The controller can be set for either, but I think the DOGM128W-6 only has the SPI connections (at least that's all I see documented).

Post Reply