Teknikim

Üye Girişi

Önemli! Foruma yazılmayan sorulara cevap verilmeyecektir. Lütfen sorularınızı foruma yazın!
PIC Uygulamaları 6-Basit Sayıcı
 

Yazan: Tuna BULUT, Tarih: 26-05-2008 06:16

Okunma Sayısı : 1362

Beğenilme : 25

Yayınlama yeri : Dersler, PIC Dersleri


Bu uygulamada PIC 16F628A ve ortak katotlu 7 segment display kullanarak 0-F sayıcısı yapacağız.

Kullanılacak Malzemeler

  • 1xPIC16F628A
  • 1x4 Mhz kristal
  • 2x22pf seramik kondansatör
  • 1x100nF seramik kondansatör
  • 1x100 ohm direnç
  • 1x4k7 ohm direnç
  • 7x470 ohm direnç
  • 1xButon
  • 5 V DC kaynak(Batarya, pil, adaptör veya güç kaynağı)
 

16F628A_Pin_Diagram.jpg                   7_segment_display.jpg                 

                  Şekil 3-PIC16F628A Pin Diyagramı                                          Şekil 4-Ortak katotlu 7 segment display

  

PIC ve Display Devresi

display.jpg                 

7 Segment Display’in Çalışma Mantığı

7 segment display basit bir çalışma mantığına sahiptir. Yukarıdaki display şekline bakacak olursak her bir pin bir segmenti kontrol etmektedir. Örnek verecek olursak a pinini lojik 1 seviyesine çekersek a segmenti yanar, diğer pinlerde de durum aynıdır. Display de 0 rakamını göstermek için a, b, c,d, e ve f pinleri lojik 1 diğer pinler ise lojik 0 seviyesine çekilmelidir, yani PORTB’ ye b’00111111’ çıkışı verilmelidir, bu da H’3F’ hexadecimal sayısına denk gelmektedir. Saydırma işlemini ise çevrim tablosu kullanarak yapabiliriz.

 

Not: Eğer ortak anotlu display kullanacaksanız, anotu 5 V’a bağlamalı ve PORTB’ ye de displayde 0 rakamını göstermek için b’11000000’ çıkışı verilmelidir, diğer karakterlerin binary(ikili) değerleri de 0 rakamında olduğu gibi tablodaki değerlerin tamamlayanı olarak değişecektir.

 

Çevrim Tablosu  

Görüntülenecek Değer

Binary Sayı

Hexadecimal Sayı

0

B'00111111'

H'3F'

1

B'00000110'

H'06'

2

B'01011011'

H'5B'

3

B'01001111'

H'4F'

4

B'01100110'

H'66'

5

B'01101101'

H'6D'

6

B'01111101'

H'7D'

7

B'00000111'

H'07'

8

B'01111111'

H'7F'

9

B'01101111'

H'6F'

A

B'01110111'

H'77'

b

B'01111100'

H'7C'

C

B'00111001'

H'39'

d

B'01011110'

H'5E'

E

B'01111001'

H'79'

F

B'01110001'

 H'71'

.

B'10000000'

H'80'

 

PIC Assembly Kodu

;------------------------------Basit Sayıcı-------------------------------------------

;---------------------------Tuna Bulut tarafından yazıldı---------------------------

 

            LIST                P=16F628A

            INCLUDE       "P16F628A.INC"

            __CONFIG     _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF

 

            CBLOCK       H'20'

            SAYAC

            SAYAC1

            SAYAC2

            ENDC

 

            MOVLW        H'07'

            MOVWF        CMCON                     ;COMPARATOR ÖZELLİĞİ KAPALI VE PORTA I/O İÇİN AKTİF MODDA

            CLRF            PORTB                      ;PORTB Yİ SIFIRLA

                       

            ;GİRİŞ-ÇIKIŞ TANIMLAMALARI

           

            BANKSEL      TRISA                        ;BANK1 E GEÇİŞ YAP        

            MOVLW        H'FF'  

            MOVWF        TRISA                        ;PORTA NIN BÜTÜN PİNLERİNİ GİRİŞ YAP     

            CLRF            TRISB                        ;PORTB NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP

            BANKSEL      PORTB                       ;TEKRAR BANK0 A GEÇ

            CLRF            PORTB                      ;PORTB Yİ SIFIRLA

           

            ;ANA PROGRAM

           CLRF            SAYAC                       ;SAYAC'ı sıfırla             

YAZ

MOVF           SAYAC,W                         ;SAYAC değerini W ya yükle

ANDLW        B'00001111'                      ;W'nin üst dört bitini sıfırla

CALL            TABLO                             ;Tabloyu çağır

MOVWF        PORTB                             ;Değeri displayde göster

INCF            SAYAC,F                           ;SAYAC’ı 1 artır ve üstüne yaz

CALL            GECIKME                          ;Gecikme

CALL            GECIKME                          ;Gecikme

CALL            GECIKME                          ;Gecikme

GOTO           YAZ                                ;Bir sonraki değeri yazdırmak için başa dön

 

TABLO

ADDWF          PCL,F                                    

RETLW           H'3F'                                ;0

RETLW           H'06'                                ;1

RETLW           H'5B'                                ;2

RETLW           H'4F'                                ;3

RETLW           H'66'                                ;4

RETLW           H'6D'                                ;5

RETLW           H'7D'                                ;6

RETLW           H'07'                                ;7

RETLW           H'7F'                                ;8

RETLW           H'6F'                                ;9

RETLW           H'77'                                ;A

RETLW           H'7C'                                ;b

RETLW           H'39'                                ;C

RETLW           H'5E'                                ;d

RETLW           H'79'                                ;E

RETLW           H'71'                                ;F

 

 

;-------------------195 MS'LİK GECİKME-----------------------------------        

GECIKME

            MOVLW        H'FF'

            MOVWF        SAYAC1

DONGU1

            MOVLW        H'FF'

            MOVWF        SAYAC2

DONGU2

            DECFSZ        SAYAC2,F

            GOTO           DONGU2

            DECFSZ        SAYAC1,F

            GOTO           DONGU1

            RETURN

            END

 

Kodun Çalışma Mantığı

Kodun mantığı oldukça basit öncelikle bir tablo oluşturuyoruz ve bu tablodaki değerleri sırasıyla displaye yüklüyoruz ve istenilen değerleri böylelikle yazdırmış oluyoruz. Tablodaki değeri çağırmadan önce W yazmacındaki değerlere b’00001111’ sayısıyla AND işlemini uyguluyoruz ki tablodaki 16 değeri de çağırdıktan sonra W yazmacındaki değer 0 layıp başa dönsün böylelikle display sürekli 0-F arasında saysın.

 


   
Beğenilme
E-mail olarak gönder
İlgili makaleler
Teknikim'e kaydet

Okuyucu yorumları  RSS feed Yorum
 

Ortalama Üye Değerlendirmesi

   (0 Oylama)

 


Yorumunuzu ekleyin
Sadece kayitli kullanicilar bir Makaleyi yorumlayabilir. Lütfen ücretsiz üye olun veya giriş yapın.

Gönderilen yeni yorum yok



mXcomment 1.0.8 © 2007-2009 - visualclinic.fr
License Creative Commons - Some rights reserved