Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How can I write new special characters on my HD44780 LCD

Not open for further replies.


Newbie level 5
Jan 7, 2010
Reaction score
Trophy points
Activity points
Hi, I'm using C18 compiler, and C language, and TCP/IP Stack. I want to create new characters and display it on HD44780. How can I manage this? Thank you...

Do you mean special character other than given in the pdf sheet... It covers most of the characters....
If you know the ascii value of the character you need to print, then you can print it on the LCD...........

No, I want to create new characters other than HD44780 character set written on datasheet.

I tried it. But I need to write some Turkish characters. I wrote the ascii values of them, but LCD displayed different characters.

Look at the data sheet, there are some reserved characters which can be written to as though they are normal RAM but are actually in the font memory. If you send binary numbers to them the corresponding pixels in the LCD will activate. You need to draw the character you want, read it as rows of pixels and convert the 'on' pixels to '1' and 'off'' pixels to '0' to make binary numbers, you then write these numbers to the character RAM. After creating the new character you use it like any other.


Writing to CG RAM.

Writing to CG RAM is a lot like moving the cursor to a particular position on the display and displaying characters at that new location. The steps are:

Reset RS and R/W pins of the LCD to prepare the LCD to accept instructions
Set the CG RAM address by sending an instruction byte from 64 to 127 (locations 0-63 in CG RAM).
Switch to DATA MODE by changing setting the RS pin
Send bytes with the bit patterns for your symbol(s). The LCD controller automatically increments CG RAM addresses, just as it does cursor positions on the display.
To leave CG RAM,switch to COMMAND MODE to set address counter to a valid display address (e.g. 128, 1st character of 1st line); the clear-screen instruction (byte 1); or the home instruction (byte 2). Now bytes are once again being written to the visible portion of the display.
To see the custom character(s) you have defined, print ASCII codes 0 through 7.

copied from below link:
Defining Custom Characters
Last edited:
Not open for further replies.

Part and Inventory Search

Welcome to