This file includes new procedures and functions in Turkish. All
functions are experienced realtime in succes.
Please look at this file, if you think this is good, please put in
jallib.
--
--------------------------------------------------------------------
-- HD44780 LCD KÜTÜPHANESİ
--
--
--------------------------------------------------------------------
--
; --------------------------------------------------------------------
-- Kütüphanedeki PROCEDURE ve Fonksiyonlar
; --------------------------------------------------------------------
-- Not: BYTE IN: Fonksiyona gelen ; BYTE OUT: Fonksiyondan giden
-- PROCEDURE _hd44780_4_init IS
;LCD yi işlem için hazırlar
-- PROCEDURE HD44780_IO( BYTE IN value ) IS
;LCD giriş çıkış işlemleri için kullanılır
-- PROCEDURE LCD_Komut( BYTE IN value ) IS --LCd command
; LCD komut göndermede kullanılır
-- PROCEDURE LCD_Yazi(BYTE IN val[]) IS --LCD string write
; Ekrana yazı yazar
-- PROCEDURE LCD_Karakter'put( BYTE IN value ) IS --LCd character
put
-- PROCEDURE LCD_Sil IS
;LCD ekranını siler
-- PROCEDURE LCD_Satir_Sil( BYTE IN Satir) IS --LCd line clear
;LCD de istenen satırı siler
-- PROCEDURE LCD_Satir( BYTE IN satir ) IS --lcd line
;İstenen LCD satırına gitmayi sağlar
-- PROCEDURE LCD_Konum( BYTE IN satir, BYTE IN yer ) IS --LCd coord
(line,column)
;LCD de satrı sütun olarak konumlanmayı sağlar
-- PROCEDURE LCD_Saat_Dakika(BYTE IN HH, BYTE IN MM) IS --LCd
hour:minute
;Saat ve dakika bilgisi için LCD de formatlı yazı yazar
-- PROCEDURE LCD_Saat_Dakika_Saniye(BYTE IN HH, BYTE IN MM, BYTE IN
SS) IS --LCd hour:minute:second
;Saat ve dakika ve saniye bilgisi için LCD de FORmatlı yazı yazar
-- PROCEDURE LCD_Gun_Ay_Yil(BYTE IN GG, BYTE IN AA, BYTE IN YY) IS --
LCd day:mounth:year
;Gün Ay Yıl bilgisi için LCD de FORmatlı yazı yazar (12.02.08 gibi)
-- PROCEDURE LCD_Gun_Ay_Yil2000(BYTE IN GG, BYTE IN AA, BYTE IN YY)
IS --LCd day:mounth:200year
;Gün Ay Yıl bilgisi için LCD de FORmatlı yazı yazar (12.02.2008
gibi)
-- PROCEDURE LCD_Ozel_karakter(BYTE IN x,BYTE IN val[]) IS --LCd
special character
;Özel karakter tanımlayıp kullanmayı sağlar
-- PROCEDURE LCD_Byte_Desimal(BYTE IN x,BYTE IN virgul) IS
;LCD ekranına Byte (0 ile 255 arası) sayı yazmayı sağlar
-- PROCEDURE LCD_Word_Desimal(WORD IN x,BYTE IN virgul) IS
;LCD ekranına Word (0 ile 65535 arası) sayı yazmayı sağlar
-- PROCEDURE Lcd_Hex(BYTE IN Data) IS
;LCD Ekranına Hexadesimal sayı yazmaya yarar.
; --------------------------------------------------------------------
---------------------------------------------------------------------
-- LCD Bağlantı uçları istenildiği gibi ayarlanabilir.
-- HD44780_4_DI ==> LCD R/S ucu
-- HD44780_4_E ==> LCD Enable Ucu
-- HD44780_D4 ==> LCD D4 UCU LSB
-- HD44780_D5 ==> LCD D5 UCU
-- HD44780_D6 ==> LCD D6 UCU
-- HD44780_D7 ==> LCD D7 UCU MSB
--
--------------------------------------------------------------------
--
-----------------------------------------------------------------------------
-- Örnek Kullanım
;;--*****************************************************
;;-- LCD pin ayarları. Bazı uçlar pull-up gerektirebilir(16F628 deki
A4 pini gibi)
;;--*****************************************************
;; LCD Kontrol Uçları;
;VAR volatile bit HD44780_4_DI IS pin_d0 ;LCD R/S ucu
;VAR volatile bit HD44780_4_E IS pin_d1 ;LCD Enable Ucu
;; LCD Kontol Uç Yönleri
;VAR volatile bit HD44780_4_DI_dir IS pin_d0_YON
;VAR volatile bit HD44780_4_E_dir IS pin_d1_YON
;;; LCD Veri Uçları
;VAR volatile bit HD44780_D4 IS pin_d2 ;LCD D4 UCU LSB
;VAR volatile bit HD44780_D5 IS pin_d3 ;LCD D5 UCU
;VAR volatile bit HD44780_D6 IS pin_d4 ;LCD D6 UCU
;VAR volatile bit HD44780_D7 IS pin_d5 ;LCD D7 UCU MSB
;;; LCD Veri Uç Yönleri
;VAR volatile bit HD44780_D4_dir IS pin_d2_YON
;VAR volatile bit HD44780_D5_dir IS pin_d3_YON
;VAR volatile bit HD44780_D6_dir IS pin_d4_YON
;VAR volatile bit HD44780_D7_dir IS pin_d5_YON
-- include LCD_HD44780
-- LCD_karakter "s"
-- --
-----------------------------------------------------------------------------
const HD44780_display_sil = 0b_0000_0001
const HD44780_Basa_don = 0b_0000_0010 -- Uzun gecikme !!
const HD44780_display_ackapat = 0b_0000_1000
const HD44780_cursor_Saga_kaydir = 0b_0001_0100
const HD44780_cursor_Sola_kaydir = 0b_0001_0000
const HD44780_display_Saga_kaydir = 0b_0001_1100
const HD44780_display_Sola_kaydir = 0b_0001_1000
const HD44780_CGRAM_address = 0b_0100_0000 -- + 6 bit addres
-- 16 sütun içindir. 20 sütun için 3. ve 4. adresler 94 ve D4 den
-- başlamalı
const satir1_adres = 0b_1000_0000 -- 0x80 - 0x8F Arası
const satir2_adres = 0b_1100_0000 -- 0xC0 - 0xCF Arası
const satir3_adres = 0b_1001_0000 -- 0x90 - 0x9F Arası
const satir4_adres = 0b_1101_0000 -- 0xD0 - 0xDF Arsı
-- ---------------------------------------------------
;*****************************************************
; LCD ayarları
;*****************************************************
PROCEDURE _hd44780_4_init IS
HD44780_4_DI = low
HD44780_4_E = low
HD44780_D4_dir = CIKIS
HD44780_D5_dir = CIKIS
HD44780_D6_dir = CIKIS
HD44780_D7_dir = CIKIS
HD44780_4_DI_dir = CIKIS
HD44780_4_E_dir = CIKIS
END PROCEDURE
-- ---------------------------------------------------
--*****************************************************
-- LCD entegresi için giriş -çıkış kontrlü
--*****************************************************
PROCEDURE HD44780_IO(BYTE IN value) IS
VAR BIT bit0 at value : 0
VAR BIT bit1 at value : 1
VAR BIT bit2 at value : 2
VAR BIT bit3 at value : 3
;
HD44780_4_E = high -- enable
;
HD44780_d4 = bit0
HD44780_d5 = bit1
HD44780_d6 = bit2
HD44780_d7 = bit3
;
HD44780_4_E = low -- disable
gecikme_10uS(80)
; -- enough FOR the simple operations
END PROCEDURE
;-- ---------------------------------------------------
;*****************************************************
; LCD ye komut gönderir
;*****************************************************
PROCEDURE LCD_Komut(BYTE IN value) IS
hd44780_4_DI = low -- Komut seç
HD44780_IO(value >> 4) -- Yüksek nibble ' ı gönder
gecikme_10us(10) -- Bekleme gerekli
HD44780_IO(value) -- Alçak nibble ' ı gönder
gecikme_10us(10) -- Bekleme gerekli
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD ekranına karakter basar
;*****************************************************
PROCEDURE HD44780_Write(BYTE IN value) IS
hd44780_4_DI = high -- Veri seç
HD44780_IO(value >> 4) -- Yüksek nibble ' ı gönder
HD44780_IO(value) -- Alçak nibble ' ı gönder
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD YAZI YAZ (max 16 karakter)
;*****************************************************
PROCEDURE LCD_Yazi(BYTE IN val[]) IS
VAR BYTE y
FOR count(val) using y LOOP
hd44780_4_DI = high -- Veri seç
HD44780_IO(val[y] >> 4) -- Yüksek nibble ' ı gönder
HD44780_IO(val[y]) -- Alçak nibble ' ı gönder
END LOOP
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD KARAKTER YAZ
;*****************************************************
PROCEDURE LCD_Karakter'put(BYTE IN value) IS
hd44780_4_DI = high -- Veri seç
HD44780_IO(value >> 4) -- Yüksek nibble ' ı gönder
HD44780_IO(value) -- Alçak nibble ' ı gönder
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; KURSÖRÜ LCD 1. SATIRA GETİRİR
;*****************************************************
PROCEDURE LCD_Satir(BYTE IN satir) IS
IF (satir == 1) THEN LCD_komut(satir1_adres)
ELSIF (satir == 2) THEN LCD_komut(satir2_adres)
ELSIF (satir == 3) THEN LCD_komut(satir3_adres)
ELSIF (satir == 4) THEN LCD_komut(satir4_adres)
END IF
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD KURSOR KONUMUNU BELİRLER
;*****************************************************
PROCEDURE LCD_Konum(BYTE IN satir, BYTE IN yer) IS
IF (satir == 1) THEN LCD_komut(satir1_adres + yer)
ELSIF (satir == 2) THEN LCD_komut(satir2_adres + yer)
ELSIF (satir == 3) THEN LCD_komut(satir3_adres + yer)
ELSIF (satir == 4) THEN LCD_komut(satir4_adres + yer)
END IF
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD EKRANINI SİLER
;*****************************************************
PROCEDURE LCD_Sil IS
LCD_komut(HD44780_display_ackapat) -- Display 'ı kapat
LCD_komut(HD44780_display_sil) -- Display 'i sil
gecikme_10us(10)
LCD_komut(HD44780_Basa_don) -- Kursör en başa (Home)
gecikme_10us(10)
LCD_komut(0b_0000_0110) -- Giriş , otomatik arttırma , kaydırma yok
LCD_komut(0b_0000_1100) -- Display açık , kursör kapalı , cursör
yanıp sönme kapalı
gecikme_10us(10)
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD EKRANINDA İSTENEN SATIRI SİLER
;*****************************************************
PROCEDURE LCD_Satir_Sil( BYTE IN Satir) IS
LCD_Satir(Satir)
FOR 16 LOOP
LCD_Karakter=" "
END LOOP
LCD_Satir(Satir)
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD_Saat_Dakika( saat, dakika)
; LCD EKRANINA SAAT VE DAKİKAYI YAZAR.
;*****************************************************
PROCEDURE LCD_Saat_Dakika(BYTE IN HH, BYTE IN MM) IS
VAR BYTE D10
D10 = HH / 10
HH = HH % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + HH
LCD_karakter = ":"
D10 = MM / 10
MM = MM % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + MM
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD_Saat_Dakika_Saniye( saat, dakika, saniye)
; LCD EKRANINA SAAT , DAKİKA VE SANİYEYİ YAZAR.
;*****************************************************
PROCEDURE LCD_Saat_Dakika_Saniye(BYTE IN HH, BYTE IN MM, BYTE IN SS)
IS
VAR BYTE D10
D10 = HH / 10
HH = HH % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + HH
LCD_karakter = ":"
D10 = MM / 10
MM = MM % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + MM
LCD_karakter = ":"
D10 = SS / 10
SS = SS % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + SS
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD_Gun_Ay_Yil(gun, ay, yil) ;Yil son iki hanesi 08 gibi
; LCD EKRANINA TARİHİ YAZAR. ornek: 01/01/08
;*****************************************************
PROCEDURE LCD_Gun_Ay_Yil(BYTE IN GG, BYTE IN AA, BYTE IN YY) IS
VAR BYTE D10
D10 = GG / 10
GG = GG % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + GG
LCD_karakter = "/"
D10 = AA / 10
AA = AA % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + AA
LCD_karakter = "/"
D10 = YY / 10
YY = YY % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + YY
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD_Gun_Ay_Yil2000(gun, ay, yil) ;Yil son iki hanesi 2008 gibi
; LCD EKRANINA TARİHİ YAZAR.
;*****************************************************
PROCEDURE LCD_Gun_Ay_Yil2000(BYTE IN GG, BYTE IN AA, BYTE IN YY) IS
VAR BYTE D10
D10 = GG / 10
GG = GG % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + GG
LCD_karakter = "."
D10 = AA / 10
AA = AA % 10
LCD_karakter = "0" + D10
LCD_karakter = "0" + AA
LCD_karakter = "."
D10 = YY / 10
YY = YY % 10
LCD_karakter = "2"
LCD_karakter = "0"
LCD_karakter = "0" + D10
LCD_karakter = "0" + YY
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD EKRANINA TANIMLANAN KARAKTERİ ÇİZER.
;*****************************************************
PROCEDURE LCD_Ozel_Karakter(BYTE IN x,BYTE IN val[]) IS
VAR BYTE y
LCD_komut(0x40 | (x << 3 ))
FOR count(val) using y LOOP
hd44780_4_DI = high -- Veri seç
HD44780_IO(val[y] >> 4) -- Yüksek nibble ' ı gönder
HD44780_IO(val[y]) -- Alçak nibble ' ı gönder
END LOOP
END PROCEDURE
-- ---------------------------------------------------
;*****************************************************
; LCD EKRANINA BYTE (0-255 ARASI) Numara Yazar
;*****************************************************
PROCEDURE LCD_BYTE_DESIMAL(BYTE IN x,BYTE IN virgul) IS
VAR BYTE yuzluk, onluk,birlik
yuzluk=(x%1000)/100
IF(yuzluk>0) THEN LCD_Karakter="0"+yuzluk END IF
IF(virgul==2) THEN LCD_Karakter="," END IF
onluk= (x%100)/10
IF(onluk>0) THEN LCD_Karakter="0"+onluk END IF
IF(virgul==1) THEN LCD_Karakter="," END IF
birlik= x%10
LCD_Karakter="0"+birlik
END PROCEDURE
;*****************************************************
; LCD EKRANINA WORD (0-65535 ARASI) Numara Yazar
;*****************************************************
PROCEDURE LCD_WORD_DESIMAL(WORD IN x,BYTE IN virgul) IS
VAR BYTE onbin, binlik, yuzluk, onluk,birlik
onbin=x/10000
IF(onbin>0) THEN LCD_Karakter="0"+onbin END IF
IF(virgul==4) THEN LCD_Karakter="," END IF
binlik=(x%10000)/1000
IF(binlik==0) THEN LCD_Karakter="0"
ELSIF(binlik>0) THEN LCD_Karakter="0"+binlik END IF
IF(virgul==3) THEN LCD_Karakter="," END IF
yuzluk=(x%1000)/100
IF(yuzluk==0) THEN LCD_Karakter="0"
ELSIF(yuzluk>0) THEN LCD_Karakter="0"+yuzluk END IF
IF(virgul==2) THEN LCD_Karakter="," END IF
onluk= (x%100)/10
IF(onluk==0) THEN LCD_Karakter="0"
ELSIF(onluk>0) THEN LCD_Karakter="0"+onluk END IF
IF(virgul==1) THEN LCD_Karakter="," END IF
birlik= x%10
IF(onluk==0) THEN LCD_Karakter="0"
ELSE LCD_Karakter="0"+birlik END IF
END PROCEDURE
------------------------------------------------------
;*****************************************************
; LCD EKRANINA HEX KARAKTER Yazar
;*****************************************************
PROCEDURE Lcd_Hex(BYTE IN Data) IS
FOR 2 LOOP
LCD_Karakter = (Data & 0xF0) >> 4
Data = Data << 4
END LOOP
END PROCEDURE
------------------------------------------------------
;*****************************************************
; LCD BAŞLANGIÇ AYARLARI
;*****************************************************
_hd44780_4_init -- IO pinlerini hazırlar
gecikme_100ms(1) -- HD44780 'nin açılmasına zaman tanır
hd44780_4_DI = low -- Komutları seçer
HD44780_IO(0b_0011) -- Senkronizasyon 1
gecikme_10us(50) -- fazladan bekleme
HD44780_IO(0b_0011) -- Ve bir tane daha
gecikme_10us(10) -- Fazladan bekleme
HD44780_IO(0b_0011) -- Son olarak bir tane daha
gecikme_10us(10) -- Fazladan bekleme
LCD_komut(0b_0011_0010) -- Çalışacak duruma geldi
LCD_komut(0b_0010_1000) -- İki satır, 5x7 (Yüksek değerlikli dört
bit)
-- ---------------------------------------------------
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en
-~----------~----~----~----~------~----~------~--~---