1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler »

PIC ile dokunmatik panel grafik lcd kullanımı mikro c

dokunmatik_panel

Dokunmatik özellikli grafik lcd uygulaması için iyi bir örnek picroje forumunda paylaşımı yapan “”f_machine”" adlı üyeye teşekkürler

PIC ile DOKUNMATİK PANEL KONTROLÜ (Pic 18F4620)

dokunmatik-panel-128x64-grafik-lcd
Resim 1-Dokunmatik Panel ve 128*64 Grafik LCD

Bu yazıda,4 kablolu rezistif dokunmatik panel incelenecektir. Dokunmatik panel, dokunduğumuz noktaya uygun olarak bize analog çıkışlar üretir. Dokunmatik panelin alt ve üst tarafında iki film bulunur. (Şekil 1) Panele dokunduğumuzda, bu iki film birbirine temas eder.İki film arasında akım akışı olur. X koordinatını elde etmek için üst taraftaki film, Y koordinatını elde etmek için ise alt taraftaki film enerjilendirilir.Diğerinden adc ile değer okunur. Dokunduğumuz konumu tespit etmek için 2 adım izlenir.

1. Y uçlarından birine +5v,diğerine 0v verilir.X uçlarından biri yüksek empedans(hi-z) yapılır. X in diğer bacağından adc ile analog değer okunur.Okunan değer Y koordinatıdır.

2. X uçlarından birine +5v,diğerine 0v verilir.Y uçlarından biri yüksek empedans(hi-z) yapılır. Y nin diğer bacağından adc ile analog değer okunur.Okunan değer X koordinatıdır.

dokunmatik-panel-glcd-alt-ust-filmler
Şekil 1- Dokunmatik Panel Alt ve Üst Filmler

Ancak dokunmatik panel,biz panele dokunmasak dahi,bir çıkış üretir. Bu da yanlış ölçümlere sebep olur.Bunu engellemek için ise,ölçümden önce; X uçlarından birine +5v verilir,diğeri analog giriş yapılır..Y uçlarından biri yüksek empedans(hi-z) yapılır.Y nin diğer bacağından adc ile analog değer okunur.

Okunan değerVcc ye yakın bir değerse, panele dokunulmuş demektir.Daha sonra yukarıdaki 1. ve 2. adımlar takip edilerek X ve Y koordinatları belirlenir. Panelin, basılan örnek beş noktası (Şekil 2) ve bunlara verdiği X çıkışları(Şekil 3) aşağıda gösterilmiştir.

xelectrode-glcd-panel-cilis
Şekil 2- Örnek Beş Nokta

dokunmatik-panel-bitlik-adc-sonuclari
Şekil 3- 10 Bitlik Adc Sonuçları

Ayrıca,paneli kontrol etmek için bir sürücü devre kullanmak gerekir.(Şekil 4) Sürücü devredeki AN0 ve AN1 bacakları pic’in RA0 ve RA1 analog girişlerine bağlanır. Diğer 2 pin PORTA nın 2. ve 5. pinlerine bağlanır.

dokunmatik-panel-128x64-grafik-lcd-surucu-devre
Şekil 4- Sürücü Devre (transistörler BC556AP)

Şimdi konuyu daha iyi anlamak için bir örnek uygulama yapılacaktır. Program MikroC ile yazılmıştır.

//dokunmatik_deneme.c
//yazar: Serdar Güney
//pamukkale üniversitesi elektrik-elektronik mühendisliği
//Program dokunmatik panelin ürettiği analog çıkışı glcd de gösterir..
//29.04.2009

unsigned int x_koordinat(void );
unsigned int y_koordinat(void );
unsigned char basma_kontrol(void );
unsigned int adc_deger;
unsigned char ch;
long gerilim;
void main () {
ADCON1=0x0D; 			//RA0,RA1 ANALOG, GERİSİ DİJİTAL
PORTA = 0x00;
TRISA = 0x03; 			// PORTA.0 ve PORTA.1 giriş
PORTA=0x00;

Delay_Ms(100);

Glcd_Init(&PORTB,1,0,2,3,4,5, &PORTD); 	//glcd pinleri ayarla
Glcd_Set_Font(FontSystem5x8, 5, 8, 32);
Glcd_Fill(0x00); 						//glcd temizle
Glcd_Write_Text("X= ",10,3,1);
Glcd_Write_Text("Y= ",10,5,1);
for (;;) {

while (!basma_kontrol()); 				//panele dokunuldu mu?
gerilim = (long)x_koordinat() * 5000; 	// okunan değeri mv a dönüştür
gerilim = gerilim / 1023;				 // 0..1023 -> 0-5000mV
ch = gerilim / 1000; 					// voltu elde et
Glcd_Write_Char(48+ch,42,3,1); 			// voltu yazdır
Glcd_Write_Char('.',50,3,1);
ch = (gerilim / 100) % 10; 				// 0.1 volt değerlerini elde et
Glcd_Write_Char(48+ch,58,3,1);
ch = (gerilim / 10) % 10; 				// 0.01 volt değerlerini elde et
Glcd_Write_Char(48+ch,66,3,1);
ch = gerilim % 10; 						// 0.001 volt değerlerini elde et
Glcd_Write_Char(48+ch,74,3,1);
Glcd_Write_Char('V',82,3,1);

					//y koordinatı için aynı işlemleri tekrarla

gerilim = (long)y_koordinat() * 5000;
gerilim = gerilim / 1023;
ch = gerilim / 1000;
Glcd_Write_Char(48+ch,42,5,1);
Glcd_Write_Char('.',50,5,1);
ch = (gerilim / 100) % 10;
Glcd_Write_Char(48+ch,58,5,1);
ch = (gerilim / 10) % 10;
Glcd_Write_Char(48+ch,66,5,1);
ch = gerilim % 10;
Glcd_Write_Char(48+ch,74,5,1);
Glcd_Write_Char('V',82,5,1);

Delay_Ms(5);
}
}
unsigned int x_koordinat() {
unsigned int sonuc;
TRISA.F0=0; 				// porta 0. bit çıkış
PORTA=0; 					//porta yı temizle
PORTA.F2=1; 				// Y+ yüksek empedans
PORTA.F5 = 0; 				// X+ +5v
Delay_Ms(5);
sonuc=adc_read(1); 			// X koordinatını al
TRISA.F0=1; 				//porta 0.bit analog giriş
return sonuc;
}

unsigned int y_koordinat() {
unsigned int sonuc;
TRISA.F1=0; 				//porta 1.bit çıkış
PORTA=0; 					//porta yı temizle
PORTA.F2 = 0; 				// Y+ +5v
PORTA.F5 = 1; 				// X+ yüksek empedans
Delay_Ms(5);
sonuc = adc_read(0); 		// Y koordinatını al
TRISA.F1=1;
return sonuc;
}
unsigned char basma_kontrol(void ) {
unsigned int ADC_ESIK_DEGER=800;		 //esik deger (5V/1024)*(800)=3.9v

unsigned char sonuc;
TRISA.F1=1; // RA0 analog giriş
TRISA.F0=1; //RA1 analog giriş
PORTA=0; //portayı temizle
PORTA.F2=0; // Y+ +5v
PORTA.F5=1; //X+ yüksek empedans
adc_deger=adc_read(0); // y koordinatını al
sonuc = (adc_deger > ADC_ESIK_DEGER); 			// okunan değer eşik değerden büyükse sonuc=1
Delay_Ms(2);
adc_deger = adc_read(0); 					// hata olasılığı için işlemi tekrarla
sonuc = sonuc & (adc_deger > ADC_ESIK_DEGER);
return sonuc; 							//basıldıysa 1,basılmadıysa 0 olur
}

Uygulamaya Ait Fotoğraflar

dokunmatik-panel-128x64-grafik-lcd-uygulama1 dokunmatik-panel-128x64-grafik-lcd-uygulama2

Yazar: gevv

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1955 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

Elektronik

 
  1. Ö.Değer ÖZSU says:

    Eski KORG i30 marka/model orgumun dokunmatik ekranına yağmurla beraber su dolmuştu bir açıkhava konserinde.Ekranı bozduktan sonra nasıl onarabileceğimi anladım.Yenisine de 400 mark para saymıştım o dönem.Değiştirdim hallettim.Yazıyı görünce aklıma o geldi hemen.

    gevv eline sağlık bu güzel paylaşım için.Teşekkürler

  2. ahmet says:

    slm f_machine…
    öncelikle ellerine sağlık süper bir proje
    paylaşım için teşekkurler…
    bende tam böyle birşeyle ilgileniyordum.
    ben menulu bır proje yapacagım bu dokunmatık pad bacakları ile ilgili bilgi verirmisin acaba…
    ve örnegin bizim beslememiz 5v tun bıraz altına dustugu zaman menulu bır devre yaptıgımızda bastıgımız noktayı gerılım değişimlerine ragmen
    yanlıs olarak okumadan nasıl yaparız bunu nasıl onlerız?
    tekrar ellerıne sağlık kolay gelsın

  3. ahmet says:

    ok ok dokunmatık pad bacaklarını buldummm…. ;) ;) :)

  4. Kaan says:

    Peki bunu lcd ekran olarak kullanabilirmiyiz?MEsela bi projede lcd ekran kullanılmış.Onu söküp,bu ekranı taksak.Dokunmatik bağlantılarınıda yapsak çalışırmı?

  5. evliya songül says:

    Ellerin dert görmesin çok güzel bir projeye imza atmışsın renkli dokunmatik ekranlara bilgi yazdırma konusunda makalen varsa ve bizimle paylaşırsan çok seviniriz şimdiden teşekkürler.

  6. Bahadır says:

    Arkadaşlar bu ürünleri satın alırken çok dikkatli olun 128×64 lcd nin ekranıyla, 128×64 dokunmatik panelin yüz ölçümleri birbirine uymuyor bazen

  7. alper says:

    sayın gevv öncelikle paylaşımınız için teşekkür ederim.. bu konu ile ilgili bitirme tezim var da touchpanel kontrollü menü tasarımı ile uğraşıyorum… programınızdan anladığım : x koordinat ve y koordinat fonksiyonları, bildiğimiz gibi ÖR:(3,5) (45,20) gibi koordinat değerleri üretiyor değil mi? anladığım kadarıyla basma kontrolunden sonra bi if koyup if( (x>3)&(x5)&(y<20) ) ise yani ekranda bu bölgeye dokunursam şunları yapsın diyebilirmiyim direk?? bilgisi olan diğer arkadaşlardan da yardım bekliyorum. şimdiden teşekkürler… saygılar…

    (240×128 glcd ve buna uyumlu touch panelim var)

  8. ilker says:

    Arkadaşlar burada kullandığınız dokunmatik paneli nereden aldınız? Karaköyde bir gün aradım bulamadım…

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)

  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.