본문 바로가기

AVR 8BIT/디지털도어락

디지털 도어락

안녕하세요 숭덕이 박제현입니다. 요즘 너무 뜸하게 블로그를 관리했네요....무엇을 만들가 무엇을 만들가
고민고민하다가 벌써 이렇게 시간이 많이 지체가 되었네요....이제부터는 작품을 만들어서 작품을 공부하시는 분에게
기증하기로 마음을 먹었습니다. 디지털도어락은 키패드와 LCD 모터부분으로 3개를 준비했습니다. 머 부수적인 부품은 몇개가 있겠지만 큰것만 적어보니 3개 있더라고요!!!! 자 이제 그럼 곧 시작해보겠습니다.


 

 


음 간단히 키패드 확인만 해봤습니다. 음 키패드의 번호가 눌리면 해당 LED가 켜지는것을 했는데요 채터링때문인지 가끔 다른 LED가 켜지는것을 봅니다. 그래서 채터링 방지 딜레이를 사용했습니다. 소스는 아래 있습니다.

 


 #include <mega128.h>
#include <delay.h>


void keypad(void)
{

   PORTC.2=0;
   PORTC.0=1;
   PORTC.1=1;
  
   if(PINC.3==0) PORTE.0=1; else PORTE.0=0; 
   if(PINC.4==0) PORTE.1=1; else PORTE.1=0;
   if(PINC.5==0) PORTE.2=1; else PORTE.2=0;
   if(PINC.6==0) PORTE.3=1; else PORTE.3=0;
  
   delay_ms(5);
  
   PORTC.2=1;
   PORTC.0=1;
   PORTC.1=0;
  
   if(PINC.3==0) PORTE.4=1; else PORTE.4=0; 
   if(PINC.4==0) PORTE.5=1; else PORTE.5=0;
   if(PINC.5==0) PORTE.6=1; else PORTE.6=0;
   if(PINC.6==0) PORTE.7=1; else PORTE.7=0;
  
   delay_ms(5);
  
   PORTC.2=1;
   PORTC.0=0;
   PORTC.1=1;
  
   if(PINC.3==0) PORTD.0=1; else PORTD.0=0; 
   if(PINC.4==0) PORTD.1=1; else PORTD.1=0;
   if(PINC.5==0) PORTD.2=1; else PORTD.2=0;
   if(PINC.6==0) PORTD.3=1; else PORTD.3=0;
}  


void main(void)
{
    DDRC=0x07 ;
    DDRE=0xff; 
   
    while(1)
    {
       keypad();
    
    }

}


자 이제는 LED가 아닌 LCD에 숫자를 표시해보겠습니다....시뮬레이션이 다 완성되면 그때 납땜과 함께 디자인도 하고 해서 집에 소중히 모셔두겠습니다 ^^;;;

 


#include <mega128.h>
#include <delay.h>

#asm
   .equ __lcd_port=0x12 ;
#endasm

#include <lcd.h>

void keypad(void)
{

   PORTC.2=0;
   PORTC.0=1;
   PORTC.1=1;
  
   if(PINC.3==0) PORTE.0=1; else PORTE.0=0; 
   if(PINC.4==0) PORTE.1=1; else PORTE.1=0;
   if(PINC.5==0) PORTE.2=1; else PORTE.2=0;
   if(PINC.6==0) PORTE.3=1; else PORTE.3=0;
  
   delay_ms(5);
  
   PORTC.2=1;
   PORTC.0=1;
   PORTC.1=0;
  
   if(PINC.3==0) PORTE.4=1; else PORTE.4=0; 
   if(PINC.4==0) PORTE.5=1; else PORTE.5=0;
   if(PINC.5==0) PORTE.6=1; else PORTE.6=0;
   if(PINC.6==0) PORTE.7=1; else PORTE.7=0;
  
   delay_ms(5);
  
   PORTC.2=1;
   PORTC.0=0;
   PORTC.1=1;
  
   if(PINC.3==0) PORTD.0=1; else PORTD.0=0; 
   if(PINC.4==0) PORTD.1=1; else PORTD.1=0;
   if(PINC.5==0) PORTD.2=1; else PORTD.2=0;
   if(PINC.6==0) PORTD.3=1; else PORTD.3=0;
}  

void lcd_pal(void)
{
  lcd_gotoxy(0, 0); lcd_putsf("Park jae hyun"); 
  lcd_gotoxy(0, 1); lcd_putsf("010-8741-2739"); 
}

void main(void)
{
    DDRC=0x07;
    DDRD=0xff;
    DDRE=0xff; 
    lcd_init(16);
   
    while(1)
    {
       keypad();
       lcd_pal();
    
    }

}



음 이제 시뮬레이션 테스트는 다 끝났습니다 동영상 첨부하겠습니다. 음 주말에 납땜 유후훗~~~~
작품 하나만들고 테스트.......흠............

 

              



 


60 % 동영상

 

 문제점
 1. 채터링이 심함
 2. 문열림, 문닫힘
 3. 모터 작동시 LCD 멈춤현상
 4. 비밀번호 배열 초기화 후 배열에 비밀번호 다시 입력
 
 고칠 것..
 1. 채터링쪽 딜레이로써 문제점 해결예정
 2. 타이머로 인한 문열림 문닫힘 할 예정 ( 약 5초후 문잠김 )




100 완성...

 


나중에는 온도센서, 조도센서를 달아 집과 비슷한 구조를 만들어보겠습니다...업그레이드 기대하세용!!!!!


나머지는 나중에 가주고 가시는 분에게....
----소스 비공개----



'AVR 8BIT > 디지털도어락' 카테고리의 다른 글

소스  (1) 2011.10.20