16f877a 4x7 segment shift register

amuhac

Üye
Katılım
17 Haz 2022
Mesajlar
4
Puanları
1
Yaş
26
Herkese iyi forumlar. "16F877A’ nın Port B sine bağlanan 4 adet 7 segment display ile öğrenci numaranızı kayan yazı şeklinde yazdırınız." diye bir ödevim var.
1655492141252.png
Bu şekilde devre şemasını internette buldum lakin kodlarını bulamadım. yardımcı olabilicek birisi çıkarsa çok mutlu olurum.
 
Katılım
15 Ara 2009
Mesajlar
362
Puanları
6
Yaş
38
Herkese iyi forumlar. "16F877A’ nın Port B sine bağlanan 4 adet 7 segment display ile öğrenci numaranızı kayan yazı şeklinde yazdırınız." diye bir ödevim var.
Ekli dosyayı görüntüle 88452 Bu şekilde devre şemasını internette buldum lakin kodlarını bulamadım. yardımcı olabilicek birisi çıkarsa çok mutlu olurum.

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

//***********Denetleyici konfigürasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000) // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i; // i isminde 8 bitlik bir değişken tanıtılıyor.

// Ortak katot display için veri değerleri
const int digit[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

set_tris_a(0x00); // A portu tümüyle çıkış olarak yönlendiriliyor
set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor

output_b(0x00); // B portu çıkışları sıfırlanıyor
output_a(0x02); // RA1 pini lojik-1 yapılıyor, diğer pinler lojik-0

while(1) // Sonsuz döngü oluşturuluyor
{
for(i=0;i<=15;i++)
{
output_b(digit); // digit değerini B portuna gönder
delay_ms(500); // 500 msn bekle
}
}
}

Merhaba arkadaşım,verdiğim örnek sadece tek bir 7 segment için önce bunu ilgili bağlantılar yapıp çalıştırmanı tavsiye ederim,
Öğrenci numarasının kayan yazı sistemi biraz karışık fakat yapabilirsin,
1-Çalışma mantığı olarak örneğin 1234 öğrenci numarasını sağa yada sola kaydırmayı düşündüğünü varsayalım ;
1234 sayısını birler,onlar,yüzler,binler şeklinde parçalayıp herbir sayıyı verdiğim örnekteki gibi digit[rakam] rakam değerine göre önceden belirlenmiş diziden herbirini kayan yazı olacak şekilde 4 adet 7 segmente bağlayacaksın,
7 segmentlerin tüm data hatlarını b portuna bağladıktan sonra 7 segment leri besleyen ortak uçları da başka bir boş porttan kontrol edeceksin,

Örneğin;
1 sayısını 4. 7 segmente gönder ve ortak ucu aktif et,
Sonra 1 sayısını 3. 7 segmente gönder ve ortak ucu aktif et,kısa bir süre sonra 3. ortak ucu kesip 4. ortak ucu aktif edip 2 sayısını 4. 7 segment displaye gönder,
sonra 1 sayısını 2. 7 segmente gönder ve ortak ucu aktif et,kısa bir süre sonra 2. ortak ucu kesip 3. ortak ucu aktif edip 2 sayısını gönder ,kısa bir süre sonra 3. ortak ucu kesip 4. ortak ucu aktif edip 3 sayısını gönder ....

Bu işleme display tarama deniyor her ne kadar karmaşık gelse de digit[rakam1] ,digit[rakam2] ,digit[rakam3] ,digit[rakam4] değerlerini belirli zaman aralıkları ile ilgili 7 segment displaylere gönderebilmen bu işi çözmen anlamına geliyor,

Not: 7 Segment display ortak ucunun ortak anot yada katot olmasına dikkat ediniz
 
Konu Sah

amuhac

Üye
Katılım
17 Haz 2022
Mesajlar
4
Puanları
1
Yaş
26
hiçbirşeyini yapamadım maalesef. çünkü kodu yazarken delay kullanmak yasak yani timerlarla yapılması gerekiyor. ayrıca main in içine kod yazmak da yasak. 5 gündür internette taramadığım kaynak kalmadı ama benim istediğime yakın dahi kaynak bulamadım.
 

ibrahim1996

Katılımcı Üye
Katılım
18 Nis 2014
Mesajlar
1,240
Puanları
56
Timer kurulumunda sıkıntı yok ise Main e kod yazılması istenmiyorsa timer istenilen zamana geldiğinde gideceği bir fonksiyon ayarlarsan işin ni çözersin
 
Konu Sah

amuhac

Üye
Katılım
17 Haz 2022
Mesajlar
4
Puanları
1
Yaş
26
Timer kurulumunda sıkıntı yok ise Main e kod yazılması istenmiyorsa timer istenilen zamana geldiğinde gideceği bir fonksiyon ayarlarsan işin ni çözersin
74164 entegresinin nasıl çalıştığını kavrayamadım. onu anlasam gerisini çözücem de
 

mehmet.bey

Profesyonel Üye
Katılım
19 Ara 2011
Mesajlar
1,838
Puanları
281
Konum
Galaksi Dışı
74HC595 ile başlayınız.

Ayrıca direkt mcu ile sürseniz olmaz mı?
Önce timer olmadan dört haneyi çalıştırın.

MPLABX XC8 ile yaparsanız yardım ederim.
 

Benzer Konular

Forum istatistikleri

Konular
121,364
Mesajlar
854,649
Kullanıcılar
436,865
Son üye
mutlumektup

Yeni konular

Üst