Arkadaşlar Merhaba Forum daki ilk konum;
16f877a Kullanarak 3 parametre ölçen bir sistem tasarladım.
Tabi böyle sistemlerin olmazsa olmazı lcd menüler,Menümü de olusturdum gayet güzel çalışıyor.
Tek sıkıntım programın alt tarafta çalıştıramamak lcd den sectigim parametre sıfırdan başlıyor ben ise alt tarafta çalışıp lcd den seçtigimde ise o anki değerini görmek istiyorum.
Yardımlarınızı bekliyorum iyi günler
Kodu gorseydik..
Kod olmadığı için bu şekilde yorum yapmak belki faydalı olmayabilir. istediğiniz yerdeki fonksiyona sonsuz döngü kurun sonra da break ile çıkmayı deneyin.
Evet arkadaşlar kodu eklemeyi unuttum kod aşağıdaki şekildedir." Void Halleffect()" kısmını switch case nin içine atıyorum.Menu de bu kısma girdigimde ise herdefasında sıfırlanıp başlıyor.Ben pic çalışmaya basladıgı andan itibaren döngünün çalışmasını sadece menu den girdigimde o anki değerini görmek istiyorum.
(https://s12.postimg.cc/lgb0d1fxl/Ads_z.png) (https://postimg.cc/image/lgb0d1fxl/)
Pahalı gemezse bu ekran tam size göre. Menü işlemelerini tamamem ekran hallediyormuş
https://www.direnc.net/24-inch-hmi-akilli-dokunmatik-ekran-tft-lcd8-port-gpio
http://blog.direnc.net/nextion-hmi-display-lcd-ekranlar/
Alıntı yapılan: ayhani - 21 Mart 2017, 13:05:04
Pahalı gemezse bu ekran tam size göre. Menü işlemelerini tamamem ekran hallediyormuş
https://www.direnc.net/24-inch-hmi-akilli-dokunmatik-ekran-tft-lcd8-port-gpio
http://blog.direnc.net/nextion-hmi-display-lcd-ekranlar/
Staj Yaptıgım şirket bu proje için her türlü destegi sağlıyor fakat onların kendi istedikleri şekilde yapmam gerekiyor.Bana ekran olarak 2*16 Lcd kullanmamı söylediler.
Nextion da kullandım tavsiye ederim fakat
@ayhani hocam o ekran akıllı modeli sadece menü uygulamaları vs için fazla kaçar normal modeli rahatlıkla iş görür :)
Kodu paylaşırsaniz yardım edecek çok kişi var burda bence
Kodu Paylaştım ama Daha onaylanmadı. Kodu Mplab Xc8 de yazıyorum. Aşagıdaki kodu Switch case de yaptıgım menu yapısının içine ekliyorum sadece
#define Count_1 RB7
#define Up 1
void halleffect()
{
char temp[3] ;
unsigned char k1[8];
unsigned int Count = 0;
InitLCD(); // Initialize LCD in 8bit mode
TRISB7 = 1; // Make PORTB7 pin input -> Count input
ClearLCDScreen(); // Clear LCD screen
while(1) {
if(Up) // If Up is selected
{
if(Count_1) // If Count button is pressed
{
while(Count_1); // Wait for de-assertion of the button
__delay_ms(20); // Small delay
Count++; // Increment Coutn value
}
}
ClearLCDScreen(); // Clear LCD screen
// Display Count on LCD
WriteStringToLCD("Sayac:");
sprintf(k1,"%d",Count); //Bu komut ROM bellekte ciddi yer kaybina neden olmaktadir.
WriteStringToLCD(k1);
__delay_ms(200); // Some delay
}
}
NOT: Mesajınıza kod eklerken "KOD" düğmesini
kullanıp yeniden düzenleyiniz...
Sanırım Count değişkeninden bahsediyorsun. Debug yapsan bunun sebebini anlarsın. Fonksiyona her girdiğinde Count'ı tanımlayıp ilk değerini 0'a eşitliyorsun. Bu yüzden fonksiyona her girdiğinde sıfırdan başlıyor haliyle. Bu değişkeni global tanımlayarak bu işi çözebilirsin.
Alıntı yapılan: vitruvius - 22 Mart 2017, 12:22:56
Sanırım Count değişkeninden bahsediyorsun. Debug yapsan bunun sebebini anlarsın. Fonksiyona her girdiğinde Count'ı tanımlayıp ilk değerini 0'a eşitliyorsun. Bu yüzden fonksiyona her girdiğinde sıfırdan başlıyor haliyle. Bu değişkeni global tanımlayarak bu işi çözebilirsin.
Bütün arkadaşlara teşekkür ederim.Sorunu global tanımladım sistem normal çalıştı.Ayriyeten timer interrupt kullanarak fonksiyonu arka planda da çalışmasını sağladım.
İyi günler