Şifreli kilit yardım

Uihfj

Üye
Katılım
21 Mar 2017
Mesajlar
3
Puanları
1
Yaş
27
Arkadaşlar merhaba.Bilgisayar mühendisliği ogrencisiyim Ödevim için sizden yardım isteyeceğim acemiyim bu konularda.
pic16f628-sifreli-kilit-devresi.png

Bu devrede tuşların oraya 4x3 keypad koysam çalışır mı? 7 çıkış var tuş takımında çalışırsa nasıl bağlanacak
 
Çalışmaz. Çünkü senin devrendeki tuş takımı BCD encoder olarak çalışıyor. Yani bastığın tuşun binary değerini porta aktarıyor. Kodlarda değişiklik yapman gerek.
 
Çalışmaz. Çünkü senin devrendeki tuş takımı BCD encoder olarak çalışıyor. Yani bastığın tuşun binary değerini porta aktarıyor. Kodlarda değişiklik yapman gerek.
itled hex

Untitled.bas

'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2006 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 13.03.2006 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
CMCON=7
TRISA=$1F
TRISB=$00
PORTA=00
PORTB=00

ALARM VAR PORTB.0
KAPI VAR PORTB.1

SIFRE VAR WORD
SIFRE1 VAR WORD
SIFRE2 VAR WORD
SIFRE3 VAR WORD
SURE VAR WORD
KUL VAR BYTE
ADR VAR BYTE
FLAGS=0
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_LINES 2
DEFINE LCD_COMMANBUS 2000
DEFINE LCD_DATAUS 50
PAUSE 100

ENBAS:
READ 02,SIFRE.BYTE0
READ 03,SIFRE.BYTE1
IF SIFRE=>65000 THEN
SIFRE=11111
ADR=02
DEG:
WRITE ADR,SIFRE.BYTE0
ADR=ADR+1
WRITE ADR,SIFRE.BYTE1
ADR=ADR+1
IF ADR=>20 THEN ENBAS1
GOTO DEG
ENDIF
ENBAS1:
SIFRE=00
LCDOUT $FE,1,"SIFRE GIRINIZ"
ENBAS2:
LCDOUT $FE,$C0,"SIFRE=",#SIFRE," ONAY"
ENBAS3:
IF PORTA>00 THEN ENBAS3
ENBAS4:
IF PORTA=00 THEN ENBAS4
IF PORTA=11 THEN BASLA
IF PORTA=12 THEN SIFRE=00 : GOTO ENBAS2
IF SIFRE=>6500 THEN SIFRE=00 : GOTO ENBAS2
SIFRE=SIFRE*10
IF PORTA=10 THEN ENBAS2
SIFRE=SIFRE+PORTA
GOTO ENBAS2

BASLA:
LCDOUT $FE,1,"KULLANICI NO:"
LCDOUT $FE,$C0,"YAZIMIZ"
BASLA1:
IF PORTA>00 THEN BASLA1
BASLA2:
IF PORTA=00 THEN BASLA2
KUL=PORTA
ADR=PORTA*2
READ ADR,SIFRE1.BYTE0
ADR=ADR+1
READ ADR,SIFRE1.BYTE1
IF SIFRE=SIFRE1 THEN
LCDOUT $FE,1,"KAPI AC-KAPA=> 1"
LCDOUT $FE,$C0,"SIFRE DEGIS => 2"
GOTO KOMUT
ENDIF
ALARM=1
GOTO ENBAS

KOMUT:
IF PORTA>00 THEN KOMUT
KOMUT1:
IF PORTA=00 THEN KOMUT1
IF PORTA=01 THEN
ALARM=0
TOGGLE KAPI
GOTO ENBAS
ENDIF
IF PORTA=02 THEN SIFRED
GOTO KOMUT

SIFRED:
ALARM=0
SIFRE=00
SIFRED1:
LCDOUT $FE,1,"YENI SIFRE GIR"
SIFRED2:
LCDOUT $FE,$C0,"SIFRE=",#SIFRE," ONAY"
SIFRED3:
IF PORTA>00 THEN SIFRED3
SIFRED4:
IF PORTA=00 THEN SIFRED4
IF PORTA=11 THEN SIFK
IF PORTA=12 THEN SIFRE3=00 : GOTO SIFRED2
IF PORTA=>11 THEN SIFRED3
IF SIFRE=>6500 THEN SIFRE=00 : GOTO SIFRED2
SIFRE=SIFRE*10
IF PORTA=10 THEN SIFRED2
SIFRE=SIFRE+PORTA
GOTO SIFRED2

SIFK:
ADR=KUL*2
WRITE ADR,SIFRE.BYTE0
ADR=ADR+1
WRITE ADR,SIFRE.BYTE1
GOTO ENBAS

Kod bu şekilde kod konusunda yardımcı olacak veya hazır keypad bağlanabilen kodu bulunan var mı pic e göre
 
Peki arkadaşlar benim devremde pot yok kristal yok devre yapımında eklemeli miyim kodda da yok.Devreyi kurdum ama LCD de usttede alttada kareler çıkıyor.Pot falanda ekleyip denedim bugün bi iki kere ekrana yazı geldi baya uğraştıktan sonra artık gelmiyor
 
16f628 denetleyicisinde dahili osilatör mevcut. Bu sebeple kristal eklemeden kullanabilirsin ancak kodlamada belirtmelisin. Ben C dili kullanıyorum, Basic bilmediğim için kodlamada yardımcı olamıyorum. LCD kare şeklinde karakterler gösteriyorsa kontrast ayarı yapmak için pot gerekli.

GT-I9500 cihazımdan Tapatalk kullanılarak gönderildi
 
Eğer lcd de üst kısımda kareler varsa kodda veya iletişimde sıkıntı vardır. Eğer hem üstte hem de altta varsa ise tehlikeli olabilir. Lcdyi bir tarafa yatırıp yandan veya üstten bir bakın. Eğer yazılar silik şekilde duruyorsa alt tarafta, demek ki temas sıkıntısı var. Eğer devre kartınin altına elinizle dokunduğunuzda sağa sola elinizi gezdirince bir defa da olsa ekrana veri gelirse mclr ucu aktif demektir. Onu mümkün ise iptal etmek gerek kodda. Mesela 877a da kod ile kalkmaz. Ancak bir 4. 7k veya üzeri bir direnç ile direk 5v a çekerseniz reset disable olur. 628a da da kodda" NO MCLR" fuse u ile disable edilir.
Osilator dahili mi harici mi ona da bakın.sizde Crystal yoksa dahili osilator kullanin.bunu kodda belirtmeniz lazım.

Hiçbiri olmazda ya kodda bir çalışma göstergesi koyun. Bakın bakalım devre çalınca o gösterge pinine bağladıginiz led yanıyor mu? Yapmıyorsa ve lcd ekranı altı üstü komple kare ise enerjiyi kesip vcc ve css uçlarına iletkenlik testi yapın. Kısa devre ise pıc yanmıştır.
 

Yeni mesajlar

Forum istatistikleri

Konular
128,190
Mesajlar
915,724
Kullanıcılar
449,960
Son üye
katzeimar

Yeni konular

Çevrimiçi üyeler

Geri
Üst