
Hazırlayanlar: Ahmet Suat BERDİBEK ve Servet GÜNOĞLU Emeği geçen Kişilere Teşekkürler
Ayrıca Profahmet Hocamızın PIC16F877 ile LCD Göstergeli Şifreli Kilit projesine bakmanızda fayda var
Amaç : PIC16F877, LCD ve Klavye kullanarak devre tasarımı yapmak ve bir program ile çalışmasını incelemek.
Teorik Bilgi Mikrodenetleyiciler : Mikrodenetleyici; bir bilgisayar içerisinde bulunması gereken giriş-çıkış ve hafıza gibi temel bileşenleri tek bir yonga üzerinde üretilmiş gelişmiş mikroişlemcilerdir.
PIC16F877 Mikrodenetleyiciler : Bu mikrodenetleyiciler Harvard mimarisi temelli olup bu mimarinin özelliklerini taşır.
PIC 16F877 Özellikleri:
Program ve veri için ayrı hafıza kullanılmıştır.
Veri yolu 8 bitliktir.
Program hafızası 8KB x 14 bitliktir.
35 komuta sahiptir.
Giriş / çıkış akımı 25 mA
Dış mimarisi 40 pinlidir.
368 x 8 byte’lık veri hafızasına sahip.
256 x 8 byte’lık data EEPROM veri hafızasına sahip.
LCD Ekran : 7 segment display ile sayıların dışında diğer karakterleri , harfleri ,işaretleri elde etmek imkansızdır. Bunun için LCD ekranlar kullanılır. LCD’ler bilgisayarda kullanılan ekran kartları gibi ekrana yazılan bilgilerin sürekli görünebilmeleri için tarama işlemi yapan entegrelerle birlikte üretilip satılırlar. Bu entegrenin özelliklerini tam olarak bilmek ekranı her yönüyle kontrol etmek manasına gelir.
Genelde kullanılan bir LCD sürücü entegresi Hitachi firmasının üretmiş olduğu HD44780 entegresidir. Bu entegrenin kullanıldığı tüm display’leri aynı mantıkla kontrol etmek mümkündür. Tek değişiklik LCD’nin kaç satır ve digitten oluştuğunu bilmektir.
Klavye : Mikroişlemcili sistemlerde çoğu kez giriş bilgileri klavye ile girilir. Klavyeler satır ve sütün şeklinde oluşturulduklarında hangi tuşa basıldığını bulmak daha kolaydır.Satırlar çıkış, sütunlar giriş olarak tanımlıdır.
Yardımcı Elemanlar : Bunlar ise; devrenin çalışmasına yardımcı olan elemanlardır. Kare dalga ve Clock Puls üreten Osilatör ve kristal elemanlar ile direnç, kondansatör ve led diyot bu yardımcı elemanlardan sayılabilir.
Şifreli Kapı Kilidi Devre Şeması
Projenin hex yazılım Dosya indirme LINK listesi (TXT formatında) link-4156.zip şifre-pass: 320volt.com
Asm Yazılımı
; PicBasic Pro Compiler 2.40, (c) 1998, 2001 microEngineering Labs, Inc. All Rights Reserved. PM_USED EQU 1 INCLUDE "16F877.INC" ; Define statements. #define CODE_SIZE 8 #define LCD_DREG PORTC #define LCD_DBIT 0 #define LCD_BITS 4 #define LCD_RSREG PORTC #define LCD_RSBIT 6 #define LCD_EREG PORTC #define LCD_EBIT 7 #define LCD_LINES 2 RAM_START EQU 00020h RAM_END EQU 001EFh RAM_BANKS EQU 00004h BANK0_START EQU 00020h BANK0_END EQU 0007Fh BANK1_START EQU 000A0h BANK1_END EQU 000EFh BANK2_START EQU 00110h BANK2_END EQU 0016Fh BANK3_START EQU 00190h BANK3_END EQU 001EFh EEPROM_START EQU 02100h EEPROM_END EQU 021FFh R0 EQU RAM_START + 000h R1 EQU RAM_START + 002h R2 EQU RAM_START + 004h R3 EQU RAM_START + 006h R4 EQU RAM_START + 008h R5 EQU RAM_START + 00Ah R6 EQU RAM_START + 00Ch R7 EQU RAM_START + 00Eh R8 EQU RAM_START + 010h T1 EQU RAM_START + 012h T2 EQU RAM_START + 014h FLAGS EQU RAM_START + 016h GOP EQU RAM_START + 017h RM1 EQU RAM_START + 018h RM2 EQU RAM_START + 019h RR1 EQU RAM_START + 01Ah RR2 EQU RAM_START + 01Bh _SIFRE EQU RAM_START + 01Ch _GENELADR EQU RAM_START + 021h _GIR_S_A_B EQU RAM_START + 022h _H_KOD EQU RAM_START + 023h _I EQU RAM_START + 024h _J EQU RAM_START + 025h _KONTROL EQU RAM_START + 026h _SFR_S EQU RAM_START + 027h _SS_KOD EQU RAM_START + 028h _UMUMI EQU RAM_START + 029h _PORTL EQU PORTB _PORTH EQU PORTC _TRISL EQU TRISB _TRISH EQU TRISC #define _OPTION_REG_7 OPTION_REG, 007h #define _INTCON_0 INTCON, 000h #define _STATUS_2 STATUS, 002h #define _PORTB_4 PORTB, 004h #define _PORTB_5 PORTB, 005h #define _PORTB_6 PORTB, 006h #define _KONTROL_7 _KONTROL, 007h #define _PORTE_0 PORTE, 000h ; Constants. _KULL_S_ADR EQU 00000h ; EEPROM data. ORG EEPROM_START ORG EEPROM_START + 000h DE 001h DE 007h DE 000h DE 006h DE 001h INCLUDE "SIFRE2~1.MAC" INCLUDE "PBPPIC14.LIB" ASM? DEVICE WDT_OFF ENDASM? ONINT?LL _KESME, L00001 LABEL?L _BASLA ICALL?L L00001 MOVE?CB 000h, TRISE ICALL?L L00001 MOVE?CB 070h, TRISB ICALL?L L00001 MOVE?CB 007h, ADCON1 ICALL?L L00001 MOVE?CB 00Fh, PORTB ICALL?L L00001 MOVE?CT 001h, _OPTION_REG_7 ICALL?L L00001 MOVE?CB 088h, INTCON ICALL?L L00001 MOVE?CB 000h, _KONTROL LABEL?L _EN_B_DON ICALL?L L00001 PAUSE?C 001F4h ICALL?L L00001 LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 02Dh LCDOUT?C 02Dh LCDOUT?C 020h LCDOUT?C 078h LCDOUT?C 078h LCDOUT?C 020h LCDOUT?C 02Dh LCDOUT?C 02Dh ICALL?L L00001 LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 02Dh LCDOUT?C 02Dh LCDOUT?C 020h LCDOUT?C 078h LCDOUT?C 078h LCDOUT?C 020h LCDOUT?C 02Dh LCDOUT?C 02Dh ICALL?L L00001 PAUSE?C 001F4h LABEL?L _DON ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ASM? nop ENDASM? ICALL?L L00001 MOVE?CB 088h, INTCON ICALL?L L00001 GOTO?L _DON DISABLE? LABEL?L _KESME PAUSE?C 00Fh MOVE?CB 000h, _I MOVE?CT 000h, _INTCON_0 LABEL?L _ACIK LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 053h LCDOUT?C 069h LCDOUT?C 066h LCDOUT?C 072h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah LCDOUT?C 069h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 047h LCDOUT?C 069h LCDOUT?C 072h LCDOUT?C 069h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah LABEL?L _KLAVYE_TRA MOVE?CB 00Fh, PORTB GOSUB?L _ACIK_TEST LABEL?L _TARA PAUSE?C 014h XOR?BCB PORTB, 00Fh, _UMUMI CMPEQ?TCL _STATUS_2, 001h, _TARA PAUSE?C 014h XOR?BCB PORTB, 070h, _UMUMI CMPEQ?TCL _STATUS_2, 001h, _TARA LABEL?L _BUTON_ARA MOVE?CB 001h, PORTB CMPNE?TCL _PORTB_4, 000h, L00003 CMPNE?TCL _PORTB_5, 000h, L00005 CMPNE?TCL _PORTB_6, 000h, L00007 GOTO?L _IKI_S LABEL?L L00007 LABEL?L L00005 LABEL?L L00003 GOTO?L _BU_S LABEL?L _IKI_S MOVE?CB 002h, PORTB CMPNE?TCL _PORTB_4, 000h, L00009 CMPNE?TCL _PORTB_5, 000h, L00011 CMPNE?TCL _PORTB_6, 000h, L00013 GOTO?L _UC_S LABEL?L L00013 LABEL?L L00011 LABEL?L L00009 GOTO?L _BU_S LABEL?L _UC_S MOVE?CB 004h, PORTB CMPNE?TCL _PORTB_4, 000h, L00015 CMPNE?TCL _PORTB_5, 000h, L00017 CMPNE?TCL _PORTB_6, 000h, L00019 GOTO?L _DORT_S LABEL?L L00019 LABEL?L L00017 LABEL?L L00015 GOTO?L _BU_S LABEL?L _DORT_S MOVE?CB 008h, PORTB CMPNE?TCL _PORTB_4, 000h, L00021 CMPNE?TCL _PORTB_5, 000h, L00023 CMPNE?TCL _PORTB_6, 000h, L00025 GOTO?L _BUTON_ARA LABEL?L L00025 LABEL?L L00023 LABEL?L L00021 GOTO?L _BU_S LABEL?L _BU_S MOVE?BB PORTB, _SS_KOD MOVE?CB 000h, _H_KOD LABEL?L _H_BUL GOSUB?L _TABLO CMPEQ?BBL _UMUMI, _SS_KOD, L00027 ADD?BCB _H_KOD, 001h, _H_KOD CMPLT?BCL _H_KOD, 00Ah, L00029 MOVE?CB 000h, _H_KOD GOTO?L _BUTON_ARA LABEL?L L00029 GOTO?L _H_BUL LABEL?L L00027 LABEL?L _DOGRU CMPGT?BCL _H_KOD, 009h, _KLAVYE_TRA AIN?BBB _H_KOD, _SIFRE, _I ADD?BCB _I, 001h, _I CMPNE?BCL _I, 001h, L00031 LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 02Ah GOTO?L L00032 LABEL?L L00031 LCDOUT?C 02Ah LABEL?L L00032 CMPNE?BCL _I, 005h, L00033 MOVE?CB 000h, _H_KOD MOVE?CB 000h, _I CMPNE?TCL _KONTROL_7, 000h, L00035 GOTO?L _S_TEST GOTO?L L00036 LABEL?L L00035 GOTO?L _S_DEGISTIR_DVM LABEL?L L00036 LABEL?L L00033 MOVE?CB 000h, _H_KOD GOTO?L _KLAVYE_TRA LABEL?L _S_TEST MOVE?CB 000h, _J LABEL?L _TEKRR ADD?CBW _KULL_S_ADR, _J, T1 READ?WB T1, _UMUMI AOUT?BBB _SIFRE, _J, T1 CMPNE?BBL T1, _UMUMI, L00037 ADD?BCB _J, 001h, _J CMPNE?BCL _J, 005h, L00039 GOTO?L _G_KABUL GOTO?L L00040 LABEL?L L00039 GOTO?L _TEKRR LABEL?L L00040 LABEL?L L00037 GOTO?L _IPTAL LABEL?L _IPTAL LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 059h LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 04Ch LCDOUT?C 049h LCDOUT?C 053h LCDOUT?C 020h LCDOUT?C 053h LCDOUT?C 069h LCDOUT?C 066h LCDOUT?C 072h LCDOUT?C 065h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 054h LCDOUT?C 045h LCDOUT?C 04Bh LCDOUT?C 052h LCDOUT?C 041h LCDOUT?C 052h LCDOUT?C 020h LCDOUT?C 044h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 079h LCDOUT?C 069h LCDOUT?C 06Eh PAUSE?C 00BB8h GOTO?L _CIKIS LABEL?L _ACIK_TEST PAUSE?C 00Ah CMPNE?TCL _PORTB_4, 000h, L00041 CMPNE?TCL _PORTB_5, 000h, L00043 CMPNE?TCL _PORTB_6, 000h, L00045 RETURN? LABEL?L L00045 LABEL?L L00043 LABEL?L L00041 GOTO?L _ACIK_TEST LABEL?L _G_KABUL LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 054h LCDOUT?C 065h LCDOUT?C 072h LCDOUT?C 063h LCDOUT?C 069h LCDOUT?C 068h LCDOUT?C 069h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah LCDOUT?C 028h LCDOUT?C 030h LCDOUT?C 02Ch LCDOUT?C 031h LCDOUT?C 029h MOVE?CB 00Fh, PORTB PAUSE?C 007D0h LABEL?L _TRC_TST CMPNE?TCL _PORTB_4, 000h, L00047 CMPNE?TCL _PORTB_5, 000h, L00049 GOTO?L _TRC_TST GOTO?L L00050 LABEL?L L00049 GOTO?L _S_DEGISTIR LABEL?L L00050 GOTO?L L00048 LABEL?L L00047 GOTO?L _KILIT_AC LABEL?L L00048 LABEL?L _KILIT_AC LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 047h LCDOUT?C 069h LCDOUT?C 072h LCDOUT?C 069h LCDOUT?C 073h LCDOUT?C 020h LCDOUT?C 047h LCDOUT?C 065h LCDOUT?C 063h LCDOUT?C 065h LCDOUT?C 072h LCDOUT?C 06Ch LCDOUT?C 069h PAUSE?C 003E8h MOVE?CT 001h, _PORTE_0 LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 069h LCDOUT?C 079h LCDOUT?C 069h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 047h LCDOUT?C 075h LCDOUT?C 06Eh LCDOUT?C 06Ch LCDOUT?C 065h LCDOUT?C 072h PAUSE?C 00FA0h MOVE?CT 000h, _PORTE_0 GOTO?L _CIKIS LABEL?L _S_DEGISTIR LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 059h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 020h LCDOUT?C 053h LCDOUT?C 069h LCDOUT?C 066h LCDOUT?C 072h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah LCDOUT?C 069h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 047h LCDOUT?C 069h LCDOUT?C 072h LCDOUT?C 069h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah MOVE?CT 001h, _KONTROL_7 PAUSE?C 001F4h GOTO?L _KLAVYE_TRA LABEL?L _S_DEGISTIR_DVM MOVE?CB 000h, _J LABEL?L L00051 CMPGT?BCL _J, 004h, L00052 ADD?CBW _KULL_S_ADR, _J, T1 AOUT?BBB _SIFRE, _J, T2 WRITE?WB T1, T2 NEXT?BCL _J, 001h, L00051 LABEL?L L00052 LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 059h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 020h LCDOUT?C 053h LCDOUT?C 069h LCDOUT?C 066h LCDOUT?C 072h LCDOUT?C 065h LCDOUT?C 06Eh LCDOUT?C 069h LCDOUT?C 07Ah LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 059h LCDOUT?C 049h LCDOUT?C 054h LCDOUT?C 020h LCDOUT?C 045h LCDOUT?C 064h LCDOUT?C 069h LCDOUT?C 06Ch LCDOUT?C 064h LCDOUT?C 069h PAUSE?C 00BB8h LABEL?L _CIKIS LCDOUT?C 0FEh LCDOUT?C 001h MOVE?CB 000h, _KONTROL MOVE?CB 00Fh, PORTB MOVE?CB 000h, INTCON PAUSE?C 064h MOVE?CT 000h, _INTCON_0 RESUME?L _EN_B_DON LABEL?L _TABLO LOOKUP?BCLB _H_KOD, 00Ch, L00002, _UMUMI LURET?C 011h LURET?C 021h LURET?C 041h LURET?C 012h LURET?C 022h LURET?C 042h LURET?C 014h LURET?C 024h LURET?C 044h LURET?C 018h LURET?C 028h LURET?C 048h LABEL?L L00002 RETURN? ENABLE? ICALL?L L00001 END? END
Bizim Projemizde ise kullanılan malzemeler şunlardır :
pic16f877 Entegresi
2 x 16 LCD Ekran
4 x 3 Klavye
4 MHZ Kristal Osilatör
3 adet 4,7 Kohm direnç
1 adet 2,2 Kohm direnç
1 adet 1 Kohm direnç
1 adet 330 ohm direnç
1 adet 27 pf Kondansatör
1 adet led diyot
Baskı devre malzemeleri
Lehim
Projenin Yapılışı :
a-) Donanım
– Gerekli olan tüm elemanlar temin edildi.
– Elde edilen malzemelerin sağlamlık kontrolü yapıldı.
– PIC16F877 ile ilgili baskı devre şeması çıkarıldı.
– Uygun plakete baskı devre şekli çizildi.
– Perhidrol ve gerekli malzemeler kullanılarak bağlantı şekli çıkarıldı.
– Lehimleme işlemleri tamamlandı.
– Gerekli elemanlar soketler üzerine yerleştirildi.
– En son kontroller yapılarak donanım özellikleri tamamlandı.
b-) Yazılım
Baskı devre yardımıyla oluşturulan devrede kullanılacak PIC için gerekli olan program metin editöründe yazıldıktan sonra MPLAB programının MPASM editörü kullanılarak PIC’in anlayacağı hex kodlarına çevirilerek PIC’e yüklendi.
Projenin Çalıştırılması:
1. Öncelikle devreye 5V’luk bir gerilim uygulanır. Daha sonra LCD ekrana bir yazı gelir.
2. Klavyede herhangi bir tuşa basılırsa ekrana şifre girin mesajı gelir. Yanlış şifre girersek şifrenin yanlış olduğuna dair hata mesaji verir. Doğru şifre girersek ekrana 0 veya 1 tercihini yapmamızı isteyen mesaj gelir. (Bu devrenin şifresi 22222 dir.)
3. 0 tuşuna basarsak kapı açılır ve ekrana iyi günler mesajı gelir. 4 sn sonra kapı kapanır.
4. Eğer şifremizi değiştirmek istiyorsak 1 tuşuna basılır. Bu tuşa basılırsa ekrana yeni şifre girin mesajı gelir. Yeni şifremizi girdikten sonra ekrana şifreniz kaydedildi mesajı gelir.
Yayım tarihi: 2008/11/21 Etiketler: HD44780, klavye, lcd devreleri, microchip pic projeleri, mikrodenetleyici, PIC16F877 örnekleri, proje, şifreli kilit
Bu devrenin şemasındaki dirençlerin değerleri anlaşılmıyor resimden biraz daha ayrıntı verebilirmisiniz? okulu bitirmek için kullanacağım bu projeyi. Lütfen yardımcı olurmusunuz ?
LCD üzerindeki direnç parlaklık için 1k…5k arası kullanabilirsiniz diğer dirençler ise 10k olabilir
Led ve kondansatör nerede kullanacağız
Simülasyon üzerinde osilatör için gerekli malzemeler görünmez bunları devreyi yaparken ekleyeceksiniz örneğin osilatör bölümü 1 kristal ve 2 kondansatörden oluşur
Gerekli değil ama ek olarak PIC besleme bölümüne gösterge için led bağlanabilir
yukarıdaki devrenin şemasında kullandığınız direçler kaç ohm olduklarını yazmamışsınız onları ögrene bilirmiyim
şifreli kapı kilit devresinin baskı ön izleme şemasınıı nasıl bulabiliriz yardımcı olabilirmisiniz
Çok teşekkürler çok güzel bir poje olcak ellerinize sağlık 😀
Güzel bir devre ama çok zor bu devrenin hazırı yokmudur ? 🙁
benim bir sorum olacak benim aldığım bir proje ödevi var şifreli kilit devresi ama benimki 5 kulllanıcılı bir devre olacak bunun için devreye 5 şifre kaydetmemiz gerekecek bunu nasıl yapabiliriz
merhaba, ben de bu projeyi okulum için kullanmak istiyorum. bu söylediklerinizi harfiyen uygularsam bir problem çıkmaz değil mi? ayrıca klavyeden şifre giriyoruz ya, klavye nereye nasıl bağlanacak tam olarak anlayamadım. yardımcı olursanız sevinirim.
hocam gerçekten güzel bir devre yalnız isis ten çizmiş olduğunuz devrelerin değerleri bulanık çıkmış okuyamıyorum. Değerleri gözükecek şekilde resmini paylaşırsanız sevinirim. Üniversitede proje dersi olarak gösterdim lütfen yardımcı olursanız sevinirim. Şimdiden teşekkürler.
hocam projeyi bitirdiyseniz birkaç soru sorabilir miyim
bilgisayar kontrollü şifreli kapı kilidi projem var paralel porttan şifre yi alacam,donanımsal kısmında sorun yokta,bilgisayardan devreye nasıl bağlayacağım?