16f877a 4x7 segment sağdan sola kayan numaralar

O halde hammaliye kod yazabilirsiniz.
Önce birinci displayda birinci rakam görünür, sonra ikinci rakam ikinci display ve dört display bu şekilde doldurulur.
Daha sonra ikinci rakam birinci hanede olacak şekilde dört hane yazdırılır. Aralarda 5ms-50ms gecikme konur. Ana döngü içinde bu olay döner gider.
Her displayda görünecek kısım 5ms-50ms zaman diliminde olacak. Bunu bir çizgi film gibi düşünün ve uygulayın.
 
Bu ödevin kodunu yazmanız mümkün mü acaba gerçekten çok ihtiyacımız var lütfen yardımcı olun😔😔
 
#11 de yazdım.
Kod:
while(1)
{
   PORTB = 0b11100000;
   delay_ms(5);
   PORTB = 0b11010001;
   delay_ms(5);
}
gibi satırlardan oluşan kodlar olacak. For, while vs. yok.
 
#11 de yazdım.
Kod:
while(1)
{
   PORTB = 0b11100000;
   delay_ms(5);
   PORTB = 0b11010001;
   delay_ms(5);
}
gibi satırlardan oluşan kodlar olacak. For, while vs. yok.
Hocam size örnek bir video atmak istiyorum da buradan atılmıyor galiba izin vermiyor nereden atabilirim
 
Dedim ya zor olanı kodu yazmak için biraz çalışmak gerekiyor. 8-10 sene önceki bilgilere konsantre olmak kolay değil.
Yok zaten kod yazın demedim. Breadboarda deneyin dediniz ya sıkıntının koddan kaynaklandığının farkında arkadaşlar. Kod yazacak bir yardımsever arayışındalar.
 
Yok zaten kod yazın demedim. Breadboarda deneyin dediniz ya sıkıntının koddan kaynaklandığının farkında arkadaşlar. Kod yazacak bir yardımsever arayışındalar.
Gerçekten öyleyiz şu an elimiz kolumuz bağlandı sanki 10 gündür bu ödev için uğraşıyoruz kafayı yemek üzereyiz ne yapsak olmadı
Hocam size örnek bir video atmak istiyorum da buradan atılmıyor galiba izin vermiyor nereden atabilirim
video atabilsem daha anlaşılır olacak da ben yine de buradan anlatmaya çalışayım şimdi sağdan sola doğru başlayacagımız için 4.displaye 2 rakamının gelmesi gerekiyor sonrakı adımında ise 2 rakamının 3.displaye kayması gerekiyor ve 4.displaye 3 rakamının gelmesi gerekiyor bir sonraki hareketinde 2 rakamı 2.displaye 3 rakamı 3.displaye 4 rakamı 4.displaye bir sonraki hareketin de 2 rakamı 1.displaye 3 rakamı 2.displaye 4 rakamı 3.displaye 1 rakamı 4.displaye gelmesi gerekiyor yani sanki teker teker kayması gerekiyormuş gibi gözükmesi gerekiyor bilmiyorum ne kadar anlaşılır oldu ama video gönderebilsem daha açıklayıcı olur galiba
 
1736518473810.png

#11 de yazdım.
Kod:
while(1)
{
   PORTB = 0b11100000;
   delay_ms(5);
   PORTB = 0b11010001;
   delay_ms(5);
}
gibi satırlardan oluşan kodlar olacak. For, while vs. yok.
Devreyi şu hale soktum ve bu kodu yazdım
/*
* File: okulNumara.c
* Author: MRUMTAL_ARGE
*
* Created on 08 Ocak 2025 Çarşamba, 22:07
*/

#include <16F877A.h>

// PIC16F877A Configuration Bit Settings

// CONFIGURATION BITS
#fuses HS // Harici kristal osilatör (4 MHz veya üzeri)
#fuses NOWDT // Watchdog Timer kapalı
#fuses PUT // Power-up Timer etkin
#fuses BROWNOUT // Düşük voltaj sıfırlama etkin
#fuses NOLVP // Low-Voltage Programming devre dışı
#fuses NOCPD // Data EEPROM kod koruması kapalı
#fuses NOWRT // Flash program belleği yazma koruması kapalı
#fuses NOPROTECT // Program belleği koruması kapalı

#use delay(clock=4000000) // 4 MHz işlemci hızı

// Gerekli diziler ve değişkenler
int i, t;
int sayilar[10] = {2, 3, 4, 1, 0, 9, 0, 3, 2}; // Gösterilecek numaralar: 234109032
int display[4] = {224, 208, 176, 112}; // 7 segment display'in seçim pinlerine uygun adresler

void main(void) {
// PORT ve TRIS ayarları
set_tris_b(0x00); // PORTB çıkış
output_b(0x00); // PORTB sıfırlandı
set_tris_a(0x00); // PORTA çıkış
output_a(0x01); // PORTA sıfırlandı (ilk basamak seçildi)

while (1) {
for (i = 0; i <= 6; i++) { // Sadece 4'er hanelik gösterimler (son rakam dahil)
for (t = 0; t < 50; t++) { // Her adım için yaklaşık 1 saniye bekleme
output_b(display[0] + sayilar); // İlk basamak
delay_ms(5); // Gecikme
output_b(display[1] + sayilar[i + 1]); // İkinci basamak
delay_ms(5); // Gecikme
output_b(display[2] + sayilar[i + 2]); // Üçüncü basamak
delay_ms(5); // Gecikme
output_b(display[3] + sayilar[i + 3]); // Dördüncü basamak
delay_ms(5); // Gecikme
}
}
}
}
şuan program çalışıyor bir sorun yok fakat 234109032 yazdırmak yerine 2341090320 yazdırıyor ve en başta ekranda hiçbir şey olmaması gerekirken ekran full yazı ile başlıyor
 
Alttaki satırları düzenleyin...
Kod:
...
int sayilar[20] = {0, 0, 0, 0, 2, 3, 4, 1, 0, 9, 0, 3, 2, 0, 0, 0, 0};
...
...
for (i = 0; i <= 14; i++)//??
...
 

Forum istatistikleri

Konular
130,297
Mesajlar
935,321
Kullanıcılar
453,555
Son üye
Ersin747474

Yeni konular

Geri
Üst