Monday, April 30, 2018

LED Flashing with PIC16F877



Hello, today I will do very simple project using PIC16F877. This is a basic project for begginer.
PIC16F877 is a very popular microcontroller. Those who are new with PIC micro controller, this project will demonstrate that how to make a specific pin of a port make high or low. PIC16f877 micro controller has 5 port. These are PORT A, PORTB, PORTC, PORTD and PORTE. Each port has some specific purpose. May be in other post we will discuss about this. To do this we need following software:

   1. MikroC pro for PIC (student verison)
   2. Proteus 8 professional
   3. PicKit 2



MikroC pro for PIC will be used for writing and compiling the code. Here we will use C language.

Proteus 8 professional will be used for the simulation and finally Pickit 2 will be used for burning the hex file in the PIC16F887  IC.



To do this project we need following components;


   1. PIC16F877

   2. LED
   3. 16 MHz Crystal Oscillator
   4. Breadboard
   5. Wires
   6. 5V DC Power source

In the following figure we have the pinout of PIC16F877



Figure 1

MikroC Code:


// LED Flashing

void main() 

{
   TRISB = 0;
   PORTB = 0;
   ADCON1= 0x06;
   
   while(1)
   {
   
      PORTB = 0b00000001;
      delay_ms(200);
      
      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b00000010;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b00000100;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b00001000;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b00010000;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b00100000;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b01000000;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b10000000;
      delay_ms(200);

      PORTB = 0b00000000;
      delay_ms(200);
      
      PORTB = 0b10101010;
      delay_ms(1000);

      PORTB = 0b00000000;
      delay_ms(500);
      
      PORTB = 0b01010101;
      delay_ms(1000);

      PORTB = 0b00000000;
      delay_ms(500);
      
      PORTB = 0b11111111;
      delay_ms(1000);

      PORTB = 0b00000000;
      delay_ms(500);
   
   }
}

Diagram




Figure 2

Please don't forget to connect pin 1,11 and 32 to 5V source.
Connect pin 12 and 31 with Gnd. Also connect 16 MHz oscillator with pin 13 and 14.

THANKS A LOT.

No comments:

Post a Comment

Line Follower Robot using Arduino

This project was a part of Line Follower Robot Competition