A few years back, I was introduced to the world of Arduino. I was fascinated by the fact that you can make things work with just typing in some lines of code. Do not like how it works? Change a few lines of code and there you have it. As soon as I got my first Arduino, like every other excited hobbyist, I tried each and every basic example circuits right from blinking an LED to displaying my name on a 16 x 2 LCD display. There are lots of tutorials on the internet along with the code. Just copy paste the code and your circuit is up and running. As time progressed I started playing with more complex components like OLED displays, sensors, etc.
After having some fun with Arduino, I realised that some things are not complete. What does lcd.print(“Hello, World!”) actually do? What does each pin of the display do? How does the microcontroller on the Arduino communicate with the display? We simply overlook this because a complex task of making a component like those to work is made simple for us with the help of a Library! A library is a collection of a predefined set of instructions. Most of the information is hidden in these libraries. When the main program reaches the function such as lcd.print, the program will jump into the library, look for the function and execute it. After execution, it returns back to the main program. In the above example, you might have come across such lines in the program #include . The library used here is LiquidCrystal.
Though the main program becomes small and easy to understand, it hides a lot of information and it can be confusing for newbies like us. So, in this Instructable let us try to run an LCD Display but WITHOUT a microcontroller! Yes, YOU are going to be the microcontroller. This will help us to know what all task a microcontroller does to display a text on the screen.
Let’s get back to the basics!”

Link