Electronics / Displays
LCD Custom Character Generator (HD44780, Arduino)
Draw a 5 × 8 pixel custom character for HD44780-compatible 16×2 and 20×4 LCDs and copy the byte array with Arduino LiquidCrystal code to create and show it.
LCD Custom Character Generator (HD44780, Arduino): An HD44780 display stores up to eight custom characters in its CGRAM, each eight rows of five pixels. Each row is a byte whose lowest five bits are the pixels, leftmost in the highest bit. The code defines the array, creates the character in slot 0 with lcd.createChar, and writes it with lcd.write(byte(0)). Runs 100% locally in your browser with zero server file uploads.
- Category
- School & study tools
- Runs
- In your browser
- Cost
- Free · no sign-up
- Availability
- Ready to use
Runs entirely in your browser
Code
byte customChar[8] = {
0x04,
0x0E,
0x0E,
0x0E,
0x1F,
0x00,
0x04,
0x00
};
// in setup():
lcd.createChar(0, customChar);
lcd.setCursor(0, 0);
lcd.write(byte(0));Load from code
HD44780-compatible 16×2 and 20×4 displays hold up to eight custom characters of 5 × 8 pixels, numbered 0 to 7. Each row is a byte whose lowest five bits are the pixels, leftmost in the highest. The code uses the Arduino LiquidCrystal library; leave the bottom row empty where the cursor underline appears.
Ideas for characters
Battery levels, signal bars, arrows, a degree sign wider than the built-in one, a heart, a bell, or a custom logo split across two or four characters side by side.
For a whole dot-matrix display, use the LED matrix editor.
Built-in characters
The HD44780's own character set includes ASCII letters and digits and, depending on the ROM version, Japanese katakana or Western European accented letters. The ASCII table lists the standard codes it shares with computers.
Custom characters are lost when the display loses power, so create them in setup() every time.
How to use it
- Click or drag over the 5 × 8 grid to draw the character.
- Choose hexadecimal or binary output.
- Copy the code into your sketch and call lcd.createChar.
Privacy & limitations
Everything runs in your browser.
Related tools
Frequently asked questions
How many custom characters can I use?
Eight at a time, slots 0 to 7. You can redefine a slot at any time, and characters already on the screen change with it.
Why leave the bottom row empty?
The cursor underline appears on the eighth row, and most built-in characters use only seven, so leaving it blank keeps your character in line with text.
Does it work with I2C backpacks?
Yes: LiquidCrystal_I2C and similar libraries have the same createChar and write calls.
Free tool · runs in your browser · no account required