STM32F4 discovery kartı 128x64 grafik ekran

Başlatan pcb, 26 Ocak 2012, 10:55:19

pcb

Merhaba arkadaşlar
STM32F4 discovery kartı ile 128x64 grafik ekran kullanmak istiyorum , C dilini geliştirmede benim için ekran çok önemli.
aşağıdaki linkte bulunan ks0108 driver da anlayamadığım bir kaç kısım var.

1- Driver daki DATA PORT u discovery karttaki hangi portta çalışıyor bunu istediğim port a nasıl tanımlayablirim ?
2- Data portu dışında diğer RW-DI ... gibi GLCD nin işlemciye bağlantı port isimlerini programda görebiliyorum , bu portları nasıl değiştirebilirim ?

https://www.picproje.org/index.php/topic,37118.msg268952.html#msg268952

muhittin_kaplan

hocam kullanmadım ama ks0108.h dosyasının içerinde
#define KS0108_RW_PIN	1
#define KS0108_RW_PORT	GPIOB_BASE


geçiyor.

pcb

GLCD nin 8 bitlik data portu, DT_PORT programda işlemci E portunun 8. pini diye yazıyor anladığım kadarı ile

#define KS0108_DT_PIN	8
#define KS0108_DT_PORT	GPIOE_BASE


bu bağlantı nasıl yapılacak ? geri kalan 7 bitlik kısım işlemcide hangi port a bağlanacak veya yalnış mı anlıyorum ?

/* LCD Connection Descriptions */
#define KS0108_RST_PIN	0
#define KS0108_RST_PORT	GPIOB_BASE

#define KS0108_RW_PIN	1
#define KS0108_RW_PORT	GPIOB_BASE

#define KS0108_DI_PIN	2
#define KS0108_DI_PORT	GPIOB_BASE

#define KS0108_EN_PIN	11
#define KS0108_EN_PORT	GPIOB_BASE

#define KS0108_CS1_PIN	4
#define KS0108_CS1_PORT	GPIOC_BASE

#define KS0108_CS2_PIN	5
#define KS0108_CS2_PORT	GPIOC_BASE

#define KS0108_DT_PIN	8
#define KS0108_DT_PORT	GPIOE_BASE

muhittin_kaplan

Son 8 bit sanırım
yani GPIOE 8 den GPIOE 15 ya kadar

ErsinErce

#4
başlangıç pinini yazıyorsunuz hocam orada
eğer 0 yazarsanız 0-1-2-3-4-5-6-7
eğer 1 yazarsanız 1-2-3-4-5-6-7-8
.
.
.
data pinleri oluyor

ayrıca hangi port olduğunu BASE adresinden ayarlıyorsunuz
A için GPIOA_BASE
B için GPIOB_BASE
.
.
.

pcb

Data pinlerinin bağlantısı yaptım , ekran diğer bağlantıları da tamam aşağıdaki program kısmı ekranda henüz birşey yazdırmış değil hatalı mı acaba ?

  while(1)
      {
         GPIOD->ODR= 0x0000F000;     // Ledler yansin
         Delay();
         GPIOD->ODR= 0x00000000;     // Ledler sonsun
         Delay();
		 gotoxy_ks0108(0,1);
		 puts_ks0108("merhaba");
		 Delay();
	}

ErsinErce

#6
zamanlamaları ve bağlantılarınızı bir kontrol edin, ayrıca init_ks0108() kısmını atlamayın
yaptığım devrede çalıştırdıktan sonra yayınladım, çalışan kodlar

ek: sonradan birkaç düzenleme yapmıştım kodlarınızı güncellerseniz kullanımınız daha rahat olur

diot

@PCB
stm32f4 discovery ile yeni çalışmaya başladım. grafik lcd takmak itiyorum. fakat ks0108 ler 5v stm324xx serisi 3v lojik seviye uygunlaştırmasını nasıl yaptın. stm32f4xx serisi 5voltluk ttl yada cmos lojik seviyelere uygun davranıyormu ?. Bu konuyu biraz açabilirmisiniz. 5v luk lcd nin data bus unu stm32f407 ye bağlayıp discovery kitimi yakmak istemiyorum çünkü.

muhendisbey

Alıntı yapılan: diot - 17 Şubat 2012, 18:40:08
@PCB
stm32f4 discovery ile yeni çalışmaya başladım. grafik lcd takmak itiyorum. fakat ks0108 ler 5v stm324xx serisi 3v lojik seviye uygunlaştırmasını nasıl yaptın. stm32f4xx serisi 5voltluk ttl yada cmos lojik seviyelere uygun davranıyormu ?. Bu konuyu biraz açabilirmisiniz. 5v luk lcd nin data bus unu stm32f407 ye bağlayıp discovery kitimi yakmak istemiyorum çünkü.

Genelde bu tip donanımlarda 5V beslemeyi verirsin. Onun dışında 3.3V zaten lojik seviye için yeterli olur. Ancak olurda donanım bunu kabul etmezse, to kılıf BJT yada FET ile 5V seviyesine taşıyabilirsin.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

CLR

Alıntı yapılan: diot - 17 Şubat 2012, 18:40:08
@PCB
stm32f4 discovery ile yeni çalışmaya başladım. grafik lcd takmak itiyorum. fakat ks0108 ler 5v stm324xx serisi 3v lojik seviye uygunlaştırmasını nasıl yaptın. stm32f4xx serisi 5voltluk ttl yada cmos lojik seviyelere uygun davranıyormu ?. Bu konuyu biraz açabilirmisiniz. 5v luk lcd nin data bus unu stm32f407 ye bağlayıp discovery kitimi yakmak istemiyorum çünkü.

LCD'yi 5V ile besle yoksa çalışmaz, Busy için LCD'den geri okuma yapacaksan iki seçeneğin var,
1.  stm32 5V toleranslı portları kullanacaksın
2.  araya ilgili buslara 1k gibi seri direnç at bu işini çözer.

Busy için lcd'yi okumuyacaksan %90 lcd'lerin data busları TTL uyumlu olduğu için 3V3 ile doğrudan sürebilirsin. Fakat 2. seçeneği alışkanlık haline getirmeni tavsiye ederim, hiç kart yakmazsın.
128x64 monocolor GLCD için 1k uygun fakat direnç değeri sürdüğün frekansa göre değişir.


Knowledge and Experience are Power