EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Replies /     interfacing keypad and

    interfacing keypad and

|

Projects › Projects › How to interface keypad with 8051 microcontroller (AT89C51) ›     interfacing keypad and

August 12, 2011 at 10:48 am #6604
Qaisar
Participant

 

 

interfacing keypad and seven segment with 89C51

 

C Code:

//////////////////////////////////////////////////////////////////////////

 

#include <AT89X51.H>
#include <my.h>   //delay built in function

#define led P1_0

char unit, tens,e = 0;

char scan (void);

 

#define row1 P3_0
#define row2 P3_1
#define row3 P3_2
#define row4 P3_3

 

#define col1 P3_4
#define col2 P3_5
#define col3 P3_6
#define col4 P3_7 

 

unsigned char ch = 0;
unsigned int ar[1] = 0;
unsigned int font[10];
unsigned char counter = 0;

 

void decode(void)
{
 unit = e % 10;
 tens = (e % 100) / 10;

 unit = font[unit];
 tens = font[tens];
 

}
 void display(void)
{
 int i = 0;

 for(i = 0; i < 100; i++)
 {

 P0 = unit;
 P2_1 = 0;
 delay(1);
 P2_1 = 1;

 P0 = tens;
 P2_0 = 0;
 delay(1);
 P2_0 = 1;

 

}}

 

void main (void)
{               // 7 seg equivalent code

    font[0] = 0x3f;
    font[1] = 0x06;
    font[2] = 0x5b;
    font[3] = 0x4f;
    font[4] = 0x66;
    font[5] = 0x6d;
    font[6] = 0x7d;
    font[7] = 0x07;
    font[8] = 0x7f;
    font[9] = 0x6f;

while(1)
{
decode();
display();

 ch = scan();
 
 if(ch != 100)
 {
  if(ch == 13)  // % symbol in keypad causes reset
  {
   e = 0;
   counter= 0;
   
  }
  if(ch < 10)
  {
   e = ch;
   
   if(counter < 2)
   {
    ar[counter] = ch;
    counter++;

    if(counter == 2)
    {
     e = ar[0] * 10;
     e = e + ar[1];

     decode();
     display();
     counter = 0;
}}

}}}  }
 

 

 

char scan (void)

{
row1 = 0;
row2 = 1;
row3 = 1;
row4 = 1;

col1 = 1;
col2 = 1;
col2 = 1;
col4 = 1;

 
if (col1 == 0)
{
led = 1;
delay(100);
led = 0;
return 1;
}

if (col2 == 0)
{
led = 1;
delay(100);
led = 0;

return 2;
}

if (col3 == 0)
{
led = 1;
delay(100);
led = 0;

return 3;
}

if (col4 == 0)
{
led = 1;
delay(100);
led = 0;

return 13;
}

 

row1 = 1;
row2 = 0;

if (col1 == 0)
{
led = 1;
delay(100);
led = 0;

return 4;
}

if (col2 == 0)
{
led = 1;
delay(100);
led= 0;

return 5;
}

if (col3 == 0)
{
led = 1;
delay(100);
led = 0;

return 6;
}

if (col4 == 0)
{
led = 1;
delay(100);
led = 0;

return 14;
}

 

row2 = 1;
row3 =0;

if (col1 == 0)
{
led = 1;
delay(100);
led = 0;

return 7;
}

if (col2 == 0)
{
led = 1;
delay(100);
led = 0;

return 8;
}

if (col3 == 0)
{
led = 1;
delay(100);
led = 0;

return 9;
}

if (col4 == 0)
{
led = 1;
delay(100);
led = 0;

return 15;
}

 

row3 = 1;
row4 = 0;

if (col1 == 0)
{
led = 1;
delay(100);
led = 0;

return 11;
}

if (col2 == 0)
{
led = 1;
delay(100);
led = 0;

return 0;
}

if (col3 == 0)
{
led = 1;
delay(100);
led = 0;

return 12;
}

if (col4 == 0)
{
led = 1;
delay(100);
led = 0;

return 16;
}

row4 = 1;

return 100;
}

 

wysiwyg_imageupload:2503:

RSS Recent Posts

  • AI algorithm for bots April 17, 2026
  • SDCC Array Access In Timer 0 Interrupt Handler April 16, 2026
  • EasyEda program has a major bug April 16, 2026
  • ANOTHER OLD PROJECT REDO April 16, 2026
  • How to set the OSCAL in a PIC 12F675 April 16, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise