Difference between revisions of "Interfacing LCD in 4-bit mode with 8051"
m (Sandeep moved page 8051 Interfacing swithes leds to 8.8051 Interfacing:Switches & LEDs) |
|||
Line 141: | Line 141: | ||
}} | }} | ||
+ | =Downloads= | ||
+ | [http://exploreembedded.com/wiki/images/a/a1/Switches_and_LEDs.zip Code] | ||
Revision as of 11:58, 14 July 2014
Contents
Objective
In this tutorial, we will see how we could interface a simple switch to micrcontroller. Yes, it is indeed very simple, later in this tutorial we will do some logical operations with LEDs and Switches.
Switch Basics
If we directly connect a switch to one of the microcontroller port pins, the pin floats when the switch is open. Meaning, it is not at a fixed logic level 0v or 5v. Hence we pull the pin up through a resistor to 5v(LOGIC 1), as shown in the figure 1. Now, whenever the switch is pressed, it grounds(LOGIC 0) the port pin.
Now we could go ahead and interface it to the microcontroller, but we would rather interface 8 switches and 8 LED's to two ports as shown in the schematic below.
Schematic
As we can see the schematic has basic circuits for oscillator, reset and power connections for the micrcontroller.
- A DIP (dual in line package) Switch, array of 8 switches is connected to PORT3 AND 8 LEDs to PORT2.
- Observe the RR1 component, it is array of 8 resistors in a single pack(SIP). It is as good as connecting 8 pullup resistors as shown in figure 1. You could also use 8 discrete resistors as well.
Experiments
1. Read Switches and Display Status on LEDs
This a very simple one, configure PORT3 (switches) as inputs and PORT2 (LEDs) as outputs; read the switch status and display on LEDs.
- The LEDS and SWITCHES as defined and assigned to P2 and P3 respectively.
- SWITCHES(P3 is made input)
- The switches are read and status is displayed on LEDS continously.
1. Read Switches and Display Status on LEDs #include<reg51.h> #define SWITCHES P3 #define LEDS P2 void main() { unsigned char switchInput; SWITCHES = 0xff; /*Configure SWITCHES as Input */ while(1) { switchInput = SWITCHES; /* Get the SWITCH combination */ LEDS= switchInput; /* Dispaly the SWITCH I/P on LEDS */ } }
2. Logical Operations with LEDs and Switches
For this experiment, we will divide switches into three groups as shown in table 1. Switches connected to P3.7 and P3.6 are Operators,they are selected as shown in table 2 to perform bit-wise logical operations on Group A and Group B.
Table:1
Operation | Group A | Group B | |||||
---|---|---|---|---|---|---|---|
P3.7 | P3.6 | P3.5 | P3.4 | P3.3 | P3.2 | P3.1 | P3.0 |
Table 2:
P3.7 | P3.6 | Operation |
---|---|---|
0 | 0 | AND |
0 | 1 | OR |
1 | 0 | XOR |
1 | 1 | INVERT(group A) |
#include<reg51.h> #define SWITCHES P3 #define LEDS P2 void main() { unsigned char operation,groupA,groupB,result; SWITCHES = 0xff; /*Configure SWITCHES as Input */ while(1) { operation = ((SWITCHES >> 6) & 0x03); /*extract the operation(D6,D7) */ groupA = ((SWITCHES >> 3) & 0x07); /*extract the groupA I/P(D5-D3) */ groupB = (SWITCHES & 0x07); /*extract the groupB I/P(D2-D0) */ switch(operation) /*perform operations as per table*/ { case 0x00: result = groupA & groupB; /* Perform AND operation*/ break; case 0x01: result = groupA | groupB; /* Perform OR operation*/ break; case 0x02: result = groupA ^ groupB; /* Perform XOR operation*/ break; case 0x03: result = (~groupA) & 0x07; /*Invert value of groupA*/ break; default: result = 0x00; break; } LEDS= result; /* Finally dispaly the result on the LEDS */ } }
{{#seo: |title=8051_Interfacing_Switches_LEDs |titlemode=append |keywords=8051,AT89s51,at89c51,p89v51rd2,XploreLabz,Interface,LED,Switch,Read Switches,Logical Operations with LEDs |description=8051 Interfacing switches LEDs }}
Downloads
Would like to have your feedback and suggestions here;