16f877a 4x7 segment shift register

amuhac

Üye
Katılım
17 Haz 2022
Mesajlar
5
Puanları
1
Yaş
28
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.
 
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 88452Bu ş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
 
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.
 
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
 
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
 
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
127,966
Mesajlar
913,966
Kullanıcılar
449,612
Son üye
esperran

Yeni konular

Geri
Üst