3v3 mcu ile 5v lcd nasıl sürebilirim

Başlatan satilla, 18 Temmuz 2011, 15:10:59

satilla

devre lpc1768 kullancagım 3v3 ile çalışıyor lcd ise 5v ile çalışıyor
bu dönüşüm için hangi entegreyi tavsiye ederseniz
malum lcd için 13 tane pin kullanılıyor
hc595 ile felan sürmek istemiyorum

satilla

#1
Alıntı yapılan: FxDev - 18 Temmuz 2011, 15:19:35

Çalışmama durumu ancak LCD'nin data bacakları 3.3V'tu H olarak kabul etmediğinde oluşur.

evet hocam bende bunu kastediyorum
direk bağlarsam sorun oluşturmazmı mesela portlardan fazla akım çekmek isteyecektir aslında kısa süreli olacagı için sorun cıkarmaz belki ama
ben işimigarantiye almak için bir entegre düşünüyorum

Tagli

#2
Zamanında benzer bir durumla karşılaşmış ama çözüm bulamamıştım. İlk aklıma gelen open collector buffer kullanmak oldu. Gittim 7417 aldım ama maalesef 4.5 voltun altında çalışmadığını (yanlış hatırlamıyorsam) fark ettim.

Bu iş için rahat bulunur bir entegre olsa güzel olurdu.

Not: Kullandığın işlemcinin 5 volt toleranslı open collector çıkışları varsa işin kolay. Harici bir entegre kullanmana da gerek kalmaz.
Gökçe Tağlıoğlu

satilla

datasheets'i biraz inceledim ancak stellaris gibi bastıra bastıra benim toleransım var dememiş
belki vardır ama ben göremedim bi yerde

fatihkuzucu

PCM1602K 5V ile besleyip 3.3V mcu ile sürebilirsiniz. Datasheette input high voltaj seviyesi kısmına bakmak gerek. 0.6VDD gibi bir ibare varsa sorun cıkmaz.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

satilla

Alıntı yapılan: fatihkuzucu - 18 Temmuz 2011, 15:49:03
PCM1602K 5V ile besleyip 3.3V mcu ile sürebilirsiniz. Datasheette input high voltaj seviyesi kısmına bakmak gerek. 0.6VDD gibi bir ibare varsa sorun cıkmaz.

kullanacagım glcd pg12864 inş bir sorun çıkmaz

fatihkuzucu

2.8V a kadar sürülebiliyor. Hatta lcd beslemesini 4.5V a cekersek 2.5V luk bir mcu bile sorunsuz sürülebilir.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

yamak

lpc1768 ile glcd süröeyi bir kere deneme şansım olmuştu çalıştıramamıştım.Ama sorun hazırladığım kütüphanede de olabilirdi.Fakat karakter lcd direkt sürmüştüm sorun olmamıştı. tek sorun işlemci biraz düşük hızda çalıştırmak gerekiyo.Mesela 24 mhz de çalıştırdığımda düzgün çalışmıştı.

fatihkuzucu

işlemci hızı ile alakalı degil. Sizin sorun yazılımsal.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

satilla

2-3 güne kadar denerim sonucu burda paylaşırım

yamak

işlemci hızı ile alakalı değil. Sizin sorun yazılımsal.

Sorun ne peki merak ettim.Açıkalar mısınız?

ErsinErce

Alıntı yapılan: yamak - 19 Temmuz 2011, 13:03:09
işlemci hızı ile alakalı değil. Sizin sorun yazılımsal.

Sorun ne peki merak ettim.Açıkalar mısınız?
Lcdnin komut alma süresinden önce pin durumlarını değiştiriyorsunuz gibi görünüyor, bu yüzden lcd komutları işleyemiyor,
yazılımınızı Lcdnin datasheetindeki hızlara göre ayarlamanız gerekiyor

fatihkuzucu

Alıntı yapılan: yamak - 19 Temmuz 2011, 13:03:09
işlemci hızı ile alakalı değil. Sizin sorun yazılımsal.

Sorun ne peki merak ettim.Açıkalar mısınız?

1768 ile lcd glcd sürüyoruz hiç bir sorun yok. Yavaslatmak fakan gerekmiyor yani.Bizim kodları site üzerinden dagıtıyorum zaten. Varsa bir sorun ve açıklanması gereken durum kendi kodlarınızın içerisinde. 
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

yamak

Normalde bekleme sürelerini usulüne uygun yapıyorum.Kodlarım aşağıda neyi düzeltmem gerekiyo.
#include <lpc17xx.h>
#include "lcd.h"
#include "lpc17xx_delay.h"

void lcd_bekle(void)
{
     DelayUs(0,500);
}
void komut_gonder(unsigned char c)
{
     LPC_GPIO1->FIOCLR=1; //e=1,rs=0,rw=0;
     LPC_GPIO1->FIOSET=2;
     lcd_port=((c&240)>>4);
     LPC_GPIO1->FIOCLR=2;
     lcd_bekle();
     LPC_GPIO1->FIOSET=2;
     lcd_port=((c&15));
     LPC_GPIO1->FIOCLR=2;
     lcd_bekle();
     LPC_GPIO1->FIOCLR=2;
}
void veri_gonder(unsigned char c)
{
	 LPC_GPIO1->FIOSET=3;
     lcd_port=((c&240)>>4);
     LPC_GPIO1->FIOCLR=2;
     lcd_bekle();
     LPC_GPIO1->FIOSET=2;
     lcd_port=((c&15));
     LPC_GPIO1->FIOCLR=2;
     lcd_bekle();
     LPC_GPIO1->FIOCLR=3;
	 
}
void lcd_temizle(void)
{
     komut_gonder(sil);
	 DelayMs(0,2);
}
void cumle_gonder(char *s)
{
 
    lcd_bekle();
    while (*s ) 
	{	 
   		veri_gonder((*s++));
	}
}
void lcd_gotoxy(unsigned char x, unsigned char y)
{
     if(x==1)
             komut_gonder(128+((y-1)%16));
     else
             komut_gonder(192+((y-1)%16));
}
void lcd_hazirla(void)
{
	 LPC_GPIO1->FIOCLR=3;
	 DelayMs(0,15);
	 LPC_GPIO1->FIOSET=2;
         komut_gonder(basadon);
	 DelayMs(0,2);
         komut_gonder(ciftsatir4bit);
         komut_gonder(sagayaz);	
         komut_gonder(imlecgizle);
	 lcd_temizle();
	 komut_gonder(birincisatir);
}

satilla

bunun için şu bufferi buldum ancak TR'de bulmak mesele "74lvc244"