(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:Starter PIC16F877]]
 
[[Category:Starter PIC16F877]]
 +
In this tutorial we will see how to interface alpha-numeric LCD with PIC16F877A starter board.<br>
  
 +
 +
=LCD pin Connection=
 +
Starter board comes with on board header to connect 1x16,2x16 or 4x20 LCD in <b>4-bit Mode</b>.<br>
 +
Below table shows the LCD pins connection.
 +
{| class="table table-striped table-hover table-condensed table-bordered"
 +
|-class="info"
 +
!RS || RW || EN || D0  || D1  || D2  || D3  || D4 || D5 || D6 || D7
 +
|-
 +
|PB_0  || PB_1  || PB_2  || P_NC || P_NC || P_NC || P_NC || PB_4 || PB_5 || PB_6 || PB_7
 +
|}
 +
*P_NC: Pin Not Connected
 +
<br>
 +
 
=Code=
 
=Code=
  
Line 19: Line 33:
  
 
=Demo=
 
=Demo=
[[File:Pic16f877a relay.gif]]<br><br>
+
The images below shows 16x2, 16x1 and 20x4 LCD's interfaced with starter AVR.
 +
<br/>
 +
[[file:Pic16f877a 1x16 LCD.JPG]]
 +
<gallery>
 +
file:Pic16f877a 2x16 lcd.JPG
 +
file:Pic16f877a 4x20 lcd.JPG
 +
</gallery>
 +
<br>
 +
 
 +
= Downloads=
 +
Download the complete project folder from the below link:
 +
https://github.com/ExploreEmbedded/Pic16f877a_ExploreStarterPIC/archive/master.zip<br>
 +
 
 +
 
 +
Have a opinion, suggestion , question or feedback about the article let it out here!
 +
{{DISQUS}}

Latest revision as of 19:12, 2 May 2016

In this tutorial we will see how to interface alpha-numeric LCD with PIC16F877A starter board.


LCD pin Connection

Starter board comes with on board header to connect 1x16,2x16 or 4x20 LCD in 4-bit Mode.
Below table shows the LCD pins connection.

RS RW EN D0 D1 D2 D3 D4 D5 D6 D7
PB_0 PB_1 PB_2 P_NC P_NC P_NC P_NC PB_4 PB_5 PB_6 PB_7
  • P_NC: Pin Not Connected


Code

LCD 1x16

#include "lcd.h"
int main()
{
/*Connect RS->PB0, RW->PB1, EN->PB2 and data bus to PORTB.4 to PORTB.7*/
LCD_SetUp(PB_0,PB_1,PB_2,P_NC,P_NC,P_NC,P_NC,PB_4,PB_5,PB_6,PB_7);
LCD_Init(1,16);
LCD_DisplayString("Explore Lcd 1x16");
while(1);
return (0);
}

LCD 2x16

#include "lcd.h"
int main()
{
/*Connect RS->PB0, RW->PB1, EN->PB2 and data bus to PORTB.4 to PORTB.7*/
LCD_SetUp(PB_0,PB_1,PB_2,P_NC,P_NC,P_NC,P_NC,PB_4,PB_5,PB_6,PB_7);
LCD_Init(2,16);
LCD_DisplayString("Explore Embedded");
LCD_DisplayString("Lcd 4-bit Mode");
while(1);
return (0);
}

LCD 4x20

#include "lcd.h"
int main()
{
/*Connect RS->PB0, RW->PB1, EN->PB2 and data bus to PORTB.4 to PORTB.7*/
LCD_SetUp(PB_0,PB_1,PB_2,P_NC,P_NC,P_NC,P_NC,PB_4,PB_5,PB_6,PB_7);
LCD_Init(4,20);
LCD_DisplayString("Explore Embedded\n");
LCD_DisplayString("LCD 4-bit Mode\n");
LCD_DisplayString("20 x 4 \n");
LCD_DisplayString(":) :O");
while(1);
return (0);
}

Demo

The images below shows 16x2, 16x1 and 20x4 LCD's interfaced with starter AVR.
Pic16f877a 1x16 LCD.JPG


Downloads

Download the complete project folder from the below link: https://github.com/ExploreEmbedded/Pic16f877a_ExploreStarterPIC/archive/master.zip


Have a opinion, suggestion , question or feedback about the article let it out here!