I have the following diagram of a HD44780U LCD controller enter image description here What is the difference between CGRAM and CGROM.

What is DDRAM for ?

Where are the customised characters stored ?

What does it happen when I send an instruction vs a data stream on DB0-DB7 pins ?


1 Answer 1


What is the difference between CGRAM and CGROM.

One is read/write, the other read-only.

The CGROM contains the glyphs that are fixedly "burned" into the device, the CGRAM contains the characters that you loaded yourself. (for example, all latin letters are probably stored in the CGROM, so that your controller knows what to draw when you send an x byte; if you want to draw a flower as character, you'll have to load a flower picture into CGRAM).

What is DDRAM for?

Figure says "Display Data RAM", ie. probably simply the frame buffer your pixels get written to.

Where are the customised characters stored?


What does it happen when I send an instruction vs a data stream on DB0-DB7 pins?

The instruction decoder state machine notices an instruction to be decoded, does that, and modifies the state of your controller accordingly.

It's in essence a small, very specific CPU integrated there.

  • \$\begingroup\$ Does the instructions is also stored in CGROM ? \$\endgroup\$
    – pantarhei
    Dec 10, 2018 at 12:06
  • \$\begingroup\$ no. As explained, the name CGROM pretty clearly states that it's used for character data. Instructions aren't stored anywhere; they are instructions. \$\endgroup\$ Dec 10, 2018 at 12:08
  • \$\begingroup\$ Let say that I send on DB0-DB7 pin the instruction to set the cursor on Row X and Column Y. After that I send the character 'A'. Character A that is stored in CGROM and the segment driver and common driver produces the correct wave forms. Then 'A' will be shown at X,Y. Does the instruction 'set the cursor' has a code assigned that produces a waveform in order to put 'A' at X,Y position ? \$\endgroup\$
    – pantarhei
    Dec 10, 2018 at 12:11
  • \$\begingroup\$ "waveform" isn't what I would use here. The analog output is generated by sampling the DDRAM. There's no "waveform" involved in changing the address in DDRAM to which the "A" picture is copied. \$\endgroup\$ Dec 10, 2018 at 12:15
  • 1
    \$\begingroup\$ Let me clarify DDRAM. This is the memory that stores the 8-bit character codes that are desired to be displayed on the screen. It does not store pixel data. The DDRAM simply gets loaded at the one byte at a time by user writing at the DB0-DB7. Separately from that the internal state machine in the controller is repeatedly scanning the DDRAM reading out the character codes and presenting those to the CGROM/CGRAM. Pixel data for the current scan row of the display comes from the character generator where it is loaded into the 40-bit shift register. Waveforms generate from the 40 bits and COMs, \$\endgroup\$ Dec 10, 2018 at 13:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.