This is the most interesting article to play with LCD. After going through the article, you can create any character/symbol which cannot be created using the ASCII values for example smiley. You can even create small games. Conventionally 16X2 LCD is use to display text or numerical values. It is possible to display special characters, your own designed characters too on LCD by using its 5 x 8 matrix block. These special characters are stored in the CGRAM of LCD. This article shows how to create and display special character on LCD using ATmega16. For more details refer to the article how to create custom characters.
This article assumes that the readers are aware of the concepts of interfacing LCD with AVR microcontroller (ATMEGA 16). For more information about interfacing LCD with AVR, refer How to display string on LCD using AVR. In order to create a custom character its configuration is first defined in the CGRAM of the LCD. A maximum of eight characters can be stored at a time in the 16 x 2 LCD. Every character is assigned eight bytes in the CGRAM and by configuring these bytes any character can be generated. The size of the CGRAM is 64 bytes.
For detailed description about configuring the CGRAM, refer to creating custom characters on LCD using 8051. The concepts of generating a custom character remain the same. The connection of LCD with the AVR is shown in the circuit diagram.