STM8S103F3 modülü ile EASYLCD modülü kullanımı

STM8S103F3 modülü ile EASYLCD modülü kullanılarak, Seri port üzerinden LCD kontrolü nasıl yapılır.

EASYLCD modülü, karakter LCD ekranların arkasına bağlanan ve LCD ekranın, seri port üzerinden kütüphane gerektirmeden, kolay hatırlanabilir komutlarla, kullanılmasını sağlayan bir modüldür.
Kendi tasarladığım bir modüldür.

Karakter LCD ekranların arkasına kolaylıkla bağlanır.

EASYLCD hakkında detaylı bilgi için bu sayfaya bakabilirsiniz.
https://www.mikrobotik.com/wp2/2018/06/27/easylcd-hd44780-uyumlu-karakter-lcd-seri-modul/

STM8S103F3 modülüm ile seri port üzerinden kontrol edebildim. İster tek kablo ile isterse çift kablo ile kullanabileceğiniz bir modül olduğundan, ben tek kablo kontrolü olarak gerçek devreyi kontrol ettim. (Tabii ki 4K sınırı olmasa program içerisinde bulunan seri porttan bilgi alma kısmının verdiği bilgiye göre 2 kablolu çalışmayı da yapabilirdim. Bunu 1. Videoda görebilirsiniz.)

STM8S ile ilk programımı yazmaya başlarken, Seri port kullanımı ve GPIO dediğimiz giriş çıkış pimlerini kullanarak LED yakmak ve bir BUTON ile giriş kontrol yapmak olarak başladım.
STM8S modülüyle ilk programlama tecrübelerimi anlattığım yazım ise buradadır.
https://www.mikrobotik.com/wp2/2021/06/17/stm8s-modulu-ile-programlama/

Daha öncesinde ise yine STM32 ile seri port kullanımı ve GPIO kontrolü için ilk programımı yazmıştım. O modül ile de EASYLCD modülünü kullandım. STM32 başlangıç programıma da bu linkten ulaşabilirsiniz.
https://www.mikrobotik.com/wp2/2021/03/19/stm32-ile-program-yapmaya-baslamak/

EASYLCD kullanımı kolay olduğundan seri port çalışmasını öğrendiğinizde LCD ekranları da kontrol edebilecek seviyeye gelmiş bulunuyorsunuz.

STM8S programı oldukça basittir. Fakat IAR IDE kullanarak programlama yaptığımdan ve bu İDE nin free versiyonu 4K hafızaya kadar müsaade ettiğinden Sadece seri port kontrolünü ekleyebildim. Sizler başka IDE kullanırsanız 8K hafızaya kadar programlayabilirsiniz.

Programda 3 adet kütüphane kullanıldı.

1-) stm8s.h ( stm8.h dosyası için birkaç versiyon var. Benim dosyalarımın arasında verdiğimi kullanmanızda fayda var. Çünkü bazı kişiler içeriklerini kendilerine göre değiştirip yine aynı isimle yayınlıyorlar bu da programınızın çalışmamasına sebep oluyor. )

2-) string.h Detaylı bilgi: https://www.tutorialspoint.com/c_standard_library/string_h.htm

3-) stdio.h Detaylı bilgi:  https://www.bilgigunlugum.net/prog/cprog/c_stdkut/stdio/

Bunlardan ilki RS232 seri port kullanımı içindir. 2. Olan ise string dönüşümü için 3. Olan ise array aktarmaları için gerekli oldu. Bu durumun sorumlusu ise IAR IDE görünüyor. Çünkü kendi içinde bazı komutları barındırmıyor. Belki de FREE olduğundan olabilir ya da zaten kütüphanesi var ben karışmayayım da demiş olabilir.

String ve stdio kütüphanelerinde kullanılan komutlar şunlardır.
strncpy(komut,”LCDDD”,7);
Detaylı bilgi :  https://www.tutorialspoint.com/c_standard_library/string_h.htm

sprintf(yazdata, “%s%X”, “DEC:26 HEX: “,tempvalue);
Detaylı bilgi : https://www.bilgigunlugum.net/prog/cprog/c_stdkut/stdio/sprintf

snprintf(buf, 55, “%s%s%s%s%s”, komut,” “, koor,”-“,yazdata);
Detaylı bilgi : https://www.bilgigunlugum.net/prog/cprog/c_stdkut/stdio/snprintf

Bir de ARRAY değişkenlerinin tüm kayıtlarını silmek için bu komut kullanılmıştır.
memset(buf, 0, sizeof buf);
Detaylı bilgi : https://www.tutorialspoint.com/c_standard_library/c_function_memset.htm

Yukarıdaki komutların C programlamadaki açıklamalarına bakarak kullanım detaylarını ve parametrelerini görebilirsiniz.

Ayrıca şunu da bilmemiz gerekir. STM8 sadece C ile değil MikroC gibi dillerle de programlanabilir.
Bana C programlama başlangıç olarak zor gelse de C ile başlamak iyi olacaktır. Çünkü C dili öğrenilirse  benzerleri Mikro c, CCS c gibi  programlama dillerini de öğrenmek kolay olacaktır kanısındayım. Benim gibi BASIC dillerle başlayanlar sonrasında C öğrenmek zorunda kalabiliyor. Bu da zorlayıcı oluyor.

Tabii ki ARDUINO kullananlarda yabancılık çekmeden STM8S modülünü kolayca programlayabilir. Bunun için detaylıca hazırlanmış bir sayfa var.
https://circuitdigest.com/microcontroller-projects/programming-stm8s-microcontrollers-using-arduino-ide

Arduino IDE haricinde STM8S modülünü programlamak için, IDE olarak IAR, KEIL, COSMIC, STVD vb. ideler var. IAR free olanı 4K hafızaya kadar programlıyor. STM8s nin 8K hafızası olmasına rağmen 4K kadarını programlayabildim. PIC ve Arduinoya göre kısacık program bile hafızada çok fazla yer kaplıyor. IAR IDE’nin biraz hantal olduğu da söyleniyor. Bunun yanı sıra IAR idesinin bir dezavantajı var. Keil de ilk başlangıç değerlerini program kendi oluşturuyormuş. Deneme fırsatım olmadı.

Bunu STM32 Cube IDE de görmüştüm. Siz entegre üzerinde bacakları ve nasıl kullanılacağını seçiyorsunuz, IDE size bir program kodu üretiyor. Siz de üzerinde yapmanız gereken değişiklikleri ve eklemeleri yapıyorsunuz. Bunu STM32 yazımda göstermiştim.
IAR kullanmak kolay geldiği için ve stm8 örnekleri IAR ile verildiğinden, IAR’ı başlangıç olarak kullandım.
STM entegreler ARM mimarisine uygun olduğundan bu entegreleri genelde C ve C++ dilleriyle programlıyorlarmış. Fakat yine de şu söyleniyor. Küçük programlamada C dili öncelikli. Uzun programlarda ise C++ tercih ediliyormuş. Tercih sebebinin ise Kullanılan sınıf yönetimleri olduğu ve bunun kolaylık sağladığı yönünde.

Buraya kadar biraz teorik bilgi verdim. İlk programlarınıza başlamak istediğinizde, başlama noktanız artık belli. Umarım bu yazılarım ve verdiğim linkler size yardımcı olur.

EASYLCD ye gelince, işinizi kolaylaştıracağından eminim. Sorunsuz kullanıyorum. Fakat elimde monte edilmiş pek fazla olmadığından, sipariş ettiğinizde birkaç gün içinde test edilmiş olarak yollayabilirim.
Üzerinde kullanılan PIC16F1827 entegresinin 2,5$ fiyatının olması, modülün fiyatını arttırıyor. Fakat yine de kullanımdan dolayı getireceği fayda düşünülürse toplam fiyatının makul olacağını düşünüyorum.

Not: PIC işlemcilerle ve picbasic ile EASYLCD animasyonu yaptığımda daha küçük hafıza işgal ediyor. Sanırım IDE lere göre bu derleme değişebiliyor. Ya da kullandığım komutların karşılığındaki derleyici komutları hafızayı dolduruyor olabilir. C daha fazla yer kaplar demek istemiyorum.
Daha kolay ne olur derseniz, PIC bana kolay geliyor. Belki de artık sistemini ezberlediğim içindir. STM biraz karışık geldi. ARM mimarisiyle yapılmış işlemcilere daha yeni başladığım için ya da C programa diline daha yeni başladığım için olabilir.
Profesyonel program yapanlar PIC ve ATMEL işlemcilerini kullanıyorlar. Fakat teknolojik üstünlük ARM işlemcilerinde gibi görünüyor. Teknolojiden uzak kalmak istemiyorsanız PIC, ATMEL ve STM …  olarak öğrenmeniz gerekenleri sıralayabilirsiniz. Arduinoyu saymadım çünkü O, Atmega işlemcisini kullanan bir ticari karttır. Öğrenmeyi kolaylaştırsa da bol kütüphane olması sizi tembelleştirir.
Ben bu sırayla öğrenmeye başladım. Siz kendi yolunuzu çizin. Ama bir tanesini seçip sadece o yolda ilerlemeyin. Çünkü her birinin farklı yetenekleri ve üstünlükleri vardır.
Birçok Arduino programı yaptım ama C bilgim var diyemiyorum. ARM işlemcisine geçtiğimde Gerçekten C kütüphanelerini ve komutlarını kullanarak program yapmam gerekti.

Tüm dosyalar bu dizindedir. Dizin ismini değiştirmeyin çünkü IAR program hangi dizin ile başlıyorsa O ismi arıyor. Aynı Arduinodaki gibi.
https://github.com/safaka123/Mikrobotik_yazilarim/tree/main/STM8_EASYLCD

 

Video – 1 : Bu videoda STM8 modülü ile EASYLCD modül yerine de Seri port terminali kullanılarak hem komutların hem de geri bildirimin testi gösteriliyor.

Video – 2 : Bu videoda ise GERÇEK devre denemesi görülmektedir. 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir