Trouble driving NJU6623 LCD Display

Hello,

I am relatively new to coding and I am working on pet project trying to hijack my vehicle's information LCD display. The display uses a New Japan Radio NJU6623 driver chip, here is a data sheet:

http://pdf.datasheetcatalog.com/datasheets/1150/455239_DS.pdf

I have been collecting bits of information and have pieced together the following code on an Uno based on the NJU6623 data sheet, but I can't for the life of me get anything to display :disappointed_relieved: Hoping someone might be able to point me in the right direction?

I anticipated this code to initialize the display and then display the text "slash128", as I have it commented. Unfortunately, nothing ever displays. When connected to the car it displays the car information correctly, so I know the display is in working order.

Thanks!

#include <SPI.h>

#define RS 8
#define AC 9
#define CS 10

void setup() {
// put your setup code here, to run once:
 
 // Set pin modes to output
 pinMode(RS, OUTPUT);
 pinMode(AC, OUTPUT);
 pinMode(CS, OUTPUT);
 
 // Set SPI Parameters
 SPI.beginTransaction(SPISettings(9600, MSBFIRST, SPI_MODE3));
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, HIGH); // Set Chip Select;
 
 // Initialize Display
 
 // Display On, Cursor Blink
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x0D);
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 
 // Entry Mode Set
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 
 // Clear Display
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x01);
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 
}

void loop() {
// put your main code here, to run repeatedly:

 //Display "slash128"
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x80); // Set cursor at first character
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)

 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x73); // Lowercase "s"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
   
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x6C); // Lowercase "l"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x61); // Lowercase "a"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 

 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x73); // Lowercase "s"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x68); // Lowercase "h"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x31); // Number "1"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x32); // Number "2"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
 digitalWrite(RS, HIGH); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1)
 digitalWrite(CS, LOW); // Set Chip Select
 SPI.transfer(0x38); // Number "8"
 digitalWrite(CS, HIGH); // Set Chip Select
 digitalWrite(RS, LOW); // Set Register Select (mode0)
 digitalWrite(AC, LOW); // Set Address Counter (mode1) 
 
}

Hello,

I have been able to write to the LCD. It is very similar to a "standard" 8 bit LCD, but instead of writing the bits individually to the discrete lines the 8 bits are sent in serial over the MOSI line. Comparing the operation of this display's RS and AC pins it appears they are analogous to the standard LCD RS and R/W pins. The slave select is analogous to the Enable pin, except inverted to go active when low. So now my quest is to modify the standard LCD library send serial data via SPI functions. I am starting from near scratch analyzing the existing LCD library. Can anyone point me to some good tutorials that describe in detail what the library is doing?

Thank you!

Jason