arkadaşlar aşağıda 7 segment ile pic in b ve d portunu kullanarak 0-99 arası kronometre yada sayıcı için bir deneme yaptım fakat olmadı.
b portuna bağlı 7 seg. de 0 yazıyor ,d portundakinde ise 0-9 kadar durmadan yazıyor.ben burada b portunda 9 yazdımı d portunda 1 artış yapmak istedim. şimdiden tşk.iyi çalışmalar
main()
{
int sayac=0;
int sayac1=0;
charekran[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
charekran1[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
output_b(0x00);
output_d(0x00);
while(1)
{
for(sayac=0;sayac<10;sayac++)
{
output_b(ekran[sayac]);
delay_ms(500);
for(sayac1=0;sayac=9;sayac1++)
{
output_d(ekran1[sayac1]);
}
}
sayac=0;
}
}
for(sayac1=0;sayac=9;sayac1++)
hata ;) sayaca 9 yüklemişin kosulun sayac esitmi 9 a for(sayac1=0;sayac==9;sayac1++)
bir = işateri daha koydum
hem 2 portu kullanmana gerek yok tek port la 4 pinlede 9999 sayıcı yapabilirsin 7 tanesi segmene 4 tanesi her dispilayin ortak ucuna teker teker baglanacak ve tarama yoluyla degerler gözükecek tabi göz yanılmasından dolayı tüm degerler gözükecek bu mantıkla yapmaya calış
yazılımı algoritmasını incelemdim sadece o komutu görünce bildirmek istedim
NOT her bi uygulama ve problem için aynı uygulama türlerinde konu başlıgı acmana gerek yokki actıgın konun devamına problemlerini yaz selametle kolay gelsin
mürsel kardeş ilgin için sağol. ama == koydum fakat birinci digit 9 oldu ve orda kaldı 2.digit ise sürekli 0-9 kadar yazıp yine yazıyor ve 1.digit 0 a dönmüyor.
iyi çalışmalar
for(sayac1=0;sayac=9;sayac1++)
satırını
for(sayac1=0;sayac1<10;sayac1++)
şeklinde degiştirirsen sorunun büyük ihtimalle çözülecek.
displayleri sürmek için ne kullandın acaba? onuda söylersen c de yardımcı olabilirim bende yaptım çünkü sayıcı
4511 yada 7447 ilemi yaptın acaba onu bilmek istedim sorun yoksa devreni buraya verebilirsen daha iyi olur
chan86 kardeş ben displayi direk pic in portundan sürüyorum.anlıyacağınız ben bu işe yeni başladım ve temelden bunu deneyerek öğrenmek istiyorum.
bu yüzden sizden ipuçları istiyorum.çünkü elektronik ve proğram yazma tecrübem çok az.bir arkadaş pic te tek port kullanarak diğer portun 4 ucunu kullanarak 0-9999 sayıcı yapabilirsin dedi aslında en mantıklısı bu.
Merhaba Hmg arkadas;
asagıdakı linkte tarama yontemıyle yapılmıs sayıcı devresı ve kodları mevcut. Kodlar Hi-Tech C de yazılmıs degısıklık yaparak CCS C cevırebılırsınız. Kolay gelsın
http://www.biltek.tubitak.gov.tr/gelisim/elektronik/27.htm
evet 4 pin ucuyla 9999 sayıcı yapablirsin ama displayleri sürmek için bir entegre kullanman lazım eğer 4 pinle 4 9999 sayıcı yapacaksan istersen 4511 kullanmanı tavsiy3 ederim
biraz çalışma yardımlarınız sonucu 2 digit 7 segment için 18f4620 nin b ve d portlarını kullanarak 0-dan 99 kadar ekranda yazan aşağıdaki kodu yazdım.bu proğram proteus ta 0 dan 99 a kadar bir kez yazıyor sonra sadece 1.digit yani birler basamağını 0-9 kadar yazıyor. ve 10 lar basamağında hiç bir ışık olmuyor.
for ların yerini değiştirdim return ve goto kul.çalıştım ama tekrar 00 a döndüremedim döngüyü.
#include <18f4620.h>
#use delay(clock=4000000)
main()
{
int sayac=0;
int sayac1=0;
char ekran[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char ekran1[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
output_b(0x00);
output_d(0x00);
for(;;)
{
for(sayac=0;sayac<10;sayac++)
{
output_b(ekran[sayac]);
delay_ms(200);
if(sayac==9){sayac1++;}
output_d(ekran1[sayac1]);
}
}
}
3 tane for kullanman lazım
1 tanesi sonsuz döngü 1 tanesi 10lar basamağı için 1 taneside 1 ler basamağı için bunalrı dikkat eder yaparsan sana yardımcı olur hemen direk olarak vermek istemiyorum biraz çabalayıp kendin bulup öğrenmen ;)
yapamazsan yardımcı olurum
chan86 kardeş.önceki mesajdaki kodda if yerine for döngüsü de kullandım ,yani dediğin gibi 3 for oldu ama olmadı.eğer yukarıdaki koda doğrusunu eklersen sevinirim.3 gündür buna uğraşıyorum ,ilerleme oldu ama bazen takılıyorum ve ilerleyemiyorum.
#include <18f4620.h>
#use delay(clock=4000000)
main()
{
int a=0;
int b=0;
char ekran[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char ekran1[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
output_b(0x00);
output_d(0x00);
for(;;)
{
for(a=0;a<10;a++)
{
output_d(ekran1[a]);
for(b=0;b<10;b++)
{
output_b(ekran);
delay_ms(200);
}
}
}
}
bunu bir dene umarım isini görür
chan86 kardeş program çalıştı. teşekkürler.şimdi for döngülerini anlamaya uğraşıyorum.
iyi çalışmalar.....
arkadaşlar 2 digit 0-99 sayıcıyı ; 2 digiti 2 ayrı b ve d portunu kullanarak yardımlarınızla yaptım,şimdi ise 0-9999 4 digit ve ve 2 portu kullanarak ; birini 7 seg. uçlarına diğer portun 4 ucunu tarama için kullanıp yapmak istiyorum.ve burada artışlar tmr 0 kesmesi kullanarak yapılabilirmi.
örnek kod gönderir veya yazarsanız sevinirim.