Difference between revisions of "Category:Keypad"

From ElectroDragon Wiki
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
== SCH ==
https://w2.electrodragon.com/gollum/search?q=keypad-dat.md
<gallery>
File:Keypad_sch_01.png | Kaypad SCH 01
</gallery>
 
 
=== Demo code ===
 
<syntaxhighlight lang="Arduino">
/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include <Keypad.h>
 
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'0','1','2','3'},
  {'4','5','6','7'},
  {'8','9','A','B'},
  {'C','D','E','F'}
};
byte rowPins[ROWS] = {7, 6, 5, 4}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {11, 10, 9, 8}; //connect to the column pinouts of the keypad
 
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
 
void setup(){
  Serial.begin(9600);
}
 
void loop(){
  char customKey = customKeypad.getKey();
 
  if (customKey){
    Serial.println(customKey);
  }
}
 
</syntaxhighlight>
 
====Updated Demo Code 2013-05-24 ====
We have tested with library on 4X4 keypad, but there is some thing need to change.Please follow the steps.<br />
* Download this [[:File:Keypad.zip|library]], and it's refer to this arduino page.
* Use the example called "custom keypad" in the menu
* switched the pins, pin 1 connect to the keypad will make one row or one column not work out. so let's change all the wirings from 1-4 and 5-7 to 5-7 and 8-11.
* Always try to avoid pin 1, in other keypad version.
 
 
=== Pin Definitions ===
VCC Row 1, 2, 3, 4<br />
NC Column 1, 2, 3, 4<br />
<br />
Output high TTL signal when either row or column buttons are pressed.<br />
=== Demo code ===
* Same demo code for arduino can be found [[Membrane_4*4_button_pad|here]].
<syntaxhighlight lang="c">
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//sbit key1=P3^4;
//sbit key2=P3^5;
//sbit key3=P3^6;
//sbit key4=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
};
uchar num,temp;
void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main ()
{
num=1;
while(1)
{
P3=0xfe;// low TTL on first row
temp=P3;//扫面P3口的数据,送给temp
temp=temp&0xf0;//扫描是否有按键按下,如果有则temp的高四位肯定有一位是0.
while(temp!=0xf0)
{
delay(5);//消抖
temp=P3;//再次读P3口的数据
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
    {
case 0xee: num=1;break;
case 0xde: num=2;break;
case 0xbe: num=3;break;
case 0x7e: num=4;break;
default: break;
    }
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P1=table[num-1];
 
P3=0xfd;//将第二行电平拉低
temp=P3;//扫面P3口的数据,送给temp
temp=temp&0xf0;//扫描是否有按键按下,如果有则temp的高四位肯定有一位是0.
while(temp!=0xf0)
{
delay(5);//消抖
temp=P3;//再次读P3口的数据
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
    {
case 0xed: num=5;break;
case 0xdd: num=6;break;
case 0xbd: num=7;break;
case 0x7d: num=8;break;
default: break;
    }
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P1=table[num-1];
 
P3=0xfb;//将第三行电平拉低
temp=P3;//扫面P3口的数据,送给temp
temp=temp&0xf0;//扫描是否有按键按下,如果有则temp的高四位肯定有一位是0.
while(temp!=0xf0)
{
delay(5);//消抖
temp=P3;//再次读P3口的数据
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
    {
case 0xeb: num=9;break;
case 0xdb: num=10;break;
case 0xbb: num=11;break;
case 0x7b: num=12;break;
default: break;
    }
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
        }
}
}
P1=table[num-1];
 
P3=0xf7;//将第四行电平拉低
temp=P3;//扫面P3口的数据,送给temp
temp=temp&0xf0;//扫描是否有按键按下,如果有则temp的高四位肯定有一位是0.
while(temp!=0xf0)
{
delay(5);//消抖
temp=P3;//再次读P3口的数据
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
    {
case 0xe7: num=13;break;
case 0xd7: num=14;break;
case 0xb7: num=15;break;
case 0x77: num=16;break;
default: break;
    }
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
        }
}
}
P1=table[num-1];
 
}
}
 
</syntaxhighlight>
=== Documents===
* [[:File:Key_header.zip|8051 key header file]].
[[category:input]]

Latest revision as of 17:15, 18 January 2026

Pages in category "Keypad"

This category contains only the following page.