Push Button Interfacing with PIC Microcontroller [Step by Step]
Basically computer system works on 0 and 1 .Here 0 for GND and 1 for VDD .Consider , we have a resistor which is connected with vdd .So at this state the resistor get '1'. Now connect a push button's one end at the point resistor connected with vdd and another end with ground .In this condition if we press the button , the resistor achieve 0 . It is the main theme .
Now we are going to interface push button with Microcontroller and in this tutorial i am going to use microcontroller PIC 18F2550 .
Create a new project in Proteus and follow the instructions .I am just trying to make easy for every one .
[Note : If you don't know how to interface LCD with microcontroller , please follow this tutorial ]
(adsbygoogle = window.adsbygoogle || []).push({});
If you completed those steps , then pick from library ' pic18f2550' , crystal, 22pf capacitor, 10kohm resistor,5Kohm variable resistor ,power, ground , push button and LCD display( "LM016L" Model ) according to the instructions given below .
If you got all parts , you can complete the circuit as given below :
In this circuit , we added resistors one end with PORTC and another end added with VDD . Push button's one end connected with PORTC and atother with GND . In this condition pressing the button will make enable 0 state .
Now we need the Source code for this microcontroller .So Create a new Project in MikroC and follow the instructions :
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(adsbygoogle = window.adsbygoogle || []).push({});
sbit LCD_RS at LATB7_bit;
sbit LCD_EN at LATB6_bit;
sbit LCD_D4 at LATB5_bit;
sbit LCD_D5 at LATB4_bit;
sbit LCD_D6 at LATB3_bit;
sbit LCD_D7 at LATB2_bit;
sbit LCD_RS_Direction at TRISB7_bit;
sbit LCD_EN_Direction at TRISB6_bit;
sbit LCD_D4_Direction at TRISB5_bit;
sbit LCD_D5_Direction at TRISB4_bit;
sbit LCD_D6_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB2_bit;
// End Lcd module connections
void main(){
TRISC.F0=1;
TRISC.F1=1;
ADCON1=0x0F; //Disable Analog to Digital Converter
CMCON=7; // Disable Comperator
Lcd_Init(); // Initialize Lcd
while(1){
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,"Microcontroller");
Lcd_Out(2,4,"Tutorial"); // Write text in first row
delay_ms(400);
if(PORTC.F0==0){
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,"Button_1");
Lcd_Out(2,4,"PORTC.F0"); // Write text in first row
delay_ms(400);
}
if(PORTC.F1==0){
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,"Button_2");
Lcd_Out(2,4,"PORTC.F1"); // Write text in first row
delay_ms(400);
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(adsbygoogle = window.adsbygoogle || []).push({}); Look at Here :
TRISC.F0=1;
TRISC.F1=1;
Here we selected the RESISTER for PORTC . We are using button that means we are providing input for the Microcontroller .As we like to get input from button , we have to define TRISC.F0=1 .Here 1 for input and 0 for output .If we consider TRISC.F0=0 , the RC0 port becomes output port .
if(PORTC.F0==0)
if(PORTC.F1==0)
Here PORTC.F0 or RC0 and PORTC.F0 or RC1 ports are always remaining with +5v .If you press button , the current pass through the button .Because the current will get easy way to meet with ground .At this situation the RC port will get 0 .So when we press button , the RC ports get 0. As it gets 0 ,we can use this in programming logic and we did it .
Now write the source code on mikroC and create .hex file according to the instructions given below :
Now go to Proteus circuit and make a double click on microcontroller to load the .hex file .Please look at the picture given below :
(adsbygoogle = window.adsbygoogle || []).push({});
I have one thing to say, i am just a man having little knowledge . If i have done any mistake ,please pardon me .
http://feeds.feedburner.com/microcontroller_for_beginners