9th bit on PCF8566 LCD Driver

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

9th bit on PCF8566 LCD Driver

1,624 Views
chiefley
Contributor I

I am repurposing a front panel and its electronics for some other use.   It uses a PCF8566 LCD driver chip to drive an 8 digit 7 segment LCD display.    I am successfully displaying digits from an Arduino over I2C.

The chip is running in 1:3 backplane mode.  I send one byte per digit where the bits of each byte are mapped to one of the seven segments plus a down arrow sign under the digit ("v").

My problem is that the decimal point is mapped to a 9th bit for a given digit.  I am having trouble figuring out how to send data to the chip to specifiy that 9th bit.

In 1:3 mode, the internal display memory in the chip has 24 locations where only three bits in each location are used.   Each byte sent to the chip is broken up into 3 + 3 + 2 bits into 3 locations.    Since a byte had only 8 bits, the third bit in the n+2 location is not set when that byte is sent.

In my case, that third bit is mapped to the decimal point in the display.   I can't figure out how to send to the input register to control that third bit.

I suppose only someone with experience with this chip will understand what I am talking about.  But there is little to nothing out there in the Internet about this chip except for the highly detailed spec sheet.

Thanks in advance

Labels (1)
0 Kudos
5 Replies

1,601 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Dear Dudley, 

the bit 2 of the third address is left unchanged. This last bit
can, if necessary, be controlled by an additional transfer to this address but avoid
overriding adjacent data because always full bytes are transmitted.

JozefKozon_0-1640600496724.png

With Best Regards,

Jozef

0 Kudos

1,567 Views
chiefley
Contributor I

Jozef,

Thanks very much for the response.   Yes, I tried sending a single byte to the third address for the digit, realizing that the other bits in the byte have to be the same as what is in the chip memory.

For some reason, when I end the transmission to I2C, I get an I2C error code = 2, which is a missing acknowledgement from the chip.  

But from your answer, it seems I am on the right track.  I may just be doing something else wrong.

Dudley

0 Kudos

1,556 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Dear Dudley, 

it looks like the PCF8566 is not generating the ACK bit or the master is not generating an extra clock pulse on the end of the byte.

JozefKozon_1-1640764964277.png

JozefKozon_2-1640765002798.png

JozefKozon_3-1640765049941.png

With Best Regards,

Jozef

0 Kudos

1,546 Views
chiefley
Contributor I

Jozef,

    I now  believe my problem is electrical.  Only some scenarios work ok, with the others giving me a code = 2 on the I2C end transmission.   The code means that the address was wrong, but I am using the same address in the successful scenarios and the failure scenarios.   I believe the bus signal quality is the problem.

Init the chip works ok:
init PCF8566 1001011 4B

This exchange works ok:  It lights up all segments on the 8 digits (except for the DP),
Select Device and Continue 11100000 E0
Load data pointer 1100000 60  // Note:  Writing to chip display memory 0.
Send data
11111111 FF
11111111 FF
11111111 FF
11111111 FF
11111111 FF
11111111 FF
11111111 FF
11111111 FF

This produces 2 digits with all segments lit except for DP
Select Device and Continue 11100000 E0
Load data pointer 1100000 60  / Note:  Writing to chip display memory 0.
Send data
11111111 FF
11111111 FF

But if I send it twice, I end up with 4 digits lit, which means it is ignoring the data pointer adddress.

This produces no digits or segments lit and the error message.
Select Device and Continue 11100000 E0
Load data pointer 1100001 61  // Note: Writing to chip memory address 1 instead of 0
Send data
11111111 FF
11111111 FF
Error endTransmission() == 2

I believe I need to look at the quality of the I2C signals getting to the chip.

Thanks so much for your quick replies.  I will let you know when I get it working.

Best Regards,
Dudley

 

 

0 Kudos

1,535 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Dear Dudley, 

thank you for the update. Hopefully you will be able to solve the electrical problem.

With Best Regards,

Jozef

0 Kudos