Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Eeprom ve LCD

Başlatan NamTech, 20 Ocak 2016, 10:21:50

NamTech

Arkadaşlar,

Mikroc ye yeni başlıyorum ve bir sorunum var.16f877a ile LCD çalıştırdım LCD li ve Dahili Eepromlu bir sayaç yapmaya çalışıyorum. Günlerdir uğraşmama rağmen henüz bir arpa boyu yol alamadım.

char txt[2];


Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Sayac =");
IntToStr(sayac11, txt);
Lcd_Out(1, 9, txt);
IntToStr(sayac12, txt);
Lcd_Out(1, 12, txt);
Lcd_Out(2, 1, "Toplam =");
IntToStr(sayac21, txt);
Lcd_Out(2, 10, txt);
IntToStr(sayac22, txt);
Lcd_Out(2, 13, txt);

Şeklinde deniyorum fakat bir sonuç alamıyorum. Toplamda 2 adet sayaç olacak ve her bir sayaç 4 basamaklı olacak. Ben 2 basamaklı 2 adet sayıyı ard arda ekleyerek 4 basamak oluşturmayı düşündüm. Aklımın yettiği her yerde araştırdım fakat doğru düzgün bir sonuca ulaşamadım.

Yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim.
Kim Ne Derse Desin Alelade Birisi.

dursuncemal

:=

NamTech

Bütün kod yukarıdaki kod grubu değil. Fazlaca yer kaplamaması adına değişken tanımı ve LCD gösterme kısmını koydum
Kim Ne Derse Desin Alelade Birisi.

dursuncemal

lcd yı kullana biliyormusun?

:=

NamTech

evet LCDyi kullanabiliyorum, sorunum şu ki, Eeprom'dan aldığım veriyi (2 basamaklı sayı değeri) LCD ye gönderemiyorum. Saçma sapan yazılar görünüyor.
Kim Ne Derse Desin Alelade Birisi.

dursuncemal

micro c yi  hic bilmiyorum ama sen dizini char olarak tanitmisin    eepromu okuma ilk once dizine sabit bir sayi yaz onu gor ekranda mesela  char txt[0] = '1'; char txt[1] = '2'; 

sen eepromdan char okukadigin icin sacma sapan geliyo olabilir.


:=

NamTech

Ya bunu anlamakta güçlük çekiyorum.
eeproma 01 sayısını yazıyorum ve geri çağırdığımda 01 sayısı geri geliyor. Ben bu güne kadar JAL ile yazıyordum, Mikroc ye geçeyim dedim mantığını anlayamadığımdanmıdır nedir LCD de bile sorunlar yumağı. ÇAğırdığım sayıyı değişkene atıyorum buraya kadar herşey tamam ondan sonra bunu LCD ye gönder dediğimde saçmalamaya başlıyor. Bu bu kadar zor olmamalı sonuçta eepromdan çağırdığım iki basamaklı bir sayı. JAL gibi yetersiz bir dilde bile printf komutu sonrası değişkeni yazdığımda LCD ye gidiyor.

Bana Allah rızası için bu işin mantığını anlatacak bir hayır sever yokmudur?

Neredeyse tüm forumlarda Hello World yazıyorlar ve her şeyi göstermiş gibi havalara giriyorlar.
Kim Ne Derse Desin Alelade Birisi.

dursuncemal

#7
 bir derleyiciye yeni basliyorsan yapacagin ilk is acele etmeden turlere calismalisin.tur donusumlerini anladin mi bu tur sıkıntilari asarsin. cok uzun suredir yazilim yapiyorum su an kullandigim derleyici 3. oldu herbirinin farklii farkli huylari var.
alisana kadar bıraz zaman geciyor.



mesaj birleştirme:: 20 Ocak 2016, 22:12:43

01 yaziyorun 01 geri geliyor diyosun geri geldigini nerden goruyorsun?
:=

NamTech

Sağolasın Dursun Cemal Kardeşim,

Emin olabilirsin ben ASM ile başladım. İlk proğramlarımı yazdığımda Türkiye'de proğramlayıcı yoktu ve picbasic 1 yıl sonra çıktı. Ben konuyu anlamaya ve yardım almaya çalışıyorum.
Dediğim gibi Hello World yazmayı maarifet sanıp bi şeyler paylaştığını sananlardan usandım.

Ne demişler bilgi paylaştıkça çoğalır.

Derdim ukalalık yapmak değil. Bilenlerden yardım istiyorum.
Kim Ne Derse Desin Alelade Birisi.

dursuncemal

#9
kimsenin derdinin ukalalik oldugunu zanetmiyorum.actigin basligin altina her yazan sana yardimci olmaya calisiyor.konuya hakım olamamama ragmen sana yardimci olamaya calisiyorum.bu islerin basıt yoları yontemlerı var. yazdigin dil ne olursa olsun  atla deve diil bu isler sen su kodunu bi kapsamli at bak neler oluyo.sen masanda calisiyorsun ama kımse gormuyokı ne yaptıgını belkide basıt bırsey gozden kacıyordur. ne dersın?

mesaj birleştirme:: 21 Ocak 2016, 14:13:45

ilk once dizine sabit bir sayi yaz onu gor ekranda mesela  char txt[0] = '1'; char txt[1] = '2'; 

mesaj birleştirme:: 21 Ocak 2016, 00:16:56

sonra sunu bidene ekranda mesela  char txt[0] = 1; char txt[1] = 2; ikisindede 21 gorunuyo ama ekranda faklı olacak
:=

dursuncemal

char txt[2];


Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Sayac =");
IntToStr(sayac11, txt);
Lcd_Out(1, 9, txt);
IntToStr(sayac12, txt);
Lcd_Out(1, 12, txt);
Lcd_Out(2, 1, "Toplam =");

IntToStr(sayac21, txt);//////buradan   anladigim kadari ile sayac 21    int turunde bir degisken     yani iki  baytlik bir tur = 65536 en buyuk degeri bu.  veya 0xFFFF bu.  txt  ise 2 elemanli bir

karakter dizisi.  IntToStr(sayac21, txt) dedigin anda  int turundeki 5 hanelik bir yapiyi 5 karakterlik bir yapiya ceviriyo   tum uzunlugu 2 karakter olan txt ye sigdirmaya calisiyorsun  ki muhtemelen  enyulsek degerin iki hanesi

txt dizisine atiliyor yani 65

yuzde 99 senın sorunun bu.  sen 01 yaziyorum 01 okuyorum ok o zaman su oluyor  xxx01 yada 00001 oluyor. ya xx yada 00 goruyorsun. xx = rastgele bir sayı

char txt[5];//yap bi dene olacaktir diye dusunuyorum

umarim cozmusuzdur.

:=