bisiklet hız gösterge devresinde lcd yerine 3 haneli display kullanmak ?

Başlatan hacimusatr, 25 Eylül 2010, 13:29:00

hacimusatr

Biltek Tübitak internet sitesinin kendimiz yapalım köşesinde yayınlanan bisiklet hız göstergesi adlı devrenin programının yazım dili pic c dir.devre 2*16 lcd ekrana yapılmıştır.Ancak lcd ekran boyutları malum her yere sığdırılamaz.Bu yüzden istiyorum ki lcd yerine 3 haneli display olsun.Yani 3 digit karakter 7 segment küçük display.Devre teknik bakımdan sorunsuz fakat lcd sürmek pic c de çok kolay olmasına karşın display sürmek benim gibi henüz kendini geliştirmekte olan bir öğrenci için çok zor.


Tarama yöntemiyle yada normal yöntemle yapılabilir ancak bir shiftregisterle sürülebilirse elbette gayet temiz bir çalışma olabilir.ben tarama yöntemiyle yapmaya çalıştım fakat ccs c gibi değil pic c.adımları tek tek yazmak yerine for döngüsü içinde aşağı yada yukarı saydırıyosun bitleri falan ayarlıyosun. Ve ben henüz o kadar profesyonel değilim.Şimdi gelelim konuya.Pic c dilini bilen arkadaşlar(yani hi-tech)Lütfen şu konuya bi el atın.bana yardımcı olun gerekli bilgiler linkte var.Hepinize şimdiden çok çok teşekkür ediyorum Saygılarımı sunuyorum.

Display: 7 segment küçük boyutlarda ortak katot...
Entegre: 16F828A kullanılmakta fakat yetersiz kalırsa 16F877 de kullanılabilir sorun olmaz :)




#include <pic.h>
#include <delay.c>
#include <lcd.c>
#include <stdio.h>

//Konfigurasyon ayarlari
__CONFIG(WDTDIS&LVPDIS&PWRTEN&XT);

// Reed anahtar RA0\'a pinine bagli
#define SW RA0

// Global degiskenler
unsigned char kontrol=0;
unsigned char sonuc[]=\"                \";
unsigned int CX;
float pi=3.14159, r=0.3302; //Teker yaricapi

//---- TIMER kesme alt programi -----
void interrupt kesme(void){
CX++;
if(CX>10000)kontrol=1;

T0IF=0; // Bayragi temizle
TMR0=131; // TIMER\'i tekrar yukle
}

//--------- LCD alt programi----------
void LCD_yaz(void){
float hiz;
unsigned int hiz2;

lcd_clear(); // LCD\'yi temizle
hiz=2*pi*r*3600/CX; // km/saat cinsinden
hiz2=(int)hiz; // hiz degerini hesapla

lcd_goto(0x00); lcd_puts(\" HIZ GOSTERGESI \");

if(kontrol==0){ // Sonucu LCD\'ye yazdir
sprintf(sonuc+3,\"%d Km/Saat\",hiz2);
lcd_goto(0x40); lcd_puts(sonuc);
}

else{ // Bisiklet duruyorsa Hiz=0 yazdir
lcd_goto(0x41); lcd_puts(\"*** HIZ=0 ***\");
}

}
//----------- ANA PROGRAM ------------

main(void)
{
       
TRISA=0x01; // Port A\'nin ilk pini giris 
TRISB=0x00; // PortB\'nin hepsi cikis
CMCON=0x07; // PortA sayisal giris
PORTA=0; // Baslangic durumu ayarlari
PORTB=0; 

// LCD islemleri
DelayMs(250);
lcd_init();
lcd_clear();
lcd_write(0x0C); //imleci gizle
lcd_goto(0x00); lcd_puts(\" HIZ GOSTERGESI \");

// TIMER islemleri
T0CS=0; // Dahili clock
PSA=0; // Prescaler TMR0 icin ayarli
PS0=0; PS1=1; PS2=0; // Oran 1:8
ei(); // Butun kesmeler etkin
T0IE=0; // Baslangicta TIMER pasif
T0IF=0; // Bayrak temizle

// Hiz olcum islemleri
for(;;){

CX=0; kontrol=0;

while(SW==0); // Giris 0 ise bekle
TMR0=131; // 125 sayim (256-131=125)
T0IE=1; // TIMER baslat
while(SW==1); // Giris 1 ise bekle
while(kontrol==0){if(SW==1)break;}

T0IE=0; // TIMER\'i durdur
LCD_yaz(); // LCD alt programina git

DelayMs(250); // 250 ms bekle
while(SW==1);

} // islemleri tekrarla
} // Programin sonu



Link: http://www.biltek.tubitak.gov.tr/gelisim/elektronik/31.htm

neural

Merhaba, ekte istediğiniz şekle göre düzenlenmiş çalışan bir örnek bulunmakta. Ancak gerçekte denemesini yapmadım, simülasyonda denedim.
Kaynak kodları değiştirmek zorunda kaldım.
Benimde böyle bir göstergeye ihtiyacım vardı. Yapmak istiyordum ama fırsatım olmamıştı. Mevcut devre üzerinde biraz değişiklik yaptım.

Örneğin sinyal yani reed röle girişi RB0 ucundan yapılmakta. Harici kesme ve TMR0 kesmesi beraber kullanılmakta, programın ana döngüsü içinde göstergeler tarama yöntemiyle güncelenmektedir. Herhangi bir sürücü entegre yok 7 parçalı göstergeyi doğruca mikrodenetleyiciye bağladım.
Umarım işinizi görür.

Kolay gelsin.

hacimusatr

teşekkür ederim neural deniycem bu akşam inşallah işime yarar. hiç kimsenin yardımcı olmayışını ayrıca kınıyorum.forumculuk ahlakı ve anlayışı bu mudur! :(

hacimusatr

sayın neural;
3 haneli display demiştim ama hız 100 km geçince nasıl çalışıcak ne göstericek hiç düşündün mü?  :D o yüzden 3. haneyi de ben ekliyorum. çok yakında paylaşırım.Herkese iyi forumlar

Flatron

Sayın Hacımusatr
Birincisi eğer bir bisikletle saatde 99 km den fazla sürat yapıyorsanız.Size lazım olan 3 haneli display değil  başka şeylerdir.

ikincisi:O kodları güncellemek o kadar basit işler değildir.Herkez yapamaz ,anlayan herkezde yazmak zorunda değildir.Bu ülkede kombiye üfleyip 75 lira servis ücreti isteyen kişiler varken \" Bana kombi yazılımını göndermeyenleri kınıyorum\" demek de  saçmalıktır.
üçüncüsüde lütfen bu mesaja cevap yazmayın.Zira cevap verilmeyecektir.

Kolay gelsin


hacimusatr

Sayın Flatron;
3 haneli display deneyimi başarı ile tamamladım. Yazılımını sadece ÖZELDEN paylaşıcam. Bazıları gibi forum anlayışına karşı duran kişilikler varken bilgi aktarımını ulu orta yapmaya ve emeğe saygı duymayana vermeye niyetim yok!
Ayrıca neural arkadaşım proje hakkında bikaç bilgi vereyim. Sen demiştin ki devreyi denemedim.Ben denedim ve gözlemlerimi aktarıyorum. 3 haneyi ekledikten sonra bastım ve çalıştırdım.
Gözlemlenen sorunlar;
1-Yetersiz akım dolayısıyla birler hanesi normal yanarken onlar hanesine geçtiğinde birler hanesi ve onlar hanesi çok zayıflıyor.
2- Bekleme süresini 20 ms olarak ayarlamıştın sen ve pır pırı insan gözüyle rahat şekilde görülebiliyordu ki ben 1ms olarak ayarlamama rağmen hala biraz var. o yüzden us seviyesine inmeyi düşünüyorum.
Çözümler;
1-Akım yetersizliğine 2 transistörlü bir geçiş planlıyorum. Yani npn picle ve pnp de displayle bağlantılı. tabi pnp yi npn tetikliycek. npn ide pic. :)
Yorumlarınızı ve görüşlerinizi almak isterim arkadaşlar yorum yazmadan geçmeyin lütfen. Paylaşmak önbce konuşup anlaşmakla olur
Herkese iyi forumlar!!!

nreess


nikola tesla 22

Selamun aleyküm hocam uzun süredir arıyordum acaba banada verebilirmisiniz devreyi halen duruyorsa ne kadar uğraşsamda çalıştıramadım bunların yazdığı programı

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın