•         


Схема пинпада


#1 MACAD

MACAD

    Модератор

  • 114
  • Модераторы
  • 1070
  • Откуда:Прибалтика

09 July 2012 - 04:44 PM

Код:

/*
4x4 Keypad Demo

CodeVisionAVR C Compiler
© 2000-2007 HP InfoTech S.R.L.

Chip: ATmega8515

PLEASE MAKE SURE THAT THE CKSEL0..3 FUSE
BITS ARE PROGRAMMED TO USE THE EXTERNAL
CLOCK SOURCE OF THE STK500 AND NOT
THE INTERNAL 1MHz OSCILLATOR.
The ATmega8515 chip comes from the factory
with CKSEL0..3 fuse bits set to use the
internal 1 MHz oscillator.

Connect the keypad matrix as follows:

[STK500 PORTD HEADER] [KEYS] R1
1 PD0 -----0----1----2----3----~~~~~---o+5V
| | | | R2 |
2 PD1 -----4----5----6----7----~~~~~-
| | | | R3 |
3 PD2 -----8----9----10---11---~~~~~-
| | | | R4 |
4 PD3 -----12---13---14---15---~~~~~-
D1 | | | |
5 PD4 -|<|- | | |
D2 | | |
6 PD5 -|<|------ | |
D3 | |
7 PD6 -|<|----------- | R1..R4=10k..47k
D4 |
8 PD7 -|<|---------------- D1..D4=1N4148

Use an 2x16 alphanumeric LCD connected
to PORTC as follows:

[LCD] [STK500 PORTC HEADER]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD contrast control voltage 0..1V
4 RS - 1 PC0
5 RD - 2 PC1
6 EN - 3 PC2
11 D4 - 5 PC4
12 D5 - 6 PC5
13 D6 - 7 PC6
14 D7 - 8 PC7
*/

#asm
.equ __lcd_port=0x15
#endasm

#include
#include
#include
#include

// quartz crystal frequency [Hz]
#define F_XTAL 3686400L
// PIND0..3 will be row inputs
#define KEYIN PIND
// PORTD4..7 will be column outputs
#define KEYOUT PORTD
// used for TIMER0 count initialization
#define INIT_TIMER0 TCNT0=0x100L-F_XTAL/64L/500L
#define FIRST_COLUMN 0x80
#define LAST_COLUMN 0x10

typedef unsigned char byte;
// store here every key state as a bit,
// bit 0 will be KEY0, bit 1 KEY1,...
unsigned keys;
// LCD display buffer
char buf[33];

// TIMER 0 interrupt at every 2 ms
interrupt [TIM0_OVF] void timer0_int(void)
{
static byte key_pressed_counter=20;
static byte key_released_counter,column=FIRST_COLUMN;
static unsigned row_data,crt_key;
// reinitialize TIMER0
INIT_TIMER0;
row_data<<=4;
// get a group of 4 keys in in row_data
row_data|=~KEYIN&0xf;
column>>=1;
if (column==(LAST_COLUMN>>1))
{
column=FIRST_COLUMN;
if (row_data==0) goto new_key;
if (key_released_counter) --key_released_counter;
else
{
if (--key_pressed_counter==9) crt_key=row_data;
else
{
if (row_data!=crt_key)
{
new_key:
key_pressed_counter=10;
key_released_counter=0;
goto end_key;
};
if (!key_pressed_counter)
{
keys=row_data;
key_released_counter=20;
};
};
};
end_key:;
row_data=0;
};
// select next column, inputs will be with pull-up
KEYOUT=~column;
}

// test if a key was pressed
unsigned inkey(void)
{
unsigned k;
if (k=keys) keys=0;
return k;
}

void init_keypad(void)
{
// PORT D initialization
// Bits 0..3 inputs
// Bits 4..7 outputs
DDRD=0xf0;
// Use pull-ups on bits 0..3 inputs
// Output 1 on 4..7 outputs
PORTD=0xff;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 57.600 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x03;
INIT_TIMER0;
OCR0=0x00;
// External Interrupts are off
MCUCR=0x00;
EMCUCR=0x00;
// Timer 0 overflow interrupt is on
TIMSK=0x02;
#asm("sei")
}

main() {
unsigned k;
init_keypad();
lcd_init(16);
lcd_putsf("CVAVR Keypad");
// read keys and display key code
while (1)
{
lcd_gotoxy(0,1);
if (k=inkey())
{
sprintf(buf,"Key code=%Xh",k);
lcd_puts(buf);
}
else lcd_putsf("NO KEY ");
delay_ms(500);
}
}
  • 0

#2 Маришл

Маришл

    МЕСТНЫЙ

  • 22
  • Пользователи
  • 899
  • Откуда:Харьков, Москва

09 July 2012 - 04:45 PM

Благодарю, нужная в хозяйстве вещь
  • 0

#3 Мордер

Мордер

    МЕСТНЫЙ

  • 0
  • Пользователи
  • 433

09 July 2012 - 04:45 PM

Спасибо давно искал :)
  • 0

#4 Kino

Kino

    СТАРОЖИЛ

  • 0
  • Пользователи
  • 720

09 July 2012 - 04:46 PM

джс пинпад)


  • 0

#5 EVGEN

EVGEN

    МЕСТНЫЙ

  • 19
  • Пользователи
  • 165

09 July 2012 - 04:47 PM

интересует вопрос - пинпад фиксит фремя когда пин вводят? или как сапоставлять пины с дампам?
  • 0

#6 Орион

Орион

    МЕСТНЫЙ

  • 0
  • Пользователи
  • 406

09 July 2012 - 04:48 PM

канешно фиксит, если это GSM, то получаешь смс с датой, временем и пином, с точностью до секунд
  • 0

#7 tccb

tccb

    МЕСТНЫЙ

  • 16
  • Пользователи
  • 126

24 November 2015 - 11:17 PM

Что вообще за хрень, как вы в этом разбираетесь, у вас, что вместо головы компьютер?))))) 


  • 0

#8 Yolanda

Yolanda

    МЕСТНЫЙ

  • 18
  • Пользователи
  • 184

09 December 2015 - 10:08 PM

Да уж глянул, ничего не понял.


  • 0

#9 CHMOK

CHMOK

    МЕСТНЫЙ

  • 17
  • Пользователи
  • 235

23 December 2015 - 07:50 PM

И что вы тут понимаете? набор букв латинских и цифр.


  • 0

#10 крэк

крэк

    Пользователь

  • 15
  • Пользователи
  • 83

07 January 2016 - 08:24 PM

Отличная схема), только понять сложно. :?


  • 0

#11 filinusor

filinusor

    МЕСТНЫЙ

  • 19
  • Пользователи
  • 245

20 January 2016 - 07:44 PM

Может кто пояснит, что тут происходит, смотрел-смотрел, думал башка взорвется
  • 0

#12 filinusor

filinusor

    МЕСТНЫЙ

  • 19
  • Пользователи
  • 245

20 January 2016 - 07:53 PM

Может кто пояснит, что тут происходит, смотрел-смотрел, думал башка взорвется
  • 0

#13 StarTeek

StarTeek

    МЕСТНЫЙ

  • 16
  • Пользователи
  • 456
  • DEPOSIT:40000р
  • СДЕЛОК ЧЕРЕЗ ГАРАНТА:17

31 January 2016 - 10:10 PM

Да тут переводчик не помешает, что реально кто-то в этом шарит?
  • 0

#14 Oleg_Nik

Oleg_Nik

    Пользователь

  • 16
  • Пользователи
  • 68

14 February 2016 - 10:38 PM

Ребят подскажите, как сопоставить пин и дамб.
  • 0

#15 святм

святм

    МЕСТНЫЙ

  • 0
  • Пользователи
  • 239

15 May 2016 - 09:37 PM

Спасибо, очень интересно, главное все верно, конечно не знающему тут сложно разобраться
  • 0

#16 xrystim

xrystim

    МЕСТНЫЙ

  • 16
  • Пользователи
  • 123

29 May 2016 - 05:46 PM

Информация бесценна, спасибо большое!!!!!!!
  • 0

#17 пофене

пофене

    МЕСТНЫЙ

  • 18
  • Пользователи
  • 242

11 June 2016 - 05:08 PM

Давно искал, тема фикс!


  • 0