7 Mart 2010 Pazar

pic16f84 ile binary desimal 0-15 sayıcı


pic16f84 ile binary desimal 0-15 sayıcı
Daha önce burada yayınladığım binary sayıcı devresini biraz geliştireyim dedim. Önce kafamdaki şemayı isiste çizip daha sonra pic basic pro ile kodları yazıp derledim. Tabi baya uğraştırdı. Kodları düzenlemek ve simulasyonda deneyip çalıştırmak gerçekten zevkli oluyor. Aşağıda simulasyonun çalışırken çekilmiş videosunu da izleyebilirsiniz. Ayrıca bas kodu ve devre şemasıda aşağıda mevcut.

4520 binary üretecinin değerlerini pic16f84a ile okutup 2 adet 7 segment displaye aktardım. Aynı zamanda ledler ilede binary sayılar gözlenebilir. Clock üreteci olarak isis clock kullandım. Ama siz devreyi yapmak isterseniz 555 timer ile yapılmış bir osilatör kullanın. Yazının başlangıcında referans verdiğim linkte 555 osilatör mevcut. Aşağıdaki linkten gerekli dosyaları indirebilirsiniz. (hex pbp isis devre şeması pdf jpg)

Devreyi kurmak isteyenlere hatırlatma yapmak isterim. Bu bir simulasyon. Gerçek uygulamada pbp kodları üzerinde zaman ayarları ile oynamak gerekebilir. Çünkü kodlar arası süre simulasyon osilatör frekansı ile senkronize durumda. İşlemci için gerekli parametreleri pbp başlangıcında verdim. Kodları yazarken 15 rakamını displaylere aktarmak istediğimde 16f84 adres limiti aşıldı benzeri bir uyarı aldım. Ve yanlış işlemci seçtiğimi farkettim :) Ama sorun değil 15 zaten 4 adet 1 rakamından ibaret...

pic16f84a ile binary desimal sayıcı download

devre şeması:

pic16f84 ile binary desimal 0-15 sayıcı devresisimulasyon videosu:


class="BLOG_video_class" width="460" height="380" contentid="dc5856c166c8b4e">


pic basic pro bas kodu:

'****************************************************************
'* Name : BİNARY DESİMAL 0-15 SAYICI.BAS *
'* Author : [Davut Naci Kaya] *
'* Notice : Copyright (c) 2010 *
'* : All Rights Reserved *
'* Date : 07.03.2010 *
'* Version : 1.0 *
'* Notes : binar desimal 0-15 sayıcı *
'* : elektroinfo.blogspot.com *
'****************************************************************
@ DEVICE pic16F84A
@ DEVICE pic16F84A, WDT_on
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC

PortA=0
TrisA=011111
PortB=0
TrisB=000000

SAYI VAR BYTE
BIRLER VAR BYTE
ONLAR VAR BYTE

PORTB=0
SAYI=0

PAUSE 100
BASLA:
If (PortA.0=1) AND (PortA.1=0) AND(PortA.2=0) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 125 ' BİR
ENDIF

If (PortA.0=0) AND (PortA.1=1) AND(PortA.2=0) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 125 ' İKİ
ENDIF

If (PortA.0=1) AND (PortA.1=1) AND(PortA.2=0) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 125 ' ÜÇ
ENDIF

If (PortA.0=0) AND (PortA.1=0) AND(PortA.2=1) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 125 ' DÖRT
ENDIF

If (PortA.0=1) AND (PortA.1=0) AND(PortA.2=1) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 125 ' BEŞ
ENDIF

If (PortA.0=0) AND (PortA.1=1) AND(PortA.2=1) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 200 ' ALTI
ENDIF

If (PortA.0=1) AND (PortA.1=1) AND(PortA.2=1) AND(PortA.3=0) Then
SAYI=SAYI+1 :PAUSE 175 ' YEDİ
ENDIF

If (PortA.0=0) AND (PortA.1=0) AND(PortA.2=0) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 250 ' SEKİZ
ENDIF

If (PortA.0=1) AND (PortA.1=0) AND(PortA.2=0) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 250 ' DOKUZ
ENDIF

If (PortA.0=0) AND (PortA.1=1) AND(PortA.2=0) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 150 ' ON
ENDIF

If (PortA.0=1) AND (PortA.1=1) AND(PortA.2=0) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 150 ' ONBİR
ENDIF

If (PortA.0=0) AND (PortA.1=0) AND(PortA.2=1) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 150 ' ONİKİ
ENDIF

If (PortA.0=1) AND (PortA.1=0) AND(PortA.2=1) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 250 ' ONÜÇ
ENDIF

If (PortA.0=0) AND (PortA.1=1) AND(PortA.2=1) AND(PortA.3=1) Then
SAYI=SAYI+1 :PAUSE 250 ' ONDÖRT
ENDIF

If (PortA.0=1) AND (PortA.1=1) AND(PortA.2=1) AND(PortA.3=1) Then
GOTO DUR ' ONBEŞ OLMADAN BİTER... PIC16F84 ADRESS LİMİTİ DOLDUĞU İÇİN...
ENDIF

BIRLER=SAYI DIG 0 'birler ve onlar hanesi seçimleri
ONLAR= SAYI DIG 1

PORTB=240 BIRLER '4511 LE enable disable kontrolleri
LOW PORTB.5
PAUSE 300
HIGH PORTB.5
PAUSE 100
PORTB=240 ONLAR
LOW PORTB.4
PAUSE 300
HIGH PORTB.4
PAUSE 100
GOTO BASLA
DUR:
END