Here you will find the very important topic discussion on serial communication with PIC 16f877 using UART. For make you understand better way i discuss one project regarding serial communication with PIC 16f877 using UART. I know if you learn UART interfacing with PIC microcontroller then lots of projects window open infront of you. So carefully go through the abstract of project.
Abstract of that project:
Using UART port we can establish serial communication between any devices. Here in my project Serial communication with PIC 16f877 using UART, I will show you how easily we establish communication between two devices. lets start discussion i think we should know that the pin no 25 and 26 in PIC16F877 microcontrller are used as UART. The pin number 25 is use for receiving and 26 is used for transmitting purpose.
In early discussion abstract of that project we learn about responsible pins of PIC16f877 for UART. Now we see the circuit diagram bellow we use MAX232,UART port, PIC16f877 and LCd (Lm106L) to make our project.
we know Simulation software is a main weapon of a design engineer. For that we use Mikcro C pro to write the embedded C program for PIC16F877. We used Proteus 7 Professional for simulation. And for simulation of our project serial communication with PIC 16f877 using UART, we replace COMPIM and MAX232 with Virtual UART Terminal.
So see our replace circuit for simulation in Proteus in bellow of project serial communication with PIC 16f877 using UART.
Mikcro C Pro Code:
To interfacing UART with Pic we have to use some new command those are
UART1_Init(Baudrate):is Initialize UART module at specified baudrate.
UART1_Data_Ready() : use to check data is receive or not.
UART1_Write_Text(“Start”): use to write declared text on uart
UART1_Write(): use for transmit uart data.
UART1_Read(): use for read the uart data.
Now see at below the programing code to understand use of above mention command.
See embedded Code
unsigned int uart_rd;
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
ANSEL = 0; // Configure AN pins as digital
ANSELH = 0;UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilizewhile (1)
uart_rd = UART1_Read();
UART1_Write(uart_rd); // read the received data,
if (uart_rd == 8)
See the video that how it simulate in Proteus