Karakter Lcd’lerde Standart Fontlar dışında özel tanımlı karakterlerde kullanılmaktadır. Bu yazımızda; özel tanımlanmış Karakter parçalarını kullanarak ve uygun program kodunu yazarak 2 satırı tek satır gibi kullanıp ekranda aşağıdaki gibi font kullanılabilir. Tek kötü tarafı ekrana aynı anda 4 tane karakter sığması. Basit bir saat uygulaması yada benzeri bir uygulamada bu şekilde bir tasarım kullanılabilir.
Bu uygulamamızda 16×2 karakter LCD kullanarak Jalv2 dilinde kullanımını ve özel karakter tanımlayarak büyük fontları nasıl kullanabileceğimizi göreceksiniz. Öncelikle aşağıdaki şekilde devremizi kurmalısınız.
Devrede kodumuzu Denemek için 16F628 ve 16×2 Alphanumeric LCD kullanılmıştır. Uygun bağlantı şeklini yapıp sizde kodu deneyebilir veya başka bir dilde program yazabilirsiniz.
Jalv2 ile Karakter LCD kullanımı
Karakter LCD kullanımı için Jallib içerisinde bulunan Kütüphanelerden faydalanacağız. Bunun İçin öncelikle aşağıdaki gibi kod tanımlamalarını yapmamız gerekmektedir.
alias lcd_rs is pin_a1 -- LCD command/data select. alias lcd_rs_direction is pin_a1_direction alias lcd_en is pin_a0 -- LCD data trigger alias lcd_en_direction is pin_a0_direction alias lcd_d4 is pin_b7 alias lcd_d5 is pin_b6 alias lcd_d6 is pin_b5 alias lcd_d7 is pin_b4 const byte LCD_ROWS = 2 -- Kullanılan LCD Satır Sayısı const byte LCD_CHARS = 16 -- Kullanılan LCD Sutun Sayısı lcd_rs_direction = output lcd_en_direction = output pin_b7_direction = output pin_b6_direction = output pin_b5_direction = output pin_b4_direction = output
Gerekli Tanımlamaları yaptıktan sonra ilgili LCD kütüphanesini Projemize Ekliyoruz.
include lcd_hd44780_4 lcd_init() – LCD’yi Hazırla
LCD kütüphanesini Projemize Ekledik. İlgili LCD ye ait alt programları eklediğimiz kütüphane dosyasının içerisine girerek görebilir ve kullanabilirsiniz. Yazımızda temel kullanılabilecek alt programların açıklamalarına yer verilecektir.
LCD kullanımı için gerekli temel fonksiyonlar
lcd_init() à Lcd Başlangıç ayarlarının Yapılmasını sağlar.
lcd_define(adres,karakter) à Lcd’nin ram hafızasına özel karakter tanımlamayı sağlar. 1. parametre olarak ram adresi verilir. 2.parametre olarakta tanımlanan karakter verilir.
lcd_clear_screen à Ekranı temizler.
lcd_cursor_position(satır,sutun) à imleci verilen satır ve sutuna alır.
lcd_write_char(karakter) à Lcd ye karakter verir.
lcd à Alt programlarda pseudo tipinde tanımlanan değişkenlerde kullanılır. Örneğin print fontsiyonlarında aygıt olarak lcd verildiğinde print edilen yazılar lcd ekrana iletilmiş olacaktır.
lcd_home() à imleci 0,0 konumuna alır.
lcd_clear_line(satır) à parametre olarak verilen satırı temizler.
LCD ye kelime yazdırma
Lcd ye harf veya rakam yazdırmak için lcd = “k” şeklinde kod kullanmak yeterlidir. Fakat kelime yazdırmak için öncelikle byte tipinde dizi tanımlanır ve projemize print kütüphanesi dâhil edilir.
include print var byte Yazi1[] = "Jalv2 Buyuk Font" lcd_cursor_position(0,0) print_string(lcd,yazi1)
Yukarıdaki kod bloğunda görüldüğü gibi önce print kütüphanesi dahil ediliyor. Yazi1 adında bir dizi tanımlanıyor. İmleç 0,0 pozisyonuna alınarak print_string(lcd,yazi1) ile kelime lcd ye yazdırılıyor.
LCD ekrana özel karakter Tanımlama
Kullandığımız LCD de 8 adet özel karakter tanımlaması yapılabilmektedir. Bunun için öncelikle Herhangi bir Karakter oluşturma programını kullanarak ilgili özel karakteri tanımlıyoruz ve tanımlanan karakteri dinamik dizi olacak şekilde tanıtıp lcd_define fonksiyonu ile lcd’nin hafızasına yazdırıyoruz.
const byte K0[] = {7,15,31,31,31,31,31,31} lcd_define(0,K0) - - Kullanımı Lcd = 0
K0 adında özel karakter dizi şeklinde tanımlanıyor ve ardından tanımlanan karakter lcd_define fonksiyonu ile LCD’nin 0.adresine yükleniyor. Karakteri görmek istediğimizde lcd = ram_adresi şeklinde kod yazılması gerekmektedir. Biz 0.adrese yüklediğimiz için lcd = 0 demek yeterlidir.
Büyük Font Tanımlama ve Kullanma
LCD ekranımızda büyük Font tanımlayıp kullanmak için öncelikle aşağıdaki şekilde karakter tanımlamaları yapmamız gerekmektedir.
Tanımlanan Bu karakterleri uygun şekilde birleştirerek rakam,harf ve noktalama işaretlerini oluşturabiliriz. Tabiki öncelikle bu karakterleri birleştiren ve uygun satır ve sütunlara aktararak karakterleri oluşturan alt programı yazmamız gerekmektedir.
K0…K7 adını verdiğimiz karakter parçalarını LCD ekranımızın RAM hafızasına tek tek yazdırıyoruz.
-- ------------------------------------------------------------------------ -- Özel kullanılacak Karakterleri parçalarını Tanımlama -- ------------------------------------------------------------------------ const byte K0[] = {7,15,31,31,31,31,31,31} const byte K1[] = {28,30,31,31,31,31,31,31} const byte K2[] = {31,31,31,31,31,31,30,28} const byte K3[] = {31,31,31,31,31,31,15,7} const byte K4[] = {31,31,31,0,0,0,0,0} const byte K5[] = {0,0,0,0,0,31,31,31} const byte K6[] = {31,31,31,0,0,0,31,31} const byte K7[] = {31,31,31,31,31,31,31,31} -- ------------------------------------------------------------------------ -- Karakter Parçaları LCD'nin RAM hafızasına yükleniyor. -- ------------------------------------------------------------------------ lcd_define(0,K0) lcd_define(1,K1) lcd_define(2,K2) lcd_define(3,K3) lcd_define(4,K4) lcd_define(5,K5) lcd_define(6,K6) lcd_define(7,K7)
Tanımladığımız karakter parçalarını uygun şekilde birleştiren alt programı yazmamız gerekmektedir. Böylece yazdığımız alt program LCD ekranda karakterleri oluşturacaktır. Uygulamamızda sadece rakamları oluşturulmuştur. İsteğe göre harflerde oluşturulabilir.
-- ----------------------------------------------------------------------------- -- Rakamları Oluşturmak için Gerekli Alt Program -- -- Line : Yazının Hangi Satırdan Başlaması gerektiği -- pos : Yazının Hangi Sutundan Başlayacağı -- rakam: Yazdırılması istenen Numara -- -- yazan : Sercan TEK -- ----------------------------------------------------------------------------- Procedure Number_Font(byte in line,byte in pos,byte in karakter) is pos = pos * 4 -- Karakter Sirası = 0,1,2,3 case karakter of 0 : block lcd_cursor_position(line,pos) lcd = 0 lcd = 4 lcd = 1 lcd_cursor_position(line+1,pos) lcd = 3 lcd = 5 lcd = 2 end block 1: block lcd_cursor_position(line,pos) lcd = 4 lcd = 1 lcd_cursor_position(line+1,pos) lcd = 5 lcd = 7 lcd = 5 end block 2: block lcd_cursor_position(line,pos) lcd = 6 lcd = 6 lcd = 1 lcd_cursor_position(line+1,pos) lcd = 3 lcd = 5 lcd = 5 end block 3: block lcd_cursor_position(line,pos) lcd = 6 lcd = 6 lcd = 1 lcd_cursor_position(line+1,pos) lcd = 5 lcd = 5 lcd = 2 end block 4: block lcd_cursor_position(line,pos) lcd = 3 lcd = 5 lcd = 7 lcd_cursor_position(line+1,pos+2) lcd = 7 end block 5: block lcd_cursor_position(line,pos) lcd = 3 lcd = 6 lcd = 6 lcd_cursor_position(line+1,pos) lcd = 5 lcd = 5 lcd = 2 end block 6: block lcd_cursor_position(line,pos) lcd = 0 lcd = 6 lcd = 6 lcd_cursor_position(line+1,pos) lcd = 3 lcd = 5 lcd = 2 end block 7: block lcd_cursor_position(line,pos) lcd = 4 lcd = 4 lcd = 1 lcd_cursor_position(line+1,pos+2) lcd = 7 end block 8: block lcd_cursor_position(line,pos) lcd = 0 lcd = 6 lcd = 1 lcd_cursor_position(line+1,pos) lcd = 3 lcd = 5 lcd = 2 end block 9: block lcd_cursor_position(line,pos) lcd = 0 lcd = 6 lcd = 1 lcd_cursor_position(line+1,pos+2)lcd = 7 end block end case end procedure
Yazdığımız alt programı kullanabilmek için bazı parametreler verilmelidir. Örnek kullanım aşağıdaki gibidir. Number_font(satır,sutun,rakam)
number_font(0,1,6)
Yukarıdaki örnek kodumuzda 0 satır 1 sutuna 6 rakamını yazmaktadır.
Aşağıda büyük font ve normal font kullanımı ile ilgili demo program hazırladım bu sayede kullanımını daha rahat algılayabilir ve uygulamalarınızda kullanabilirsiniz.
Projeye ait kaynak jalv2 kodları ve proteus simülasyon dosyası;
Şifre-Pass: 320volt.com
Yayım tarihi: 2013/08/14 Etiketler: jal big font, jal lcd örnek, jalv2, jalv2 lcd, microchip pic projeleri, PIC16F628 örnekleri
Tebrik ederim güzel çalışma olmuş. Özel devrelerde kullanilabilir.