Jump to content
NeXan

Кодовый Замок На 2-Х Микросхемах

Recommended Posts

Всем привет! Собираю кодовый замок по этой схеме: http://cxem.net/house/1-15.php Разработал печатную плату. Захотел добавить схему открытия замка изнутри с кнопки. Один раз кнопку нажимаешь, замок срабатывает и через 5с сбрасывается. Эта схема на печатной плате обозначена в белом овале. Так вот, не подскажете, правильно я ее развел? Сама плата двухсторонняя. И как вам сама печатка? Спасибо.

Схема:

post-73737-0-86705700-1361435209_thumb.jpg

Плата:

post-73737-0-57698400-1361435217_thumb.jpg

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Игорь Теплов
      Здравствуйте, уважаемы форумчане!
      В ходе проектирования цифрового устройства, я столкнулся с парой проблем, решить которые сам не в силах.
      1) Ниже на аттаче реализован кодовый замок на четырёх RS-триггерах, где R2-Сt - времязадающая цепочка. Как только конденсатор Ct зарядится, на вход S первому триггеру пойдёт напряжение высокого уровня (сбрасывая уже введённый код), и если будет нажата кнопка SB1, то на Reset тоже пойдёт логическая единица, что приведёт к невозможному состоянию триггера. Как это предусмотреть и исправить?
      2) При нажатии неправильных кнопок (SB5-SB10) конденсатор быстро зарядится, и подаст напряжение высокого уровня на вход S первого триггера (сбрасывая уже введённый код), но также и переключит реле К2. Таким образом, нажатие неверных кнопок приводят ко включению реле К2, а это очень и очень плохо. Как этого, опять же, избежать?
      Интересующие части выделены красным цветом. Прошу помощи.

    • By NemoS
      Здравствуйте форумчане)
      Недавно начал заниматься микроконтроллерами. Решил сделать кодовый замок по книге Белов А.В. - "Самоучитель разработчика устройств на микроконтроллерах AVR."
      Так вот, хочу реализовать его на ATmega328P-PU c использованием Atmel Studio.
      Ниже код в СV

      /* * Kodovii_zamok.c * Version: 1 * Created: 17.02.2015 13:57:56 * Author: Белов А.В. - Самоучитель разработчика устройств на микроконтроллерах AVR * Chip type: Tiny2313 */ #include <tiny2313.h> #define klfree 0x77f #define kzad 3000 #define kandr 20 #define bsize 30 unsigned char flz; unsigned int bufr[bsize]; #pragma warn- eeprom unsigned char klen; eeprom unsigned int bufe[bsize]; #pragma warn- interrupt[TIM1_OVF] void timer1_ovf_isr(void){ flz=1; } interrupt[TIM1_COMPA] void timer1_compa_isr(void){ flz=1; } unsigned int incod (void) { unsigned int cod0=0; unsigned int cod1; unsigned char k; for (k=0;k<kandr;k++) { cod1=PINB&amp;amp;0x7; cod1=(cod1<<8)+(PIND&amp;amp;0x7F); if (cod0!=cod1) { k=0; cod0=cod1; } } return cod1; } void wait (unsigned char kodz) { if (kodz==1) TIMSK=0x40; else TIMSK=0x80; TCNT1=0; flz=0; #asm("sei"); if (kodz!=2) while(flz==0); } void main(void) { unsigned char ii; unsigned char i; unsigned int codS; PORTB=0xE7; DDRB=0x18; PORTD=0x7F; DDRD=0x00; TCCR1A=0x00; TCCR1B=0x03; TCNT1=0; DCR1A=kzad; ACSR=0x80; while(1) { m1: while(incod()!=klfree); while(incod()==klfree); ii=0; m2: #asm("cli"); wait(1); codS=incod(); bufr[ii++]=codS; if(ii>=bsize)goto m4; wait(2); m3: if(incod()!=codS)goto m2; if(flz==0) goto m3; m4: if(PINB.7==1) goto comp; klen=ii; for(i=0; i<ii; i++) bufe[i]=bufr[i]; goto zamok; comp: if(klen!=ii) goto m1; for(i=0; i<ii; i++) if(bufe[i]!=bufr[i]) goto m1; zamok: PORTB.4=1; wait(3); PORTB.4=0; } }
      Ниже я пытался его перенести в студию на язык Си

      #define F_CPU 8000000 #include <avr/io.h> #include <avr/eeprom.h> #include <avr/interrupt.h> #define klfree 0x77f #define kzad 3000 #define kandr 20 #define bsize 30 unsigned char flz; unsigned int bufr[bsize]; //#pragma warning (default) EEMEM unsigned char klen; EEMEM unsigned int bufe[bsize]; //#pragma warning (default) ISR(TIMER0_OVF_vect) { flz=1; } ISR(TIMER0_COMPA_vect) { flz=1; } unsigned int incod (void) { unsigned int cod0=0; unsigned int cod1; unsigned char k; for (k=0;k<kandr;k++) { cod1=PINB &amp;amp; 0x7; cod1=(cod1<<8)+(PIND &amp;amp; 0x7F); if (cod0!=cod1) { k=0; cod0=cod1; } } return cod1; } void wait (unsigned char kodz) { if (kodz==1) TIMSK0=0x40; else TIMSK0=0x80; TCNT0=0; flz=0; asm("sei"); if (kodz!=2) while(flz==0); } int main(void) { unsigned char ii; unsigned char i; unsigned int codS; PORTB=0xA7; DDRB=0x40; PORTD=0x7F; DDRD=0x00; TCCR0A=0x00; TCCR0B=0x03; TCNT0=0; OCR0A=kzad; ACSR=0x80; while(1) { m1: while(incod()!=klfree); while(incod()==klfree); ii=0; m2: asm("cli"); wait(1); codS=incod(); bufr[ii++]=codS; if(ii>=bsize)goto m4; wait(2); m3: if(incod()!=codS)goto m2; if(flz==0) goto m3; m4: if(PINB |= (1<<7)) goto comp; klen=ii; for(i=0; i<ii; i++) bufe[i]=bufr[i]; goto zamok; comp: if(klen!=ii) goto m1; for(i=0; i<ii; i++) if(bufe[i]!=bufr[i]) goto m1; zamok: PORTB |= (1<<6); wait(3); PORTB &=~(1<<6); } }
      не работает(
      Посоветуйте как заставить этот код работать)

    • By Masterone
      Добрый день. Собрал кодовый замок по вот этой схеме http://cxem.net/mc/mc130.php
      При включении сразу попросило ввести пароль, я ввожу 0000 и оно просит ввести старый пароль, а я старый до этого не вводил. Уже всю статью даже на анл прочитал, не нашел какой там изначальный пароль. Кто что-то понимает в прошивках, пошу посмотреть, и сказать какой там запраграммирован старый пароль. Заранее спасибо, прошивку и исходники можно скачать в конце статьи)
×
×
  • Create New...