This post is all about how to interface 16x2 LCD with microcontroller in 8bits mode. In this particular example I will interface LCD with PIC24 (16bit microcontroller). You may download Proteus Simulation and code from the links given at the bottom of this post.
I am using MPLAB X IDE and C30 Compiler for 16bit microcontrollers. I supposed that you know following.
· How to generate a delay without timers or with timers (if not then I suggest you to read this (link) first before continuing this post).
In the above circuit we have an LCD connected with PORT B remember this is 16bit port I am using 10MHz crystal and my Cycle frequency is 5MHz
In the figure below we have a main function in which we initialize LCD and a while loop to display string on LCD and update LCD after every 1.3 seconds.
In the figure below I defined the pins and port for LCD.
In Initialize_LCD() I made Enable and RS(Register Select) pins and portB as output by setting their Tristate registers. And then I write some commands to LCD which are necessary for initialization as describes in datasheet.
In this figure I have ClearScreen_LCD() which is used so many times when you have a project that’s why it is separated from other commands. And we have Toggle_Enable_Pin_LCD() which should be called to latch data onto LCD every time you write o LCD data bus.
In the figure below I have WriteCmd_LCD(Parameter) which is used for writing command to LCD Masking PORTB is important as we have 16bits controller. Parameter is 8bit command which we want to write on LCD. WriteData_LCD(Parameter) is used to send data which is displayed on LCD.
Hope that this will help you!!! For any suggestions or help you are free to comment.
You can download Code and Proteus Simulation Click here