Selasa, 14 Februari 2012

Program password menggunakan mikrokontroler AVR Atmega16


Bagi yang dalam proses belajar maupun dapat project dari dosen. Disini ane share program password menggunakan mikrokontroler AVR Atmega16. Contoh program ada dibawah ini. Untuk yang mau unduh, silahkan klik link ini.


/*****************************************************
Project : Program Password
Author  : AJI

Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <alcd.h>
unsigned int I;
unsigned int keypad( );
int i=0;
int j=0,k=0,l=0,m=0,n=0,o=0,p=0,x=0;
void start();
void cek();
void delete();
void delete_1();
void benar();
void salah();
unsigned int keypad()      //Scaning keypad
{
PORTD = 0b11111110;
delay_ms(5);
if(PIND.6==0) return (3);
if(PIND.5==0) return (2);
if(PIND.4==0) return (1);
//========================
PORTD = 0b11111101;
delay_ms(5);      
if(PIND.6==0) return (6);
if(PIND.5==0) return (5);
if(PIND.4==0) return (4);
//========================
PORTD = 0b11111011;
delay_ms(5);      
if(PIND.6==0) return (9);
if(PIND.5==0) return (8);
if(PIND.4==0) return (7);
//========================
PORTD = 0b11110111;
delay_ms(5);      
if(PIND.6==0) return (15);
if(PIND.5==0) return (13);
if(PIND.4==0) return (14);
}

void main(void)
{
PORTA=0x00;DDRA=0x00;
PORTB=0x00;DDRB=0x00;
PORTC=0x00;DDRC=0x00;
PORTD=0xFF;DDRD=0x0F;

lcd_init(16); //lcd PORT B
lcd_gotoxy(3,0);lcd_putsf("WELLCOME @");lcd_gotoxy(1,1);lcd_putsf("PASSWORD LOCKER");delay_ms(1000);lcd_clear();
lcd_gotoxy(2,0);lcd_putsf("Are U Open ?");lcd_gotoxy(1,1);lcd_putsf("PASSWORD LOCKER");delay_ms(1000);lcd_clear();
lcd_gotoxy(1,0);lcd_putsf("Insert Password");delay_ms(1000);lcd_clear();
while (1)
      {
      cek();
      }
}

void cek() //keypad
{
looping:     //looping program utama
lcd_gotoxy(1,0);lcd_putsf("Insert 6 Number");
I=keypad();    
if (I==1)   //angka 1
      {
      lcd_gotoxy(i,1);
      lcd_putsf("1");
      if (i==0)  {o=1;}
      if (i==1)  {j=1;}
      if (i==2)  {k=1;}
      if (i==3)  {l=1;}
      if (i==4)  {m=1;}
      if (i==5)  {n=1;}
      i++;
      delay_ms(300);
      }
if (I==2)   //angka 2
      {
      lcd_gotoxy(i,1);
      lcd_putsf("2");
      if (i==0)  {o=2;}
      if (i==1)  {j=2;}
      if (i==2)  {k=2;}
      if (i==3)  {l=2;}
      if (i==4)  {m=2;}
      if (i==5)  {n=2;}
      i++;
      delay_ms(300);
      }
if (I==3)    //angka 3
      {lcd_gotoxy(i,1);
      lcd_putsf("3");
      if (i==0)  {o=3;}
      if (i==1)  {j=3;}
      if (i==2)  {k=3;}
      if (i==3)  {l=3;}
      if (i==4)  {m=3;}
      if (i==5)  {n=3;}
      i++;
      delay_ms(300);
      }
if (I==4)   //angka 4
      {lcd_gotoxy(i,1);
      lcd_putsf("4");
      if (i==0)  {o=4;}
      if (i==1)  {j=4;}
      if (i==2)  {k=4;}
      if (i==3)  {l=4;}
      if (i==4)  {m=4;}
      if (i==5)  {n=4;}
      i++;
      delay_ms(300);
      }
if (I==5)   //angka 5
      {lcd_gotoxy(i,1);
      lcd_putsf("5");
      if (i==0)  {o=5;}
      if (i==1)  {j=5;}
      if (i==2)  {k=5;}
      if (i==3)  {l=5;}
      if (i==4)  {m=5;}
      if (i==5)  {n=5;}
      i++;
      delay_ms(300);
      }  
if (I==6)    //angka 6
      {lcd_gotoxy(i,1);
      lcd_putsf("6");
      if (i==0)  {o=6;}
      if (i==1)  {j=6;}
      if (i==2)  {k=6;}
      if (i==3)  {l=6;}
      if (i==4)  {m=6;}
      if (i==5)  {n=6;}
      i++;
      delay_ms(300);
      }
if (I==7)    //angka 7
      {
      lcd_gotoxy(i,1);
      lcd_putsf("7");
      if (i==0)  {o=7;}
      if (i==1)  {j=7;}
      if (i==2)  {k=7;}
      if (i==3)  {l=7;}
      if (i==4)  {m=7;}
      if (i==5)  {n=7;}
      i++;
      delay_ms(300);
      }
if (I==8)    //angka 8
      {lcd_gotoxy(i,1);
      lcd_putsf("8");
      if (i==0)  {o=8;}
      if (i==1)  {j=8;}
      if (i==2)  {k=8;}
      if (i==3)  {l=8;}
      if (i==4)  {m=8;}
      if (i==5)  {n=8;}
      i++;
      delay_ms(300);
      }
if (I==9)    //angka 9
      {
      lcd_gotoxy(i,1);
      lcd_putsf("9");
      if (i==0)  {o=9;}
      if (i==1)  {j=9;}
      if (i==2)  {k=9;}
      if (i==3)  {l=9;}
      if (i==4)  {m=9;}
      if (i==5)  {n=9;}
      i++;
      delay_ms(300);
      }
if (I==13)    //angka 0
      {lcd_gotoxy(i,1);
      lcd_putsf("0");
      if (i==0)  {o=0;}    
      if (i==1)  {j=0;}
      if (i==2)  {k=0;}
      if (i==3)  {l=0;}
      if (i==4)  {m=0;}
      if (i==5)  {n=0;}
      i++;
      delay_ms(300);
      }
if (I==15)     // sebagai ENTER
      {
      lcd_gotoxy(i,1);
      lcd_putsf(" ");
      if (i==0)  {o=15;}    
      if (i==1)  {j=15;}
      if (i==2)  {k=15;}
      if (i==3)  {l=15;}
      if (i==4)  {m=15;}
      if (i==5)  {n=15;}
      if (i==6)  {p=15;}
      delay_ms(300);
      }
if (I==14) // sebagai cancel
       {
       i--;
       lcd_gotoxy(i,1);
       lcd_putsf(" ");
       delay_ms(300);    
       }          
start();
goto looping;
}

void start()     // kombinasi angka
{
if ((o==1) && (j==2) && (k==3) && (l==4) && (m==5) && (n==6) && (p==15))  //benar
{benar (); lcd_clear(); delete(); delete_1();}
if ((o==0||o==1||o==2||o==3||o==4||o==5||o==6||o==7||o==8||o==9) && (j==0||j==1||j==2||j==3||j==4||j==5||j==6||j==7||j==8||j==9) && (k==0||k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9) && (l==0||l==1||l==2||l==3||l==4||l==5||l==6||l==7|l==8||l==9) && (m==0||m==1||m==2||m==3||m==4||m==5||m==6||m==7||m==8||m==9) && (n==0||n==1||n==2||n==3||n==4||n==5||n==7||n==8||n==9) && (p==15))  //salah
{salah (); lcd_clear(); delete(); delete_1();}
if (x==3)
{lcd_clear();lcd_gotoxy(2,0);lcd_putsf("U're False 3X");delay_ms(1000);
lcd_clear();lcd_gotoxy(0,0);lcd_putsf("U Can't Continue");delay_ms(1000);while(0);}
}

void delete()
{j=0; k=0; l=0; n=0; m=0; o=0; p=0;}
void delete_1()
{i--;i--;i--;i--;i--;i--;}
void benar()
{lcd_clear();lcd_gotoxy(1,0);lcd_putsf("PASSWORD True");delay_ms(1000);}
void salah()
{lcd_clear();lcd_gotoxy(1,0);lcd_putsf("PASSWORD False");delay_ms(1000);x++;}

Tidak ada komentar:

Posting Komentar