Hi Guys
Can someone help with some sample code to print custom characters?
There is a sample in the Help file, but it's overly complicated and not very clear how it works.
I know you have to write a series of bytes who's bit patterns correspond to the 5x8 pixels, but how is this done exactly? And once this but patterns have been written, can that character then be displayed at any character position? Or does the data bytes need to be written each time you want to display that custom character?
Cheers
Lee
LCD module Custom Characters
Moderators: David Barker, Jerry Messina
-
- Swordfish Developer
- Posts: 1488
- Joined: Fri Jan 30, 2009 6:27 pm
- Location: US
Re: LCD module Custom Characters
With the HD44780 you get 8 custom chars.
These chars are displayed when you write character codes 0-7 to the display (DDRAM data), just like you would write ascii text ('1', '2', etc).
Each custom char pattern takes eight bytes of CGRAM data (the dot patterns).
Once you load the CGRAM data with the pattern then whenever you write the char code byte (0-7) to the DDRAM you get the custom pattern displayed at the current char position on the display, so you can write them anywhere on the display just like normal text.
These chars are displayed when you write character codes 0-7 to the display (DDRAM data), just like you would write ascii text ('1', '2', etc).
Each custom char pattern takes eight bytes of CGRAM data (the dot patterns).
Once you load the CGRAM data with the pattern then whenever you write the char code byte (0-7) to the DDRAM you get the custom pattern displayed at the current char position on the display, so you can write them anywhere on the display just like normal text.
Code: Select all
include "LCD.bas"
// custom char bitmap data patterns...
// programmable characters are available that use codes $00 to $07
// each char takes eight bytes
const CGRAM_DATA(64) as byte =
($01,$01,$01,$01,$01,$01,$01,$00, // char 0
$10,$10,$10,$10,$10,$10,$10,$00, // char 1
$14,$14,$14,$14,$14,$14,$14,$00, // char 2
$15,$15,$15,$15,$15,$15,$15,$00, // char 3
$16,$16,$16,$16,$16,$16,$16,$00, // char 4
$17,$17,$17,$17,$17,$17,$17,$00, // char 5
$18,$18,$18,$18,$18,$18,$18,$00, // char 6
$19,$19,$19,$19,$19,$19,$19,$00) // char 7
LCD.Initialize()
// init custom char CGRAM data
// this will call the overloaded sub 'Private Sub WriteItem(ByRefConst pBitmap() As Byte)' in LCD.bas to load the bit patterns into CGRAM
LCD.Write(CGRAM_DATA)
// after that, just write chars 0 to 7 like you would ascii text
LCD.Write(0) // char 0
LCD.Write(1) // char 1
LCD.Write(7) // char 7
-
- Posts: 38
- Joined: Wed Nov 02, 2022 10:31 am
Re: LCD module Custom Characters
Hi Jerry
Once again, thanks for the help.. Much appreciated!!
I have the custom characters up and running..
Cheers
Lee
Once again, thanks for the help.. Much appreciated!!
I have the custom characters up and running..
Cheers
Lee