Summary of Push Button as Input and Led as Output with Pic Microcontroller
This tutorial details a PIC16F877 project using a push button to control an LED via a 2N2222 transistor. Port-B acts as the output for driving loads, while Port-D Pin#7 serves as the input for the button. The system uses a 20 MHz crystal with 33 pF capacitors and is programmed in MPLAB-IDE with High Tech C. The logic allows toggling the LED state based on button presses, and the circuit can be adapted to drive heavier loads like DC motors by replacing the LED.
Parts used in the Push Button as Input and Led as Output with Pic Microcontroller:
- Pic16f877 microcontroller
- 2n2222 transistor
- LED
- Push button
- 560 ohm resistor
- 1 K ohm resistor
- External 5 volt signal
- 20 Mhz crystal
- 33 pf capacitors (two)
This is a simple tutorial/project on how to interface a transistor (2n2222), led and push button with Pic microcontroller. In the project i am going to switch on and off(blink) an led with the help of a push button. Since transistors are used at outputs we can drive heavy loads with the same circuit. Pic16f877 microcontroller is used in the project. Port-B of Pic16f877 is used as output port. Port-B of pic16f877 is an 8-bit port. 8 transistors are connected to the general purpose input/output pins (gpio’s) of this port. Transistors bases are connected directly to the pins of port-b. Led’s are connected to emitter side of transistor in series to a 560 ohm resistor. Collector side of each transistor is supplied an external 5 volt signal.
An external 20 Mhz crystal is used to supply clock to microcontroller. Crystal is attached to microcontroller in parallel to two 33 pf capacitors. Push button is attached to Port-D Pin#7. 1 K ohm resistor is attached in series to a push button, other leg of push button is attached to +5v signal.
Code is written using MPLAB-IDE and High Tech C compiler is used to compile code and generate Intel hex file of the code. First the necessary header file htc.h is included in the code. This header file is necessary to be included in every code that is written in MPLAB-IDE and uses High Tech C compiler to compile the code. If you didn’t include this header file in your code the htc(high tech c compiler) compiler will be unable to recognize the code. This header file tells the htc compiler that this is his code and he has to compile it.
_XTAL_FREQ 20e6 statement is specifying the crystal frequency that is attached to the microcontroller. I am Using 20 Mhz external crystal with the controller so i specified 20e6(Equivalent to 20e6=20,000,000).
Statement #define Input RD7 is defining Port-D Pin#7 as Input. Now we can access Port-D Pin#7 with the name ‘Input’. TRISB=0x00; Statement is declaring Port-B as Output. TRISD=0x80; Statement is declaring Port-D Pin#7 as Input. (0x80=1000 00000
Push button to switch off led and release button to switch on led. You can also reverse the logic. Just change the statement if(Input==0) to if(Input==1). This will on led when Push button is pressed and off led when released. Pushing button and releasing it continuously will cause your led seem blinking.
Driving heavy Loads(using Transistor) with the same configuration given above
Some tutorials on driving heavy loads with microcontrollers are below.
- How is the clock supplied to the microcontroller?
An external 20 Mhz crystal is used to supply the clock, attached in parallel to two 33 pf capacitors. - Which port is used as the output port?
Port-B of the Pic16f877 is used as the output port. - What compiler is used to generate the Intel hex file?
The High Tech C compiler is used to compile the code and generate the Intel hex file. - Can this circuit drive heavy loads?
Yes, you can drive heavy loads like a Toy dc motor by removing the LED and attaching the load to the collector side. - How do you change the logic to turn the LED on when the button is pressed?
You must change the statement if(Input==0) to if(Input==1). - What is the maximum voltage and current the 2n2222 transistor supports?
The 2n2222 supports 40 volt and 800 mA between collector and emitter. - How is Port-D Pin#7 configured in the code?
It is declared as an input using the TRISD=0x80 statement. - What software is required to open the project files?
MPLAB software must be installed on your PC to open the project.

