- 16x2 Dot Matrix LCD Denetleyici IC HD44780:
- 16x2 LCD'de Özel Karakter Görüntüleme:
- Programlama ve Çalışma Açıklaması:
- Devre Bağlantıları ve Test:
Önceki eğitimimizde, 16 * 2 LCD ile PIC Mikrodenetleyicinin Nasıl Arayüze Edileceğini öğrendik. PIC mikrodenetleyicide acemi iseniz, daha ileri gitmeden önce gözden geçirmenizi öneririz. Daha önce, PIC Mikrodenetleyicide LED yanıp sönen Program ve Zamanlayıcıları kullanarak PIC'in temellerini de öğrenmiştik. MPLABX ve XC8 derleyicisini kullanarak PIC Mikrodenetleyicilerini Öğrenme hakkındaki tüm öğreticileri buradan kontrol edebilirsiniz.
Bu eğitimde, kendi özel karakterlerimizi oluşturarak ve bunları PIC16F877A PIC Mikrodenetleyiciyi kullanarak LCD ekranımızda görüntüleyerek daha ilginç hale getirelim. Ayrıca, HD44780A IC'nin kendisi tarafından verilen önceden tanımlanmış, çoğunlukla kullanılan bazı özel karakterler vardır, bunları nasıl kullanabileceğimizi de göreceğiz. Önceki eğitimimizde açıklandığı gibi, LCD ekranımızda karakterleri görüntülememize yardımcı olan bir Hitachi HD44780 denetleyici bulunur. Gösterdiğimiz her karakter, HD44780 IC'nin ROM'unda önceden tanımlanmıştır. LCD'de karakteri görüntülemeden önce, LCD denetleyici IC HD44780 hakkında bilgi edineceğiz.
16x2 Dot Matrix LCD Denetleyici IC HD44780:
Özel bir karakteri görüntülemek için, IC'ye özel karakterin nasıl görüneceğini bir şekilde söylemeliyiz. Bunu yapmak için HD44780 LCD denetleyici IC'de bulunan Üç tür Anı hakkında bilgi sahibi olmalıyız:
Karakter Üreteci ROM'u (CGROM): Daha önce de belirtildiği gibi, içinde önceden tanımlanmış karakterlerin tüm kalıplarını içeren salt okunur bellektir. Bu ROM, her Arabirim IC türünden farklılık gösterecektir ve bazılarının yanlarında önceden tanımlanmış bazı özel karakterler olabilir.
Display Data RAM (DDRAM): Bu bir rasgele erişimli hafızadır. Bir karakteri her görüntülediğimizde, deseni CGROM'dan alınacak ve DDRAM'a aktarılacak ve ardından ekrana yerleştirilecektir. Basitçe söylemek gerekirse, DDRAM şu anda LCD Ekranda görüntülenen tüm karakterlerin desenlerine sahip olacaktır. Bu şekilde her döngü için IC'nin CGROM'dan veri almasına gerek yoktur ve kısa bir güncelleme sıklığı elde etmeye yardımcı olur.
Karakter üreteci RAM (CGRAM): Bu aynı zamanda bir Rastgele erişim hafızasıdır, bu nedenle ondan veri yazabilir ve okuyabiliriz. Adından da anlaşılacağı gibi bu bellek, özel karakteri oluşturmak için kullanılabilecek bellek olacaktır. Karakter için bir kalıp oluşturmalı ve CGRAM'a yazmalıyız, bu kalıp gerektiğinde ekranda okunabilir ve ekranda görüntülenebilir.
Şimdi, HD44780 arayüz IC'sinde bulunan Bellek türleri hakkında temel bir anlayışa sahip olduğumuzdan beri. Biraz daha anlamak için veri sayfasına bir göz atalım.
Veri sayfasından da anlaşılacağı gibi, HD44780 IC, özel kalıplarımızı CGRAM'da saklamak için 8 Konum olarak sağladı, ayrıca sağda LCD Ekranımızda da görüntülenebilecek bazı önceden tanımlanmış karakterler olduğunu görebiliriz. Nasıl yapabileceğimize bir bakalım.
16x2 LCD'de Özel Karakter Görüntüleme:
Özel bir karakteri görüntülemek için önce onun için bir kalıp oluşturmalı ve sonra onu CGRAM'a kaydetmeliyiz. Halihazırda kütüphane işlevlerine sahip olduğumuz için, bunu bazı basit komutlarla yapmak kolay olacaktır. İşte LCD işlevleri için Kitaplık, ancak burada tüm Kitaplık işlevlerini programın kendisine kopyalayıp yapıştırdık, bu nedenle bu başlık dosyasını programımıza eklemeye gerek yok. Ayrıca Temel LCD çalışması ve Pinout'ları için bu makaleye bakın.
İlk adım, bir desen veya özel karakter oluşturmaktır. Bildiğimiz gibi her karakter 5 * 8 noktanın birleşimidir. Hangi noktanın (pikselin) yükseğe çıkması ve hangisinin düşük kalması gerektiğini seçmeliyiz. Aşağıdaki gibi bir kutu çizin ve karakterinize göre bölgeleri gölgeleyin. Buradaki karakterim bir çubuk adam (umarım öyle görünür). Gölgelendikten sonra, her baytın eşdeğer ikili değerini aşağıda gösterildiği gibi yazın.
Her bayt için gölgeli bölgeye bir '1' ve gölgesiz bölgeye bir '0' koyun ve işte bu bizim özel modelimiz hazır. Benzer şekilde, 8 bellek alanımız için 8 özel desen kodu yaptım ve ona CGROM'u sundum. Aşağıdaki tabloda listelenmiştir.
S.NO: |
Özel Karakter |
Desen Kodu |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Not: CGRAM'da sağlanan 8 boşluğun tamamını yüklemek zorunlu değildir.
Programlama ve Çalışma Açıklaması:
Artık desen kodlarımız hazır, onları sadece LCD'nin CGRAM'ına yüklememiz ve PIC mikro denetleyiciyi kullanarak görüntülememiz gerekiyor. Bunları CGRAM'a yüklemek için 5 * 8 eleman dizisi oluşturabilir ve her baytı bir ' for döngüsü ' kullanarak yükleyebiliriz. Desen kodu dizisi aşağıda gösterilmiştir:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // CGRAM bellek alanı kodu 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000 CGRAM bellek alanı 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // CGRAM bellek alanı kodu 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11 Code111,0b00000, // boşluk 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // CGRAM bellek alanı kodu 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // CGRAM bellek alanı kodu 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // CGRAM bellek alanı kodu 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // CGRAM bellek alanı kodu 8};
Her hafıza alanı, saygı duyulan karakter modeliyle yüklenir. Bu modeli HD44780 IC'ye yüklemek için, HD44780'in veri sayfasına başvurulmalıdır, ancak CGRAM'ın adresini ayarlamak için kullanılabilen yalnızca komut satırlarıdır.
// *** CGROM'a özel karakter yükleyin *** ////// Lcd_Cmd (0x04); // CGRAM Adresini Ayarlayın Lcd_Cmd (0x00); //.. için CGRAM Adresini ayarlayın (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Ana Sayfaya Dön Lcd_Cmd (2); //.. Ana Sayfaya dön // *** Özel karakter yükleme tamamlandı *** //////
Burada, ' for döngüsü' içinde her ikili değer CGROM'a yüklenir. Desen yüklendikten sonra, özel karakterler, aşağıda gösterildiği gibi void Lcd_Print_Char (karakter verisi) işlevi kullanılarak basitçe modelin konumunu çağırarak gösterilebilir.
Lcd_Print_Char (0); // Özel Karakteri Görüntüle 0 Lcd_Print_Char (1); // Özel Karakter 1'i Görüntüle Lcd_Print_Char (2); // Özel Karakter 2'yi Görüntüle Lcd_Print_Char (3); // Özel Karakter 3'ü Görüntüle Lcd_Print_Char (4); // Özel Karakter 4'ü Görüntüle Lcd_Print_Char (5); // Özel Karakter 5'i Görüntüle Lcd_Print_Char (6); // Özel Karakter 6 Görüntüle Lcd_Print_Char (7); // Özel Karakter 7 Görüntüle
Önceden Tanımlanmış Özel Karakteri Yazdır:
HD44780 IC, DDROM'da saklanan önceden tanımlanmış bazı özel karakterlere sahiptir. Bu karakterler, veri sayfasındaki ikili değerine bakılarak doğrudan ekrana yazdırılabilir.
Örneğin: "ALPHA" karakterinin ikili değeri 0b11100000'dir. Bunun nasıl elde edileceği aşağıdaki şekilden anlaşılabilir, benzer şekilde IC'de önceden tanımlanmış herhangi bir özel karakter için değer elde edebilirsiniz.
İkili değer bilindikten sonra, karşılık gelen karakter, aşağıda gösterildiği gibi basitçe void Lcd_Print_Char (karakter verileri) işlevi kullanılarak ekrana yazdırılabilir, Lcd_Print_Char (0b11100000); // veri sayfasından alfa ikili değeri
Tam kod bu projenin de detay kontrol Kod bölümünde aşağıda verilmiştir video bu eğiticinin sonundaki açıklama.
Devre Bağlantıları ve Test:
Bu projenin herhangi bir ek donanım gereksinimi yoktur, biz sadece önceki LCD arayüz eğitimindeki aynı bağlantıları kullandık ve LED yanıp sönme Eğitiminde oluşturduğumuz aynı kartı kullandık. Her zaman olduğu gibi, çıktımızı doğrulamak için Proteus kullanarak programı simüle edelim.
Simülasyonu beklendiği gibi çalıştırdıktan sonra, kodu doğrudan Donanım kurulumumuza yazalım. Programın çıktısı şu şekilde olmalıdır:
MPLABX ve XC8 derleyicili PIC Mikrodenetleyiciyi kullanarak 16x2 LCD'de herhangi bir Özel Karakteri bu şekilde görüntüleyebilirsiniz. Ayrıca PIC Mikroişlemci Öğrenme Serimizin tamamını buradan kontrol edin.