pcbway

Kayan yazı parlaklık sorunu

Başlatan nayadotan, 22 Kasım 2016, 12:46:27

nayadotan

22 Kasım 2016, 12:46:27 Son düzenlenme: 22 Kasım 2016, 17:21:55 nayadotan
Merhabalar,

5 adet 5x7 led matrix te sabit yazı yazmaya çalışıyorum. 16f877a uzerinden 7 bacağı kullanarak 20mhz ile satırsal tarama yaptırıyorum ve gereken verileri 74hc595 kullanarak veriyorum. ama bu sistem ile alakalı parlaklık sorunu yaşıyorum. bilmiyorum nedendir ama yazıyı yazdırdığım anda yazı parlak çıkmasına rağmen sanki arka plandaki tüm ledlerde kısmi olarak parlama yapıyormuş gibi gorunuyor, yada bir sebepten dolayı parlıyor. oysaki bu yaptığım devreyi proteusta simule ettiğim zaman arka planda parlaklık olmuyor. bu arka plandaki ledlerin parlamamasını nasıl sağlayabilirim?

Parlama meselesi şu videodaki gibi:
https://www.youtube.com/watch?v=PRwaj-pGJNs

Adnancoskun

22 Kasım 2016, 17:52:54 #1 Son düzenlenme: 22 Kasım 2016, 17:53:29 Adnancoskun
Alıntı yapılan: nayadotan - 22 Kasım 2016, 12:46:27Merhabalar,

5 adet 5x7 led matrix te sabit yazı yazmaya çalışıyorum. 16f877a uzerinden 7 bacağı kullanarak 20mhz ile satırsal tarama yaptırıyorum ve gereken verileri 74hc595 kullanarak veriyorum. ama bu sistem ile alakalı parlaklık sorunu yaşıyorum. bilmiyorum nedendir ama yazıyı yazdırdığım anda yazı parlak çıkmasına rağmen sanki arka plandaki tüm ledlerde kısmi olarak parlama yapıyormuş gibi gorunuyor, yada bir sebepten dolayı parlıyor. oysaki bu yaptığım devreyi proteusta simule ettiğim zaman arka planda parlaklık olmuyor. bu arka plandaki ledlerin parlamamasını nasıl sağlayabilirim?

Parlama meselesi şu videodaki gibi:
https://www.youtube.com/watch?v=PRwaj-pGJNs
Ledleri nasıl sürdünüz?
Şema var mı?
Tanrı Türk'ü Korusun ve Yüceltsin.

nayadotan



şema bu. datayı 74hc595 leri kullanarak veriyorum. satırsal taramayı 16f877a nın portları ile yapıyorum.

Mr_YAMYAM

Her 75HC595 in beslemelerine entegrenin dibinden 100nF kondansatör bağla. Bu entegrelerin çıkışlarına uygun değerde birer direnç bağla. (Beslemeye bağlı olarak 100 ohm ila 1Kohm)
Yine etkileşim olursa devre tasarımında grounding hataları vardır.

Adnancoskun

Alıntı yapılan: nayadotan - 22 Kasım 2016, 18:28:05

şema bu. datayı 74hc595 leri kullanarak veriyorum. satırsal taramayı 16f877a nın portları ile yapıyorum.
Verdiğiniz linkteki videoda ledler beyaz renkli kılıf içerisine yerleştirilmiş
Eğer ledleriniz ( display) kırmızı ise üstüne reklamcılardan koyu kırmızı renkli filtre alıp, filtre kullanmanızı öneririm
Tanrı Türk'ü Korusun ve Yüceltsin.

nayadotan

Alıntı yapılan: Mr_YAMYAM - 22 Kasım 2016, 19:17:12Her 75HC595 in beslemelerine entegrenin dibinden 100nF kondansatör bağla. Bu entegrelerin çıkışlarına uygun değerde birer direnç bağla. (Beslemeye bağlı olarak 100 ohm ila 1Kohm)
Yine etkileşim olursa devre tasarımında grounding hataları vardır.


Dostum dediğini denedim yemedi. grounding hatasi ile alakali birsey bulamadim. arka plandaki ledlere 1.9 volt geliyor resmen pwm etkisi ile yanıyor arka plandaki ledler.



nayadotan

Alıntı yapılan: Adnancoskun - 22 Kasım 2016, 22:35:58Verdiğiniz linkteki videoda ledler beyaz renkli kılıf içerisine yerleştirilmiş
Eğer ledleriniz ( display) kırmızı ise üstüne reklamcılardan koyu kırmızı renkli filtre alıp, filtre kullanmanızı öneririm


kullandığım display videodakinin aynısı. normalde filtre ilemi kullanılıyor bu displayler?

Adnancoskun

23 Kasım 2016, 08:16:55 #7 Son düzenlenme: 23 Kasım 2016, 08:57:04 Adnancoskun
Alıntı yapılan: nayadotan - 23 Kasım 2016, 06:30:21kullandığım display videodakinin aynısı. normalde filtre ilemi kullanılıyor bu displayler?
Aslında ledlerin zemini siyah renk olur, ancak bu tür dot matrix displaylerde beyaz zemin kullanılıyor, tam opak olmadığından led ışığı az da olsa geçiyor. Aslında üst yüzeyi ledler arası siyah bant veya siyah boya ile kaplı olurdu çoğunda, ama sizinki yarisaydam sanırım

Bence siz aynı renkte  koyu renkli filtre kullanın
Reklamcilarda vardır. Piyasada renkli mika olarak satılıyor
Tanrı Türk'ü Korusun ve Yüceltsin.

Mr_YAMYAM

Alıntı yapılan: nayadotan - 23 Kasım 2016, 06:28:45Dostum dediğini denedim yemedi. grounding hatasi ile alakali birsey bulamadim. arka plandaki ledlere 1.9 volt geliyor resmen pwm etkisi ile yanıyor arka plandaki ledler.
Arka plandaki ledlere 1.9V gibi gerilim geliyorsa bu olay kesinlikle grounding olayıdır.
Buradaki grounding kavramı topraklama demek değildir. Akım yollarının dönüş yollarının birbirlerini kesmeden gidişatını inceler. Genellikle baskı devre çiziminden başlar ve besleme devresine kadar uzanır.
Tam olarak teşhis koyabilmek için yaptığınız baskı devreyi görmeliyiz.

Adnancoskun

23 Kasım 2016, 14:15:06 #9 Son düzenlenme: 23 Kasım 2016, 14:33:39 Adnancoskun
Alıntı yapılan: nayadotan - 23 Kasım 2016, 06:28:45Dostum dediğini denedim yemedi. grounding hatasi ile alakali birsey bulamadim. arka plandaki ledlere 1.9 volt geliyor resmen pwm etkisi ile yanıyor arka plandaki ledler.




Arka plandaki ledler derken?
Aktif olmaması gereken ledlerde mi 1.9 volt var?
bu gerilim neredeyse ledin normal çalışma gerilimi. bu işte bir anormallik var, Sizin gönderdiğiniz videoda Pasif olması gereken ledler yanmıyor, yada ben öyle görmüyorum sanki...

Bir de PİC'in çıkış portlarından GND ye  2k2 civarında birer direnç bağlayarak denermisiniz, Pasif oldukları durumda , o noktayı şaseye (0 sıfır noktasına ) çekebilmesi için.
Tanrı Türk'ü Korusun ve Yüceltsin.

nayadotan

24 Kasım 2016, 06:38:34 #10 Son düzenlenme: 24 Kasım 2016, 06:44:25 nayadotan
Alıntı yapılan: Mr_YAMYAM - 23 Kasım 2016, 12:59:56Arka plandaki ledlere 1.9V gibi gerilim geliyorsa bu olay kesinlikle grounding olayıdır.
Buradaki grounding kavramı topraklama demek değildir. Akım yollarının dönüş yollarının birbirlerini kesmeden gidişatını inceler. Genellikle baskı devre çiziminden başlar ve besleme devresine kadar uzanır.
Tam olarak teşhis koyabilmek için yaptığınız baskı devreyi görmeliyiz.


Baslangıç olarak baskı devre olarak değilde böyle kablolu kullanıyorum.

Alıntı yapılan: Adnancoskun - 23 Kasım 2016, 14:15:06Arka plandaki ledler derken?
Aktif olmaması gereken ledlerde mi 1.9 volt var?
bu gerilim neredeyse ledin normal çalışma gerilimi. bu işte bir anormallik var, Sizin gönderdiğiniz videoda Pasif olması gereken ledler yanmıyor, yada ben öyle görmüyorum sanki...

Bir de PİC'in çıkış portlarından GND ye  2k2 civarında birer direnç bağlayarak denermisiniz, Pasif oldukları durumda , o noktayı şaseye (0 sıfır noktasına ) çekebilmesi için.

GND ye 2k2 lik direnç atmak çözüm olmayabilir. cünkü ledlerin yanmasini saglayan 74hc595 ler. Pic sadece satırlara eksi göndererek saydırmayı sağlıyor.



Parlama olayı tam anlamı ile böyle oluyor:



Biraz ledleri körleştirmeyi denedim ama buda genel ledlerin parlaklığını etkiledi.



kullandığım kodlar:
#include <main.h>
#define SH_CP PIN_C0
#define DS PIN_C1
#define ST_CP PIN_C2

int i = 0;
int j = 0;
int z = 0;
int u = 0;
int v = 0;

int1 displayBuffer1[] = {0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer2[] = {0,0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer3[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer4[] = {0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer5[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer6[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer7[] = {0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};


void Kilit()
{
   output_high(SH_CP);
   output_low(SH_CP);
   output_high(ST_CP);
   output_low(ST_CP);
}


void DsHighLow(int value){
switch(value){
case 0:
output_low(DS);
break;
case 1:
output_high(DS);
break;
}
}

void ekranadegerver(int value){
switch(value){
case 0:{
output_b(0b01111110);
for(j = 0;j<30;j++){
if(displayBuffer1[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 1:{
output_b(0b01111101);
for(j = 0;j<30;j++){
if(displayBuffer2[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 2:{
output_b(0b01111011);
for(j = 0;j<30;j++){
if(displayBuffer3[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 3:{
output_b(0b01110111);
for(j = 0;j<30;j++){
if(displayBuffer4[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 4:{
output_b(0b01101111);
for(j = 0;j<30;j++){
if(displayBuffer5[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 5:{
output_b(0b01011111);
for(j = 0;j<30;j++){
if(displayBuffer6[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 6:{
output_b(0b00111111);
for(j = 0;j<30;j++){
if(displayBuffer7[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
}
}

void main()
{

set_tris_c(0x00);
output_c(0x00);
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0x00);
output_a(0x00);

   while(TRUE)
   {
   ekranadegerver(i);
   i++;
   if(i==7)
   i = 0;
   delay_us(3000);
   }
}

proteus projesi ve hex kodlarıda burda:

https://yadi.sk/d/2fJbTbnIzLrK4

i3uz

24 Kasım 2016, 08:55:32 #11 Son düzenlenme: 24 Kasım 2016, 11:06:57 i3uz
Alıntı yapılan: nayadotan - 24 Kasım 2016, 06:38:34Baslangıç olarak baskı devre olarak değilde böyle kablolu kullanıyorum.

GND ye 2k2 lik direnç atmak çözüm olmayabilir. cünkü ledlerin yanmasini saglayan 74hc595 ler. Pic sadece satırlara eksi göndererek saydırmayı sağlıyor.



Parlama olayı tam anlamı ile böyle oluyor:



Biraz ledleri körleştirmeyi denedim ama buda genel ledlerin parlaklığını etkiledi.



kullandığım kodlar:
#include <main.h>
#define SH_CP PIN_C0
#define DS PIN_C1
#define ST_CP PIN_C2

int i = 0;
int j = 0;
int z = 0;
int u = 0;
int v = 0;

int1 displayBuffer1[] = {0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer2[] = {0,0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer3[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer4[] = {0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer5[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer6[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer7[] = {0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};


void Kilit()
{
   output_high(SH_CP);
   output_low(SH_CP);
   output_high(ST_CP);
   output_low(ST_CP);
}


void DsHighLow(int value){
switch(value){
case 0:
output_low(DS);
break;
case 1:
output_high(DS);
break;
}
}

void ekranadegerver(int value){
switch(value){
case 0:{
output_b(0b01111110);
for(j = 0;j<30;j++){
if(displayBuffer1[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 1:{
output_b(0b01111101);
for(j = 0;j<30;j++){
if(displayBuffer2[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 2:{
output_b(0b01111011);
for(j = 0;j<30;j++){
if(displayBuffer3[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 3:{
output_b(0b01110111);
for(j = 0;j<30;j++){
if(displayBuffer4[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 4:{
output_b(0b01101111);
for(j = 0;j<30;j++){
if(displayBuffer5[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 5:{
output_b(0b01011111);
for(j = 0;j<30;j++){
if(displayBuffer6[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
case 6:{
output_b(0b00111111);
for(j = 0;j<30;j++){
if(displayBuffer7[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
Kilit();
}
}
break;
}
}

void main()
{

set_tris_c(0x00);
output_c(0x00);
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0x00);
output_a(0x00);

   while(TRUE)
   {
   ekranadegerver(i);
   i++;
   if(i==7)
   i = 0;
   delay_us(3000);
   }
}

proteus projesi ve hex kodlarıda burda:

https://yadi.sk/d/2fJbTbnIzLrK4

display ve matrix ledlerde bu sorun hep görülür. malesef ledlerin arızalı.... bunun iki sebebi var birincisi fabrikasyon, ikincisi ısıdan dolayı genellikle lehimleme sürecince yapısal sorunlar oluyor ve bozuluyorlar.  yapıdığımız display kartlarında sıfır alıp takıyoruz takar takmaz böyle sorunlar oluyor direk değiştirdiğimizde sorun çözülüyor. bu iş içinde iki sebebi uygun gördük. ya fazla ısıya maruz birakıyoruz yada fabrikasyon...bence soket kullanın.
Teori gerçek verileri vermez, pratikte yaptıkların doğru verilerdir.
Tanrı Türk'ü korusun
        TA1OME

olc technics

@nayadotan
Ledlerin eksisi PIC üzerinden sağlanıyor demişsiniz, PIC'in verdiği akım, ledleri sürmeye yetmiyor olabilir mi?

nayadotan

Alıntı yapılan: olc technics - 24 Kasım 2016, 09:42:53@nayadotan
Ledlerin eksisi PIC üzerinden sağlanıyor demişsiniz, PIC'in verdiği akım, ledleri sürmeye yetmiyor olabilir mi?

pic sadece eksi saydırma yapıyor. asıl ledleri yakan 74hc595 ler. ki sürmeye gücü yetmese arka plan bu kadar parlak olmaz.

nayadotan

Alıntı yapılan: i3uz - 24 Kasım 2016, 08:55:32display ve matrix ledlerde bu sorun hep görülür. malesef ledlerin arızalı.... bunun iki sebebi var birincisi fabrikasyon, ikincisi ısıdan dolayı genellikle lehimleme sürecince yapısal sorunlar oluyor ve bozuluyorlar.  yapıdığımız display kartlarında sıfır alıp takıyoruz takar takmaz böyle sorunlar oluyor direk değiştirdiğimizde sorun çözülüyor. bu iş içinde iki sebebi uygun gördük. ya fazla ısıya maruz birakıyoruz yada fabrikasyon...bence soket kullanın.

nasıl arizalı? 5 tane matrix ledin 5idemi arızalı? burda farklı bir sorun var ledler ile alakalı bir sorun olduğunu sanmıyorum.

Mr_YAMYAM

Montaj durumu hiç te iç açıcı değil.  :D
Oradaki kabloların her birisi aslında birer bobin. Uygulanan saat frekansı doğrultusunda ciddi etkileri bulunabilir.
Bir de şase hattının doğru yapılmadığı düşünülürse başlarda belirtmiş olduğum GROUNDING sorunu aşikar görünüyor.
Sorunun çözümü için ana besleme kaynağı dahil olmak üzere tüm şase bağlantıları resimlenirse öneriler sunulabilir.

mustafayilmaz

24 Kasım 2016, 13:00:15 #16 Son düzenlenme: 24 Kasım 2016, 13:12:14 mustafayilmaz
Alıntı yapılan: nayadotan - 24 Kasım 2016, 12:05:09pic sadece eksi saydırma yapıyor. asıl ledleri yakan 74hc595 ler. ki sürmeye gücü yetmese arka plan bu kadar parlak olmaz.

1)  Mcu nun emme akımı yetmiyor olabilir. 7 led aynı anda yandığında akımı siz hesap edin. Arada tampon devre olmalı.

2) Kodlarınız diğer ledlerin düşük parlıkta ışıldamasını sağlıyor olabilir. Benzer projeleri inceleyiniz mi?

mcan

5 volt ile led çalışacak ise 390 330 Ohm direnç kullanmalısın.

i3uz

24 Kasım 2016, 15:14:33 #18 Son düzenlenme: 24 Kasım 2016, 15:17:22 i3uz
Alıntı yapılan: nayadotan - 24 Kasım 2016, 12:07:32nasıl arizalı? 5 tane matrix ledin 5idemi arızalı? burda farklı bir sorun var ledler ile alakalı bir sorun olduğunu sanmıyorum.

Evet 5 ledde arızalı.. soketlere lehim yap büyük ihtimal lehimlemeyi ledlere yaptıgın için içindeki yapı zarar gördü.. her bacak için havya tutuğundan dolayı zarar gördü. dolayısıyla sızıntı akımı oluştu.
Teori gerçek verileri vermez, pratikte yaptıkların doğru verilerdir.
Tanrı Türk'ü korusun
        TA1OME

nayadotan

Alıntı yapılan: Mr_YAMYAM - 24 Kasım 2016, 12:50:16Montaj durumu hiç te iç açıcı değil.  :D
Oradaki kabloların her birisi aslında birer bobin. Uygulanan saat frekansı doğrultusunda ciddi etkileri bulunabilir.
Bir de şase hattının doğru yapılmadığı düşünülürse başlarda belirtmiş olduğum GROUNDING sorunu aşikar görünüyor.
Sorunun çözümü için ana besleme kaynağı dahil olmak üzere tüm şase bağlantıları resimlenirse öneriler sunulabilir.


Alıntı yapılan: mustafayilmaz - 24 Kasım 2016, 13:00:151)  Mcu nun emme akımı yetmiyor olabilir. 7 led aynı anda yandığında akımı siz hesap edin. Arada tampon devre olmalı.

2) Kodlarınız diğer ledlerin düşük parlıkta ışıldamasını sağlıyor olabilir. Benzer projeleri inceleyiniz mi?

Alıntı yapılan: mcan - 24 Kasım 2016, 13:39:365 volt ile led çalışacak ise 390 330 Ohm direnç kullanmalısın.

Alıntı yapılan: i3uz - 24 Kasım 2016, 15:14:33Evet 5 ledde arızalı.. soketlere lehim yap büyük ihtimal lehimlemeyi ledlere yaptıgın için içindeki yapı zarar gördü.. her bacak için havya tutuğundan dolayı zarar gördü. dolayısıyla sızıntı akımı oluştu.

neyse beyler sorun düzeldi. sorun kod ile alakalı imiş. halloldu sağolun yardımınız için.

seron

Geridönüş için teşekkür ederiz.
yalnız zahmet olmazsa, nerde yanlış yapmışsınız, doğru kod nedir burada rarlayıp paylaşırsanız bana lazım değil de, aynı sorundan gelen olursa rahat çözmüş olur.
Ceryanlı devreler olarak prensibim: Az iş, çok laf! O kadar!
Ayrıca şunu unutmayın, atasözüdür, oylarınız damlaya damlaya... Dağdan kestim kereste.

Adnancoskun

Alıntı yapılan: seron - 24 Kasım 2016, 20:19:41Geridönüş için teşekkür ederiz.
yalnız zahmet olmazsa, nerde yanlış yapmışsınız, doğru kod nedir burada rarlayıp paylaşırsanız bana lazım değil de, aynı sorundan gelen olursa rahat çözmüş olur.
++1
Tanrı Türk'ü Korusun ve Yüceltsin.

nayadotan

simdi beyler kusura bakmayin klavyede türkce karakterlerin bir kismi yok hizli bir sekilde yazmak icin türkce karakter kullanmadim kusura bakmayin. simdi gelelim isin püf noktasina. satirsal tarama söyle calisiyor pic taranacak bacaga eksi veriyor digerlerini artiya alarak kapatiyor. eger 74hc595 ler degerleri satir taramasi acik halde isliyorsa yani pic te satirlardan birtanesi tarama icin secilmisse ve 74hc595 bu sirada deger degisimi yapiyorsa o zaman arka planda böyle sacma sapan isiklar cikabiliyor. bunun cozumu 595lerin degerlerini aldiktan sonra bacagi saydirmak ve bir sonraki satira gecerken gene saydirmayi kapatmak.

kodsal olarak anlatimi söyle:
output_b(0b11111110);
degerver(i)
diyelim burda b bacaginda satirin biri secili oldugu icin ve bu sirada 595ler deger degisimi yaptigi icin direk bu soruna sebebiyet verir

ama kod eger böyle olursa
output_b(0xff);
degerver(i)
output_b(0b11111110);
delay_ms(5);
bu arka plan parlaklik sorununu ortadan kaldiracaktir.

kodun duzeltilmis hali:

#include <main.h>
#define SH_CP PIN_C0
#define DS PIN_C1
#define ST_CP PIN_C2

int i = 0;
int j = 0;
int z = 0;
int u = 0;
int v = 0;

int1 displayBuffer1[] = {0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer2[] = {0,0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer3[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer4[] = {0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer5[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer6[] = {0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0};
int1 displayBuffer7[] = {0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0};


void Kilit()
{
   output_high(SH_CP);
   output_low(SH_CP);
   output_high(ST_CP);
   output_low(ST_CP);
}


void DsHighLow(int value){
switch(value){
case 0:
output_low(DS);
break;
case 1:
output_high(DS);
break;
}
}

void ekranadegerver(int value){
switch(value){
case 0:{
for(j = 0;j<30;j++){
if(displayBuffer1[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01111110);
Kilit();
}
}
break;
case 1:{
for(j = 0;j<30;j++){
if(displayBuffer2[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01111101);
Kilit();
}
}
break;
case 2:{
for(j = 0;j<30;j++){
if(displayBuffer3[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01111011);
Kilit();
}
}
break;
case 3:{
for(j = 0;j<30;j++){
if(displayBuffer4[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01110111);
Kilit();
}
}
break;
case 4:{
for(j = 0;j<30;j++){
if(displayBuffer5[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01101111);
Kilit();
}
}
break;
case 5:{
for(j = 0;j<30;j++){
if(displayBuffer6[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b01011111);
Kilit();
}
}
break;
case 6:{
for(j = 0;j<30;j++){
if(displayBuffer7[29-j] == 0){
DsHighLow(0);
} else {
DsHighLow(1);
}
output_b(0b00111111);
Kilit();
}
}
break;
}
}

void main()
{

set_tris_c(0x00);
output_c(0x00);
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0x00);
output_a(0x00);

   while(TRUE)
   {
   ekranadegerver(i);
   i++;
   if(i==7)
   i = 0;
   delay_us(3000);
 output_b(0xff);
   }
}

seron

Sağolun :)
Siz olayı çözmüşsünüz :D
Ceryanlı devreler olarak prensibim: Az iş, çok laf! O kadar!
Ayrıca şunu unutmayın, atasözüdür, oylarınız damlaya damlaya... Dağdan kestim kereste.