İnsan dünyası ile makine dünyası arasında iyi bir iletişim kurmak için ekran üniteleri önemli bir rol oynar. Ve böylece gömülü sistemlerin önemli bir parçasıdırlar. Ekran birimleri - büyük veya küçük, aynı temel prensipte çalışır. Grafik ekranlar ve 3D görüntüler gibi karmaşık ekran birimlerinin yanı sıra, 16x1 ve 16x2 birimler gibi basit ekranlarla çalışmayı bilmek gerekir. 16x1 görüntüleme birimi 16 karaktere sahip olacak ve tek satırdadır. 16x2 LCD 32 toplam 16in 1 karakterleri olacak st hattı ve 2 başka 16 ndhat. Burada, her karakterde 5x10 = 50 piksel olduğu anlaşılmalıdır, bu nedenle bir karakteri görüntülemek için 50 pikselin hepsinin birlikte çalışması gerekir. Ancak bunun için endişelenmemize gerek yok çünkü ekran biriminde pikselleri kontrol etme işini yapan başka bir kontrolör (HD44780) var. (LCD biriminde görebilirsiniz, arkadaki siyah gözdür).
Gerekli Bileşenler
Donanım:
ATmega32 mikrodenetleyici
Güç kaynağı (5v)
AVR-ISP Programcısı
JHD_162ALCD (16x2 LCD)
100 uF kapasitör.
Yazılım:
Atmel stüdyo 6.1
Progisp veya flaş büyü
Devre Şeması ve Açıklama
ATmega32 devresi ile arayüz oluşturan LCD'de gösterildiği gibi, ATMEGA32'nin PORTA'sının LCD veri portuna bağlı olduğunu görebilirsiniz. Burada, eğer biri PORTC'yi normal bir iletişim portu olarak kullanmak istiyorsa, sigorta baytlarını değiştirerek ATMEGA'nın PORTC'sindeki JTAG iletişimini devre dışı bırakmayı unutmamalıdır. 16x2 LCD'de toplamda 16 pin, arka ışık varsa arka ışık yoksa 14 pin vardır. Arka ışık pimlerine güç verebilir veya bırakabilirsiniz. Şimdi 14 pimde 8 veri pini (7-14 veya D0-D7), 2 güç kaynağı pini (1 ve 2 veya VSS ve VDD veya gnd ve + 5v), kontrast kontrolü için 3. pin (VEE-karakterlerin ne kadar kalın olması gerektiğini kontrol eder) gösterilen), 3 kontrol pini (RS & RW & E)
Yukarıdaki devrede 16x2 LCD ile AVR mikrodenetleyicisi ile arayüz oluştururken, sadece iki adet kontrol pini aldığımı gözlemleyebilirsiniz. Bu, daha iyi anlama esnekliği sağlar. Kontrast biti ve READ / WRITE sık kullanılmadığından toprağa kısa devre yapılabilir. Bu, LCD'yi en yüksek kontrast ve okuma moduna getirir. Karakterleri ve verileri buna göre göndermek için sadece ENABLE ve RS pinlerini kontrol etmemiz gerekiyor.
ATmega32 mikrodenetleyici ile 16x2 LCD arasındaki bağlantılar aşağıda verilmiştir:
PIN1 veya VSS - toprak
PIN2 veya VDD veya VCC - + 5v güç
PIN3 veya VEE - zemin (yeni başlayanlar için en iyi maksimum kontrastı verir)
PIN4 veya RS (Kayıt Seçimi) - mikro denetleyicinin PD6'sı
PIN5 veya RW (Okuma / Yazma) - zemin (LCD'yi okuma moduna getirir, kullanıcı için iletişimi kolaylaştırır)
PIN6 veya E (Etkinleştir) - mikro denetleyicinin PD5'i
Mikrodenetleyicinin PIN7 veya D0 - PA0'ı
PIN8 veya D1 - PA1
PIN9 veya D2 - PA2
PIN10 veya D3 - PA3
PIN11 veya D4 - PA4
PIN12 veya D5 - PA5
PIN13 veya D6 - PA6
PIN14 veya D7 - PA7
Devrede 8 bit iletişim (D0-D7) kullandığımızı görebilirsiniz ancak bu zorunlu değildir ve 4 bit iletişim (D4-D7) de kullanabiliriz ancak 4 bit iletişim programı yeni başlayanlar için biraz karmaşık hale gelir, bu yüzden sadece gittik 8 bit iletişim.
Bu nedenle, yukarıdaki tablodan sadece gözlemden, 10 pini LCD'yi 8 pinin veri pini ve kontrol için 2 pini olan denetleyiciye bağlıyoruz.
Çalışma
Şimdi başlamak için 16x2 LCD'nin 10 iğnesinin (8 veri pini + 2 kontrol pini) işlevlerini bilmeniz gerekir. 8 veri pini, LCD'ye veri veya komut göndermek içindir. İki kontrol piminde:
1. RS (Kayıt seçimi) pini, LCD'ye veri mi yoksa komut mu göndereceğimizi söylemektir.
Örneğin:
Yukarıdaki tabloda "0b0010 1000 veya 0x28" Veri portu (D7-D0) değeri LCD'ye "(" simgesini göstermesini söyler. Tablo iki'de aynı 0x28 değeri LCD'ye "5x7 noktalı bir LCD olduğunuzu ve tek gibi davranın ”, yani aynı değer için kullanıcı iki şey tanımlayabilir, şimdi bu durum Kayıt Seçim pini ile etkisiz hale getirilir, RS pini düşük ayarlanmışsa LCD komut gönderdiğimizi anlar. RS pinini yükseğe ayarlarsak o zaman LCD, verileri gönderdiğimizi anlar ve bu nedenle her iki durumda da LCD, RS pin değerine göre veri portu değerine saygı duyar.
2. E (Etkinleştir) pini, basitçe "bir PC'nin güç gösterge LED'ini" anlatmak içindir, bu pin, LCD'ye "denetleyicinin veri bağlantı noktasından veri almasını" bildirmek için yüksek olarak ayarlanmıştır. Bu pin yükseldikten sonra azaldığında, LCD alınan verileri işler ve ilgili sonucu gösterir. Yani bu pin veri gönderilmeden önce yükseğe ayarlanır ve veri gönderildikten sonra yere çekilir.
Şimdi donanımı bağladıktan sonra, Atmel stüdyosunu başlatın ve programı yazmak için yeni bir proje başlatın, şimdi programlama ekranını açın ve programı sıkmaya başlayın. Program aşağıdaki şekilde izlenmelidir.
Önce denetleyiciye LCD'nin verileri ve kontrolü için hangi bağlantı noktalarını kullandığımızı söyleriz. Ardından, RS ve E pinleriyle oynayarak denetleyiciye ne zaman veri veya komut göndereceğini söyleyin.
Programda kullanılan kavramların kısa açıklaması:
1. E yüksek (LCD'ye veri almasını söyler) ve RS düşük ayarlanmış (LCD'ye komut verdiğimizi söyler)
2. Ekranı temizlemek için bir komut olarak veri portuna 0x01 değeri verilmesi
3. E yüksek olarak ayarlanır (LCD'ye veri almasını söyler) ve RS yüksek olarak ayarlanır (LCD'ye veri verdiğimizi söyler)
4. Bir dizedeki her karakteri tek tek gönderen bir dizi karakter almak.
5. E düşük ayarlanmış (LCD'ye veri göndermeyi bitirdiğimizi söylüyor)
6. Son komuttan sonra, LCD iletişimi sonlandırır ve verileri işler ve ekranda karakter dizisini görüntüler.
Bu senaryoda karakterleri birbiri ardına göndereceğiz. Karakterler LCD'ye ASCII kodları (Bilgi Değişimi için Amerikan standart Kodu) ile verilir.
ASCII kodlarının tablosu yukarıda gösterilmiştir. Burada LCD'nin "@" karakterini göstermesi için onaltılık bir kod "64" göndermemiz gerekir. LCD'ye '0x62' gönderirsek, '>' sembolünü gösterecektir. Bunun gibi, bir adı görüntülemek için uygun kodları LCD'ye göndereceğiz.
LCD ve ATmega32 AVR mikrodenetleyici arasındaki iletişim yolu en iyi aşağıda C kodu adım adım açıklanmaktadır.