PCF2119. User defined characters

PCF2119. User defined characters

Postby orac0ol » Mon Oct 06, 2014 3:00 pm

Hello. I have a microcontroller PIC18f25k22 and PCF2119. I tried following the example of the datasheet to create a user defined character. I created it, it was recorded in the 0 address CGRAM. Please tell me how to write it to another address, and then how to use it at this address?
Example from datasheet:
Code: Select all
// Write a user defined character into the CGRAM
startI2C();
// PCF2119 slave address for write, SA0 is connected to Vdd
SendI2CAddress(0x76);
// MSB (Continuation bit Co) = 0, more than one byte may follow. Bit6, RS=0, next byte
// is command byte
i2c_write(0x00);
// 2 lines x 16, 1/18 duty, basic instruction set. Next byte will be another command.
i2c_write(0x24);
// Set CGRAM address to 0
i2c_write(0x40);
// Repeated Start condition
startI2C();
SendI2CAddress(0x76);
// RS=1, next byte is a data byte
i2c_write(0x40);
// Here the data bytes to define the character
// Behind the write commands the 5x8 dot matrix is shown, the 1 represents a on pixel.
// The Euro currency character can be recognized by the 0/1 pattern (see Figure 48)
i2c_write(0x06); // 00110
i2c_write(0x09); // 01001
i2c_write(0x08); // 01000
i2c_write(0x1E); // 11110
i2c_write(0x1E); // 11110
i2c_write(0x08); // 01000
i2c_write(0x09); // 01001
i2c_write(0x06); // 00110
i2c_stop();
// Until here the definition of the character and writing it into the CGRAM. Now it
// still needs to be displayed. See below.
// PCF2119, setting of proper display modes
startI2C();
// PCF2119 slave address for write, SA0 is connected to Vdd
SendI2CAddress(0x76);
// MSB (Continuation bit Co) = 0, more than one byte may follow. Bit6, RS=0, next byte
// is command byte
i2c_write(0x00);
// 2 lines x 16, 1/18 duty, extended instruction set. Next byte will be another
// command.
i2c_write(0x25);
// Set display configuration to right to left, column 80 to 1. Row data displ. top to
// bottom,1 to 16.
i2c_write(0x06);
// Set to character mode, full display, icon blink disabled
i2c_write(0x08);
// Set voltage multiplier to 2
i2c_write(0x40);
// Set Vlcd and store in register VA
i2c_write(0xA0);
// Change from extended instruction set to basic instruction set
i2c_write(0x24);
// Display control: set display on, cursor off, no blink
i2c_write(0x0C);
// Entry mode set, increase DDRAM after access, no shift
i2c_write(0x06);
// Return home, set DDRAM address 0 in address counter
i2c_write(0x02);
// Clear entire display, set DDRAM address to 0 in address counter
i2c_write(0x01);
// Repeated Start condition because RS needs to be changed from 0 to 1
startI2C();
SendI2CAddress(0x76);
// RS=1, next byte is data
i2c_write(0x40);
// Write the character at address 0, which is the previously defined Euro currency
// character
i2c_write(0x00);
i2c_stop();

As I understand it, the address is set to this line
Code: Select all
// Set CGRAM address to 0
i2c_write(0x40);

And then use this line
Code: Select all
// Write the character at address 0, which is the previously defined Euro currency character
i2c_write(0x00);

But, after reading the datasheet, I do not quite understand how to use a different address.
orac0ol
 
Posts: 1
Joined: Mon Oct 06, 2014 2:56 pm

Return to Graphics and LCD

Who is online

Users browsing this forum: No registered users and 9 guests

cron