Pic16F877 LCD ŞİFRELİ KAPI KİLİDİ

selo_14

Üye
Katılım
20 Ocak 2007
Mesajlar
6
Puanları
1
Selam arkadaşlar Pic16F877 Lcd Şifreli Kapı Kilidi devresini proje ödevi olarak aldım. Fakat CCS C komutu ile tuş takımlarını 2*16 Lcd ekranda yazdıramadım.Yardımlarınız için teşekkürler.

Pic16F877 LCD ŞİFRELİ KAPI KİLİDİN DEVRENİN CCS C KOMUTU
Kod:
#include <16f877.h>

#fuses hs //kristal tipi belirlendi

#use delay(clock=400000000) //kristal frekansı seçildi

#use fast_io(d) // Port yönlendirme komutları D portu için geçerli

#use fast_io(b) // Port yönlendirme komutları D portu için geçerli

#use fast_io(a) // Port yönlendirme komutları D portu için geçerli



#include <lcd.c>  // lcd.c dosyası tanıtılıyor

#define sut1 pin_b1

#define sut2 pin_b2

#define sut3 pin_b3



#define sat1 pin_a0

#define sat2 pin_a1

#define sat3 pin_a2

#define sat4 pin_a3



int tusa; tusdeger;

int sifre1,sifre2,sifre3,sifre4,sifre5,sifre6,sifre7,sifre8;

int Esifre1,Esifre2,Esifre3,Esifre4;



void tusal()

{

don:



output_low(sut1);output_high(sut2);output_high(sut3);

if(input(sat1)==0){tus=1;goto brk;}

if(input(sat2)==0){tus=4;goto brk;}

if(input(sat3)==0){tus=7;goto brk;}

if(input(sat4)==0){tus=11;goto brk;}



output_high(sut1);output_low(sut2);output_high(sut3);

if(input(sat1)==0){tus=2;goto brk;}

if(input(sat2)==0){tus=5;goto brk;}

if(input(sat3)==0){tus=8;goto brk;}

if(input(sat4)==0){tus=0;goto brk;}



output_high(sut1);output_high(sut2);output_low(sut3);

if(input(sat1)==0){tus=3;goto brk;}

if(input(sat2)==0){tus=6;goto brk;}

if(input(sat3)==0){tus=9;goto brk;}

if(input(sat4)==0){tus=12;goto brk;}

goto don;



brk:

while(!input(sat1));

while(!input(sat2));

while(!input(sat3));

while(!input(sat4));

output_high(buzzer);

delay_ms(150);

output_low(buzzer);



}



void sifreal()

{

tusal();printf(lcd_putc,"*");sifre1=tus;

tusal();printf(lcd_putc,"*");sifre2=tus;

tusal();printf(lcd_putc,"*");sifre3=tus;

tusal();printf(lcd_putc,"*");sifre4=tus;

}



void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

set_tris_a(0b00000000);

set_tris_b(0b01111000);

set_tris_c(0b00000000);

set_tris_d(0b11111111);

port_b_pullups(TRUE);

output_b(0);



lcd_init();

lcd_send_byte(0,0x0c);



bas:

printf(lcd_putc,"\fSERKAN  ");

printf(lcd_putc,"\nISTANBUL UNIV ");

lcd_gotoxy(1,2);

printf(lcd_putc,"*GIRIS    #DEGIS");



Esifre1=read_eeprom(0);

Esifre2=read_eeprom(1);

Esifre3=read_eeprom(2);

Esifre4=read_eeprom(3);

output_low(buzzer);

while(1)

{



tusal();

if(tus==11)

{



printf(lcd_putc,"\f SIFREYI GIRINIZ");

output_high(sari);

delay_ms(250);

output_low(sari);

output_high(kirmizi);

delay_ms(250);

output_low(kirmizi);

output_high(yesil);

delay_ms(250);

output_low(yesil);

output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4)

{printf(lcd_putc,"\f  SIFRE KABUL  ");

lcd_gotoxy(1,2);

printf(lcd_putc,"\     EDILDI ");

output_low(sari);

output_high(yesil);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(kilit);

delay_ms(1000);

output_low(kilit);

delay_ms(1000);

output_low(yesil);

goto bas;}



else

{



printf(lcd_putc,"\f  YANLIS SIFRE ");

lcd_gotoxy(1,2);

printf(lcd_putc,"\  YETKINIZ YOK ");

output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(2000);

output_low(buzzer);

output_low(kirmizi);

goto bas ;}

}





if(tus==12)

{

printf(lcd_putc,"\fESKI SIFREYI GIR");

output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



if(sifre1!=Esifre1&sifre2!=Esifre2&sifre3!=Esifre3&sifre4!=Esifre4)

{printf(lcd_putc,"\f  HATALI GIRIS");

Lcd_gotoxy(1,2);

printf(lcd_putc,"\ TEKRAR DENEYIN");



output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(500);

output_low(buzzer);

delay_ms(500);

output_low(kirmizi);

goto bas;}



if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4){



printf(lcd_putc,"\fYENI SIFRE GIRIN");

output_low(sari);

delay_ms(500)

;output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



printf(lcd_putc,"\f  SIFRE DOGRULA");

output_low(sari);

delay_ms(500);

output_high(sari);

lcd_gotoxy(8,2);



tusal();printf(lcd_putc,"*");sifre5=tus;

tusal();printf(lcd_putc,"*");sifre6=tus;

tusal();printf(lcd_putc,"*");sifre7=tus;

tusal();printf(lcd_putc,"*");sifre8=tus;



printf(lcd_putc,"\f %u %u %u %u",sifre1,sifre2,sifre3,sifre4);

lcd_gotoxy(1,2);

printf(lcd_putc,"\ %u %u %u %u",sifre5,sifre6,sifre7,sifre8);



delay_ms(1500);



if(sifre1==sifre5&sifre2==sifre6&sifre3==sifre7&sifre4==sifre8){

printf(lcd_putc,"\fSIFRENIZ DEGISTI");

output_high(yesil);



write_eeprom(0,sifre1);

write_eeprom(1,sifre2);

write_eeprom(2,sifre3);

write_eeprom(3,sifre4);



delay_ms(1000);

output_low(sari);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);output_low(yesil);goto bas;}



if(sifre1!=sifre5&sifre2!=sifre6&sifre3!=sifre7&sifre4!=sifre8);{

printf(lcd_putc,"\fDOGRULAMA HATASI");

Lcd_gotoxy(1,2);

printf(lcd_putc,"\ TEKRAR DENEYIN");output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(950);

output_low(kirmizi);

goto bas;}



}



}

}

}
 

Ekli dosyalar

  • Pic 16F877 ŞİFRELİ KAPI KİLİDİ.jpg
    Pic 16F877 ŞİFRELİ KAPI KİLİDİ.jpg
    111.8 KB · Görüntüleme: 259
Moderatör tarafında düzenlendi:
Yıllar önce yazdığım kodlar...Baş kısımlarında ufak tefek değişiklikler yapmışsın. Orijinal kodları ve proteus çizimini : ekten indirebilirsin.
Kodları orijinal hali ile kullanıp bağlantıyı da proteustaki gibi yaparsan sorunsuz çalışır. Yalnız unutma kodları pice yazdırırken picin eepromuna ilk şifreyi yazdırman gerekli yoksa çalışmaz.
Orijinal kodlar:
Kod:
#include <16f877.h>

#fuses XT,NOWDT,CPD,PROTECT

#use delay(clock=4000000)

#use fast_io(b)

#use fast_io(d)

#use fast_io(a)

#include <lcd.c>



#define sut3 pin_b0

#define sut2 pin_b1

#define sut1 pin_b2



#define sat1 pin_b3

#define sat2 pin_b4

#define sat3 pin_b5

#define sat4 pin_b6



#define kilit    pin_b7

#define buzzer   pin_c0

#define sari     pin_a0

#define yesil    pin_a1

#define kirmizi  pin_a2



int tus,tusdeger;

int sifre1,sifre2,sifre3,sifre4,sifre5,sifre6,sifre7,sifre8;

int Esifre1,Esifre2,Esifre3,Esifre4;



void tusal()

{

don:



output_low(sut1);output_high(sut2);output_high(sut3);

if(input(sat1)==0){tus=1;goto brk;}

if(input(sat2)==0){tus=4;goto brk;}

if(input(sat3)==0){tus=7;goto brk;}

if(input(sat4)==0){tus=11;goto brk;}



output_high(sut1);output_low(sut2);output_high(sut3);

if(input(sat1)==0){tus=2;goto brk;}

if(input(sat2)==0){tus=5;goto brk;}

if(input(sat3)==0){tus=8;goto brk;}

if(input(sat4)==0){tus=0;goto brk;}



output_high(sut1);output_high(sut2);output_low(sut3);

if(input(sat1)==0){tus=3;goto brk;}

if(input(sat2)==0){tus=6;goto brk;}

if(input(sat3)==0){tus=9;goto brk;}

if(input(sat4)==0){tus=12;goto brk;}

goto don;



brk:

while(!input(sat1));

while(!input(sat2));

while(!input(sat3));

while(!input(sat4));

output_high(buzzer);

delay_ms(150);

output_low(buzzer);



}



void sifreal()

{

tusal();printf(lcd_putc,"*");sifre1=tus;

tusal();printf(lcd_putc,"*");sifre2=tus;

tusal();printf(lcd_putc,"*");sifre3=tus;

tusal();printf(lcd_putc,"*");sifre4=tus;

}



void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

set_tris_a(0b00000000);

set_tris_b(0b01111000);

set_tris_c(0b00000000);

set_tris_d(0b11111111);

port_b_pullups(true);

output_b(0);



lcd_init();

lcd_send_byte(0,0x0c);



bas:

printf(lcd_putc,"\f     GAZITEK ");

lcd_gotoxy(1,2);

printf(lcd_putc,"*GIRIS    #DEGIS");



Esifre1=read_eeprom(0);

Esifre2=read_eeprom(1);

Esifre3=read_eeprom(2);

Esifre4=read_eeprom(3);

output_low(buzzer);

while(1)

{



tusal();

if(tus==11)

{



printf(lcd_putc,"\f SIFREYI GIRINIZ");

output_high(sari);

delay_ms(250);

output_low(sari);

output_high(yesil);

delay_ms(250);

output_low(yesil);

output_high(kirmizi);

delay_ms(250);

output_low(kirmizi);

output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4)

{printf(lcd_putc,"\f  SIFRE KABUL  ");

lcd_gotoxy(1,2);

printf(lcd_putc,"\     EDILDI ");

output_low(sari);

output_high(yesil);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(kilit);

delay_ms(1000);

output_low(kilit);

delay_ms(1000);

output_low(yesil);

goto bas;}



else

{



printf(lcd_putc,"\f  YANLIS SIFRE ");

lcd_gotoxy(1,2);

printf(lcd_putc,"\  YETKINIZ YOK ");

output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(2000);

output_low(buzzer);

output_low(kirmizi);

goto bas ;}

}





if(tus==12)

{

printf(lcd_putc,"\fESKI SIFREYI GIR");

output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



if(sifre1!=Esifre1&sifre2!=Esifre2&sifre3!=Esifre3&sifre4!=Esifre4)

{printf(lcd_putc,"\f  HATALI GIRIS");

Lcd_gotoxy(1,2);

printf(lcd_putc,"\ TEKRAR DENEYIN");



output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(500);

output_low(buzzer);

delay_ms(500);

output_low(kirmizi);

goto bas;}



if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4){



printf(lcd_putc,"\fYENI SIFRE GIRIN");

output_low(sari);

delay_ms(500)

;output_high(sari);

lcd_gotoxy(8,2);

sifreal();

delay_ms(1000);



printf(lcd_putc,"\f  SIFRE DOGRULA");

output_low(sari);

delay_ms(500);

output_high(sari);

lcd_gotoxy(8,2);



tusal();printf(lcd_putc,"*");sifre5=tus;

tusal();printf(lcd_putc,"*");sifre6=tus;

tusal();printf(lcd_putc,"*");sifre7=tus;

tusal();printf(lcd_putc,"*");sifre8=tus;



printf(lcd_putc,"\f %u %u %u %u",sifre1,sifre2,sifre3,sifre4);

lcd_gotoxy(1,2);

printf(lcd_putc,"\ %u %u %u %u",sifre5,sifre6,sifre7,sifre8);



delay_ms(1500);



if(sifre1==sifre5&sifre2==sifre6&sifre3==sifre7&sifre4==sifre8){

printf(lcd_putc,"\fSIFRENIZ DEGISTI");

output_high(yesil);



write_eeprom(0,sifre1);

write_eeprom(1,sifre2);

write_eeprom(2,sifre3);

write_eeprom(3,sifre4);



delay_ms(1000);

output_low(sari);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);output_low(yesil);goto bas;}



if(sifre1!=sifre5&sifre2!=sifre6&sifre3!=sifre7&sifre4!=sifre8);{

printf(lcd_putc,"\fDOGRULAMA HATASI");

Lcd_gotoxy(1,2);

printf(lcd_putc,"\ TEKRAR DENEYIN");output_low(sari);

output_high(kirmizi);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(50);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

output_high(buzzer);

delay_ms(150);

output_low(buzzer);

delay_ms(950);

output_low(kirmizi);

goto bas;}



}



}

}

}
 

Ekli dosyalar

  • 16f877_Lcd_Ekranlı_Ledli_Şifreli_Kapı_Kilidi.rar
    32.8 KB · Görüntüleme: 361
Moderatör tarafında düzenlendi:
Merhaba pic e yüklerken ilk şifreyi nereye nasıl yazmam gerekiyor
 
Benim elimde TC1602D2 LCD ekran var buradaki LM017L yerine kullanabilir miyim acil cevap verirseniz sevinirim şuan devreyi yapıp bitirdim ekran kaldı sadece ?
 
Yıllar önce yazdığım kodlar...Baş kısımlarında ufak tefek değişiklikler yapmışsın. Orijinal kodları ve proteus çizimini : ekten indirebilirsin.
Kodları orijinal hali ile kullanıp bağlantıyı da proteustaki gibi yaparsan sorunsuz çalışır. Yalnız unutma kodları pice yazdırırken picin eepromuna ilk şifreyi yazdırman gerekli yoksa çalışmaz.
Orijinal kodlar:

#include <16f877.h>
#fuses XT,NOWDT,CPD,PROTECT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(d)
#use fast_io(a)
#include <lcd.c>

#define sut3 pin_b0
#define sut2 pin_b1
#define sut1 pin_b2

#define sat1 pin_b3
#define sat2 pin_b4
#define sat3 pin_b5
#define sat4 pin_b6

#define kilit pin_b7
#define buzzer pin_c0
#define sari pin_a0
#define yesil pin_a1
#define kirmizi pin_a2

int tus,tusdeger;
int sifre1,sifre2,sifre3,sifre4,sifre5,sifre6,sifre7,sifre8;
int Esifre1,Esifre2,Esifre3,Esifre4;

void tusal()
{
don:

output_low(sut1);output_high(sut2);output_high(sut3);
if(input(sat1)==0){tus=1;goto brk;}
if(input(sat2)==0){tus=4;goto brk;}
if(input(sat3)==0){tus=7;goto brk;}
if(input(sat4)==0){tus=11;goto brk;}

output_high(sut1);output_low(sut2);output_high(sut3);
if(input(sat1)==0){tus=2;goto brk;}
if(input(sat2)==0){tus=5;goto brk;}
if(input(sat3)==0){tus=8;goto brk;}
if(input(sat4)==0){tus=0;goto brk;}

output_high(sut1);output_high(sut2);output_low(sut3);
if(input(sat1)==0){tus=3;goto brk;}
if(input(sat2)==0){tus=6;goto brk;}
if(input(sat3)==0){tus=9;goto brk;}
if(input(sat4)==0){tus=12;goto brk;}
goto don;

brk:
while(!input(sat1));
while(!input(sat2));
while(!input(sat3));
while(!input(sat4));
output_high(buzzer);
delay_ms(150);
output_low(buzzer);

}

void sifreal()
{
tusal();printf(lcd_putc,"*");sifre1=tus;
tusal();printf(lcd_putc,"*");sifre2=tus;
tusal();printf(lcd_putc,"*");sifre3=tus;
tusal();printf(lcd_putc,"*");sifre4=tus;
}

void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
set_tris_a(0b00000000);
set_tris_b(0b01111000);
set_tris_c(0b00000000);
set_tris_d(0b11111111);
port_b_pullups(true);
output_b(0);

lcd_init();
lcd_send_byte(0,0x0c);

bas:
printf(lcd_putc,"\f GAZITEK ");
lcd_gotoxy(1,2);
printf(lcd_putc,"*GIRIS #DEGIS");

Esifre1=read_eeprom(0);
Esifre2=read_eeprom(1);
Esifre3=read_eeprom(2);
Esifre4=read_eeprom(3);
output_low(buzzer);
while(1)
{

tusal();
if(tus==11)
{

printf(lcd_putc,"\f SIFREYI GIRINIZ");
output_high(sari);
delay_ms(250);
output_low(sari);
output_high(yesil);
delay_ms(250);
output_low(yesil);
output_high(kirmizi);
delay_ms(250);
output_low(kirmizi);
output_high(sari);
lcd_gotoxy(8,2);
sifreal();
delay_ms(1000);

if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4)
{printf(lcd_putc,"\f SIFRE KABUL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"\ EDILDI ");
output_low(sari);
output_high(yesil);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(50);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
output_high(kilit);
delay_ms(1000);
output_low(kilit);
delay_ms(1000);
output_low(yesil);
goto bas;}

else
{

printf(lcd_putc,"\f YANLIS SIFRE ");
lcd_gotoxy(1,2);
printf(lcd_putc,"\ YETKINIZ YOK ");
output_low(sari);
output_high(kirmizi);
output_high(buzzer);
delay_ms(2000);
output_low(buzzer);
output_low(kirmizi);
goto bas ;}
}


if(tus==12)
{
printf(lcd_putc,"\fESKI SIFREYI GIR");
output_high(sari);
lcd_gotoxy(8,2);
sifreal();
delay_ms(1000);

if(sifre1!=Esifre1&sifre2!=Esifre2&sifre3!=Esifre3&sifre4!=Esifre4)
{printf(lcd_putc,"\f HATALI GIRIS");
Lcd_gotoxy(1,2);
printf(lcd_putc,"\ TEKRAR DENEYIN");

output_low(sari);
output_high(kirmizi);
output_high(buzzer);
delay_ms(500);
output_low(buzzer);
delay_ms(500);
output_low(kirmizi);
goto bas;}

if(sifre1==Esifre1&sifre2==Esifre2&sifre3==Esifre3&sifre4==Esifre4){

printf(lcd_putc,"\fYENI SIFRE GIRIN");
output_low(sari);
delay_ms(500)
;output_high(sari);
lcd_gotoxy(8,2);
sifreal();
delay_ms(1000);

printf(lcd_putc,"\f SIFRE DOGRULA");
output_low(sari);
delay_ms(500);
output_high(sari);
lcd_gotoxy(8,2);

tusal();printf(lcd_putc,"*");sifre5=tus;
tusal();printf(lcd_putc,"*");sifre6=tus;
tusal();printf(lcd_putc,"*");sifre7=tus;
tusal();printf(lcd_putc,"*");sifre8=tus;

printf(lcd_putc,"\f %u %u %u %u",sifre1,sifre2,sifre3,sifre4);
lcd_gotoxy(1,2);
printf(lcd_putc,"\ %u %u %u %u",sifre5,sifre6,sifre7,sifre8);

delay_ms(1500);

if(sifre1==sifre5&sifre2==sifre6&sifre3==sifre7&sifre4==sifre8){
printf(lcd_putc,"\fSIFRENIZ DEGISTI");
output_high(yesil);

write_eeprom(0,sifre1);
write_eeprom(1,sifre2);
write_eeprom(2,sifre3);
write_eeprom(3,sifre4);

delay_ms(1000);
output_low(sari);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(50);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);output_low(yesil);goto bas;}

if(sifre1!=sifre5&sifre2!=sifre6&sifre3!=sifre7&sifre4!=sifre8);{
printf(lcd_putc,"\fDOGRULAMA HATASI");
Lcd_gotoxy(1,2);
printf(lcd_putc,"\ TEKRAR DENEYIN");output_low(sari);
output_high(kirmizi);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(50);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(50);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(50);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
output_high(buzzer);
delay_ms(150);
output_low(buzzer);
delay_ms(950);
output_low(kirmizi);
goto bas;}

}

}
}
}


Merhaba pıce programı atarken eeproma şifreyi nasıl yazdırıcaz acaba??
 
arkadaşlar projenın dosyalarıan erişimi olan birisi tekar paylaşabilir mi
 

Forum istatistikleri

Konular
128,132
Mesajlar
915,301
Kullanıcılar
449,849
Son üye
cagan20

Yeni konular

Geri
Üst