Introduction
I interfaced LCD 16x2 first time and displayed “hello world” on it. But, later I thought how I can display Hindi / Marathi font on LCD 16x2. Then, I started building program which can display Hindi / Marathi font on LCD16x2 using microcontroller.
Then I get to know about user defined custom character. Custom character helps to create user defined symbols, patterns, etc.
As we know to print character symbol on LCD, we have to send ASCII code. LCD16x2 also has feature, where we can print our own custom character, which is not included in ASCII set of character.
E.g. J, ©, ∞ etc.
So, I started building Hindi Font as a custom character. For making Custom character, there is online software https://omerk.github.io/lcdchargen/ which provide custom character generator for user defined symbol.
Build Custom Character
I used above mentioned online software and create custom character for Hindi / Marathi fonts. For example,

So, I create my required symbol on left side and custom character generator provides ASCII value to the right side.
To display these custom characters, I need to use CGRAM (Character Generator RAM) which is used to store these custom patterns.
Interfacing Diagram
LCD16x2 Interfacing with 8051
Application
Let’s display some proud Hindi Mantra like Satyamev Jayate and Mera Bharat Mahan on LCD16x2 using 8051.