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
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
Moderatör tarafında düzenlendi: