A basic guide for controlling the S1 console display
#1
A basic guide for controlling the S1 console display
Before you rejoice and throw away your factory heads, there are a couple of unresolved wiring questions......
I had my display out about 6 months back and was able to control it via an Ardunio, but all connections except the data related control were still via a factory head unit; Meaning the proper termination (or suitable inputs) for all the non data connections has not been confirmed.
I will get back to this as soon as free time, skillset and access to suitable toolsets allow, but unfortunately it is not on my immediate horizon.
So any additional input\detail is very very welcome.
The wiring connections were kindly provided here
https://www.rx8club.com/series-i-tech-ga ... 23/page13/
Also I did not make any in-depth notes during my (initial) display tests
as a result this information is made without reference to a functioning example and potentially there may be minor inaccuracies.
And now for the fun stuff.
I believe the processor used by the display is a NJU6623 from New Japan Radio
The product description is; 15-CHARACTER 1-LINE DOT MATRIX LCD CONTROLLER DRIVER with OUTPUT PORT
http://pdf.datasheetcatalog.com/datashe ... 239_DS.pdf
If it’s not this display driver then it’s similar\from the same family.
Behavior is much like any standard LCD, but it is not exactly the same so read the data sheet carefully.
There are 2 pins for controlling display function(s), in the above link for the wiring connections these are described as mode0 and mode1
I have them flagged as RS (mode0) and AC (mode1), they are clearly detailed in the datasheets table of instructions.
Connectivity is a standard SPI interface 9600, MSBfrist, SPI_Mode3.
There are 3 separate methods employed to drive the Chars, Icons and (7)Segments.
The 12 main text characters on the display are via DDRAM addresses 0x80 to 0x8B,
You populate them from the NJU6623’s CGROM character map, or make your own symbols via the CGRAM Matrix – it’s pretty standard LCD type functionality.
The icons and the (clock) minute 7segments are driven by a matrix arrangement from addresses 0x90 to 0x9D.
Each icon address controls up to 5 icons (or minute segments) at registers 0x01, 0x02, 0x04, 0x08, 0x10 - I said ‘up to’ because all registers may not be utilized at any specific address.
To turn on all icons at address 0x92 you would write 0x1F to this address, to turn none of them on write 0x00 (IE to turn them off)
To turn on the first icon write 0x01 only, the second 0x02, the third 0x04, icons 1 and 3 0x05 etc.
If an icon is on and you update the address but do not rewrite it as on, it will be turned off.
So if you had all 5 icons at 0x92 turned on and you then wrote 0x02 to the address; icons 1,3,4,5 would be turned off, icon 2 would remain on.
You may also find you need to write 0x00 to all 0x9* addresses during the power-on sequence to ensure all icons are all initially off.
The (clock) 2 x Hour 7segment displays and (temp) 3 x 7segment displays are driven by the DDRAM addresses 0x8C and 0x8D
Note: these 2 DDRAM addresses are part of the main character display, but are effectively hidden as the main display only has 12 visible characters.
This means if you try to utilize the driver chips built-in scroll functions, you will end up with unexpected results as the visible chars are scrolled into the 0x8C/D address space and 0x8C/D chars scroll into the users view @ 0x80 to 0x8B.
It also means that you could populate these 2 addresses with chars from the standard CGROM char map, probably also producing an unexpected result.
The ‘on’ segments are set by creating a CGRAM custom char and copying it to the appropriate DDRAM address - basically you are creating a map which represents the active\on segments within the 7segment displays;
This utilizes 1 matrix column per character, with the 7 individual segments of the character controlled by the 7 rows of the matrix (rows 0-6).
The 7segments map as
Hh = DDRAM address 0x8C, driven by CGRAM column 0x10.
hH = DDRAM address 0x8C, driven by CGRAM column 0x08
Tmp = DDRAM address 0x8D, driven by CGRAM column 0x04
tMp = DDRAM address 0x8D, driven by CGRAM column 0x02
tmP = DDRAM address 0x8C, driven by CGRAM column 0x01
As each of the 7segment display characters references a separate column in the matrix, you could utilize 1 CGRAM char map for all 5 of the 7segment displays, by copying the char map to both 0x8C and 0x8D.
EG; For the ‘hours’ (Hh & hH) segments to read 11, a CGRAM character is created with the column 0x10 row2 and row5 set on, and 0x08 row2 and row5 set on
This CGRAM custom character is then written to the (unseen) display address of 0x8C.
Remember that the right hand 7segement temp (tmP) display is also driven by address 0x8C, so the above action would result in this 7segement being off.
If you then wanted to change either of the hour values you would write a new matrix map into a CGRAM address space and then update the display by copying this CGRAM custom char to the DDRAM address.
I found it easier to visualize some of this with a simulator LCD Simulator {/JavaScipt}.
Remember safety first
and it is important to maintain appropriate levels of hydration at all times.
Regards Tony
I had my display out about 6 months back and was able to control it via an Ardunio, but all connections except the data related control were still via a factory head unit; Meaning the proper termination (or suitable inputs) for all the non data connections has not been confirmed.
I will get back to this as soon as free time, skillset and access to suitable toolsets allow, but unfortunately it is not on my immediate horizon.
So any additional input\detail is very very welcome.
The wiring connections were kindly provided here
https://www.rx8club.com/series-i-tech-ga ... 23/page13/
Also I did not make any in-depth notes during my (initial) display tests
as a result this information is made without reference to a functioning example and potentially there may be minor inaccuracies.
And now for the fun stuff.
I believe the processor used by the display is a NJU6623 from New Japan Radio
The product description is; 15-CHARACTER 1-LINE DOT MATRIX LCD CONTROLLER DRIVER with OUTPUT PORT
http://pdf.datasheetcatalog.com/datashe ... 239_DS.pdf
If it’s not this display driver then it’s similar\from the same family.
Behavior is much like any standard LCD, but it is not exactly the same so read the data sheet carefully.
There are 2 pins for controlling display function(s), in the above link for the wiring connections these are described as mode0 and mode1
I have them flagged as RS (mode0) and AC (mode1), they are clearly detailed in the datasheets table of instructions.
Connectivity is a standard SPI interface 9600, MSBfrist, SPI_Mode3.
There are 3 separate methods employed to drive the Chars, Icons and (7)Segments.
The 12 main text characters on the display are via DDRAM addresses 0x80 to 0x8B,
You populate them from the NJU6623’s CGROM character map, or make your own symbols via the CGRAM Matrix – it’s pretty standard LCD type functionality.
The icons and the (clock) minute 7segments are driven by a matrix arrangement from addresses 0x90 to 0x9D.
Each icon address controls up to 5 icons (or minute segments) at registers 0x01, 0x02, 0x04, 0x08, 0x10 - I said ‘up to’ because all registers may not be utilized at any specific address.
To turn on all icons at address 0x92 you would write 0x1F to this address, to turn none of them on write 0x00 (IE to turn them off)
To turn on the first icon write 0x01 only, the second 0x02, the third 0x04, icons 1 and 3 0x05 etc.
If an icon is on and you update the address but do not rewrite it as on, it will be turned off.
So if you had all 5 icons at 0x92 turned on and you then wrote 0x02 to the address; icons 1,3,4,5 would be turned off, icon 2 would remain on.
You may also find you need to write 0x00 to all 0x9* addresses during the power-on sequence to ensure all icons are all initially off.
The (clock) 2 x Hour 7segment displays and (temp) 3 x 7segment displays are driven by the DDRAM addresses 0x8C and 0x8D
Note: these 2 DDRAM addresses are part of the main character display, but are effectively hidden as the main display only has 12 visible characters.
This means if you try to utilize the driver chips built-in scroll functions, you will end up with unexpected results as the visible chars are scrolled into the 0x8C/D address space and 0x8C/D chars scroll into the users view @ 0x80 to 0x8B.
It also means that you could populate these 2 addresses with chars from the standard CGROM char map, probably also producing an unexpected result.
The ‘on’ segments are set by creating a CGRAM custom char and copying it to the appropriate DDRAM address - basically you are creating a map which represents the active\on segments within the 7segment displays;
This utilizes 1 matrix column per character, with the 7 individual segments of the character controlled by the 7 rows of the matrix (rows 0-6).
The 7segments map as
Hh = DDRAM address 0x8C, driven by CGRAM column 0x10.
hH = DDRAM address 0x8C, driven by CGRAM column 0x08
Tmp = DDRAM address 0x8D, driven by CGRAM column 0x04
tMp = DDRAM address 0x8D, driven by CGRAM column 0x02
tmP = DDRAM address 0x8C, driven by CGRAM column 0x01
As each of the 7segment display characters references a separate column in the matrix, you could utilize 1 CGRAM char map for all 5 of the 7segment displays, by copying the char map to both 0x8C and 0x8D.
EG; For the ‘hours’ (Hh & hH) segments to read 11, a CGRAM character is created with the column 0x10 row2 and row5 set on, and 0x08 row2 and row5 set on
This CGRAM custom character is then written to the (unseen) display address of 0x8C.
Remember that the right hand 7segement temp (tmP) display is also driven by address 0x8C, so the above action would result in this 7segement being off.
If you then wanted to change either of the hour values you would write a new matrix map into a CGRAM address space and then update the display by copying this CGRAM custom char to the DDRAM address.
I found it easier to visualize some of this with a simulator LCD Simulator {/JavaScipt}.
Remember safety first
and it is important to maintain appropriate levels of hydration at all times.
Regards Tony
#2
Oh dang, i have no idea how i could make this work for me but sir, youre doing gods work lol.
I know there have been attempts to drive the lcd and i know the metra kit allows for ac controls,clock and a single message display on the lcd.
My dream has always been to find a way to get full lcd functionality out of aftermarket units.
station volume ect. Though i doubt thats even possible.
window.onbeforeunload = function() {}
I know there have been attempts to drive the lcd and i know the metra kit allows for ac controls,clock and a single message display on the lcd.
My dream has always been to find a way to get full lcd functionality out of aftermarket units.
station volume ect. Though i doubt thats even possible.
window.onbeforeunload = function() {}