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 (https://www.picproje.org/index.php/topic,37118.msg268952.html#msg268952)
hocam kullanmadım ama ks0108.h dosyasının içerinde
#define KS0108_RW_PIN 1
#define KS0108_RW_PORT GPIOB_BASE
geçiyor.
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
Son 8 bit sanırım
yani GPIOE 8 den GPIOE 15 ya kadar
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
.
.
.
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();
}
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
@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ü.
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.
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.