- 16x2 Alfanümerik LCD Ekran
- MSP430 için 16x2 LCD CCS Kitaplığı
- MSP430'da 16x2 LCD Ekran için LCD Fonksiyonları
- MSP430 ile Arayüz LCD'sine Devre Şeması
- LCD Ekran için Code Composer Studio kullanarak MSP430'u programlama
Bu makale, Code Composer Studio kullanarak MSP430'u programlama konusundaki eğitim serimizin devamıdır. Son eğitim, GPIO pinleri kullanılarak MSP430 üzerindeki harici kesintilere dayanıyordu. Bu eğitim, 16 * 2 LCD Ekranı görüntülemek söz konusu olduğunda , MSP430 ile bir ekranı arayüzleme ile ilgilidir , bu, herhangi bir elektronik hobisi için ilk tercihtir. Daha önce Arduino IDE kullanarak MSP430 ile LCD arayüzünü de kurmuştuk, bu eğitimde Arduino IDE kullanmak yerine yerel Code Composer stüdyo platformunu kullanacağız, bu şekilde tasarımcı olarak daha fazla esneklik elde ederiz.
16x2 LCD ekran ve diğer mikrodenetleyicilerle kullanımı hakkında daha fazla bilgi edinmek için lütfen aşağıdaki eğitimlere bakın.
- LCD ile ATmega16 arasında arayüz oluşturma
- Raspberry Pi ile LCD arabirimi
- PIC Mikrodenetleyici ile LCD arabirimi
- ARM7-LPC2148 ile LCD arabirim
- LCD ile NodeMCU arasında arayüz oluşturma
- STM32 ile LCD arabirimi
- LCD'yi MSP430G2 ile arayüzleme
- LCD ile STM8 arasında arayüz oluşturma
Kendisine iletilen komutu ve verileri saklayabilen yerleşik bir IC hd44780'e sahiptir. LCD Modülün yaklaşık 16 pimi vardır. 8 tanesi data pin, 4 tanesi backlight LED ve tüm LCD modülü için besleme pinleri, 3 tanesi operasyonu kontrol etmek için, 1 pin ise kontrast ayarı için. Eğitim, Dennis Eichmann tarafından oluşturulan kitaplığa dayanmaktadır. Farklı veri türlerini yazdırmak için ayrı işlevlere sahip bir kitaplık kullanmak çok kolaydır. Ayrıca verileri baştaki, boş bırakılan ve silinen sıfırlarla farklı biçimlerde görüntülemek için hükümler vardır. Oldukça geniş ve kapsamlı bir kitaplıktır ve farklı bağlantılara göre yapılandırılabilir. Burada, başlık dosyası, veri iletişimi için 8 pimli bir paralel yapılandırmayı barındıracak şekilde değiştirilir.
16x2 Alfanümerik LCD Ekran
Genel bir 16x2 Ekran, kendisine iletilen komutu ve verileri depolayabilen dahili bir hd44780 IC'ye (aşağıda kırmızı daire içine alınmış ) sahiptir. LCD Modülün yaklaşık 16 pimi vardır. 8 tanesi data pin, 4 tanesi backlight LED ve tüm LCD modülü için besleme pinleri, 3 tanesi operasyonu kontrol etmek için, 1 pin ise kontrast ayarı için.
Bu LCD modülü çok yönlü olarak gösterilmiştir ve diğer segmentli LCD'lere kıyasla minimum pin kullanır. Tüm bunların tam olarak nasıl çalıştığını merak ediyorsanız, LCD'nin nasıl çalıştığını ayrıntılı olarak tartıştığımız 16x2 LCD ekranın çalışmasını kontrol etmelisiniz.
RS Pini: RS = 1, değerleri LCD'deki veri kaydına yazmak için kullanılan LCD'deki veri kaydını etkinleştirir. RS = 0, LCD'nin Talimat kaydını etkinleştirecektir.
Pimi etkinleştir: Negatif kenar tetiklemeli; Pim YÜKSEK durumdan DÜŞÜK duruma değiştirildiğinde, LCD'den veri pinlerine yazması istenir. Pozitif kenar tetiklemeli; Pim DÜŞÜK durumdan YÜKSEK duruma değiştirildiğinde, LCD'den veri pinlerinden okuma yapması istenir.
R / W pini: R / W = 0, RS pini seçimine göre komut yazmacına veya veri kaydına yazacaktır. R / W = 1, RS pin seçimine göre IR veya DR'den okunacaktır.
RS R / W İşlemi
0 0 Dahili işlem olarak IR yazma (ekran temizle, vb.)
0 1 Meşgul işaretini (DB7) ve adres sayacını (DB0'dan DB6'ya) oku
1 0 DR dahili bir işlem olarak yazma (DR'den DDRAM'a veya CGRAM'a)
1 1 DR, dahili bir işlem olarak okunur (DDRAM veya CGRAM'dan DR'ye)
D0-D7 pinleri: Veriler, bu pinler aracılığıyla komut ve veri kayıtlarına ve bunlardan aktarılır.
Besleme pinleri: V ss, V dd pinleri LCD Modülüne güç sağlamak için kullanılır. A, K pinleri LED arka ışığına güç sağlar. Kontrastı kontrol etmek için V 0 pimleri kullanılır.
MSP430 için 16x2 LCD CCS Kitaplığı
Eğitim, Dennis Eichmann tarafından oluşturulan kitaplığa dayanmaktadır. Farklı veri türlerini yazdırmak için ayrı işlevlere sahip bir kitaplık kullanmak çok kolaydır. Ayrıca verileri baştaki, boş bırakılan ve silinen sıfırlarla farklı biçimlerde görüntülemek için hükümler vardır. Oldukça geniş ve kapsamlı bir kitaplıktır ve farklı bağlantılara göre yapılandırılabilir. Burada, başlık dosyası, veri iletişimi için 8 pimli bir paralel yapılandırmayı barındıracak şekilde değiştirilir. Kütüphane aşağıdaki linkten indirilebilir, indirdikten sonra aşağıdaki adımları takip ederek kütüphaneyi CCS'ye ekleyin.
MSP430 için 16x2 Kitaplığı İndirin - Code Composer Studio
Adım 1: Dosya ve Proje Oluşturma
Dosya menüsü kullanılarak varsayılan bir CCS projesi oluşturulur. Proje Oluştur iletişim kutusunda cihazı seçin ve hd44780'i proje adı olarak verin. Proje türü ve araç zinciri altında, çıktı türünü Statik kitaplık olarak seçin ve projeyi oluşturun.
Proje Gezgini şeridinde (sol taraf), dahil etme klasörü içinde bir başlık dosyası oluşturun ve bunu hd44780.h olarak adlandırın . Ardından, indirilen hd44780.h dosyasının içeriğini bu yeni oluşturulan dosyaya kopyalayın.
Şimdi çıktı türünü bir yürütülebilir dosya olarak değiştirerek ana projeyi oluşturun ve CCS_LCD adlı bir proje oluşturun.
Adım 2: Arama Yollarını Ana Projeye Dahil Edin
Hd44780 projesinin özellikler iletişim kutusunda ve MSP430 derleyicisinin içerme seçeneklerinin içinde, içerme klasörünü arama yoluna ekleyin.
Ardından, .lib dosyaları gibi gerekli bağlayıcı dosyaları oluşturmak için bu projeyi oluşturun. Bunu oluşturmak hata ayıklama klasörünün içinde hd44780.lib dosyası oluşturacaktır.
3. Adım: Bağlayıcı için Arama Yollarını Ekleyin
İçin Özellikler iletişim kutusunda CCS_LCD projesi ve MSP430 Bağlayıcı sekmesinin dosya arama yolunda içerir hd44780.lib içinde bulunan debug klasöründe HD44780 projenin. Hata ayıklama klasörü, dosya arama yoluna da dahildir.
İnclude klasörü, CCS_LCD projesinin MSP430 derleyicisinin içerme seçeneklerine yeniden eklenir.
Kitaplık başarıyla derlendi ve ana projenin bağlayıcısına eklendi.
MSP430'da 16x2 LCD Ekran için LCD Fonksiyonları
void hd44780_timer_isr (void): Bu, periyodik olarak A Zamanlayıcısının ISR'sinde çağrılır. Zamanlayıcı A, ekranı temizleme, imleci ayarlama ve verileri görüntüleme gibi LCD işlevlerini periyodik olarak yapmak için kullanılır. Fonksiyon ISR'de kullanılacaktır. Hiçbir şey döndürmez.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): İlk bağımsız değişkende belirtilen dizeyi yazacaktır.
char * ch__string: Veri arabelleğine yazılacak dizge (hd44780_timer_isr işlevi içinde). Hd44780_timer_isr periyodik olarak çağrıldığında veriler LCD IC'nin veri yazmacına ve talimat yazmacına kopyalanacaktır.
uint8_t u8__row: Dizenin yazılacağı satırı tanımlar.
uint8_t u8__column: Dizenin yazılacağı sütunu tanımlar.
uint8_t u8__cr_lf: 1 olarak ayarlanmışsa, satır bir sonrakine taşınacaktır. 0 ise, yazdırma aynı satırda durur.
void hd44780_clear_screen (void): Bu fonksiyon tüm ekranı temizleyecektir. Hiçbir şey döndürmez.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Fonksiyon, LCD 16'nın istenen değerini işaretsiz olarak gösterecektir.
uint16_t u16__value: Görüntülenecek tamsayı ilk bağımsız değişkende verilir.
uint8_t u8__leading_zero_handling: 0 geçilirse, tamsayı değerinin başındaki sıfırlar gösterilecektir. 1 geçilirse, sıfırlar boş bırakılacaktır. Parametre olarak 2 geçilirse, sadece önemli basamaklar gösterilecektir.
uint8_t u8__row: Tam sayının görüntülendiği satır seçilir.
uint8_t u8__column: Yazdırılacak sütun bağımsız değişken kullanılarak seçilir.
uint8_t u8__cr_lf: 1 olarak ayarlanmışsa, satır bir sonrakine taşınacaktır. 0 ise, yazdırma aynı satırda durur.
MSP430 ile Arayüz LCD'sine Devre Şeması
Tam devre şeması aşağıdaki resimde gösterilmektedir. Gördüğünüz gibi, donanım bağlantıları çok basit ve tüm panele 5V adaptör kullanarak güç verdik.
Bağlantılar yukarıdaki çizime göre yapılır. Ayrıntılı bağlantılar için lütfen aşağıdaki tabloya bakın.
Vss | 5V Güç Kaynağının Toprağı |
Vdd | 5V |
V0 | Potansiyometre Çıkışı |
RS | P2.1 |
R / W | Zemin |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | S1.6 |
D7 | S1.7 |
Bir | 220 Ohm Direnç |
K | Zemin |
LED arka ışığının anodu doğrudan 5V beslemeye bağlanamaz. LCD Modülünden akım akışını en aza indirmek için bir dirence bağlanmalıdır. Bağlantılarımı LCD'yi lehimlemek için bir perf kart kullanarak yaptım ve ardından LCD'yi MSP430 kartına bağlamak için jumper kabloları kullandım, kurulumum aşağıdaki gibi görünüyor, ancak bağlantılarınızı yapmak için bir devre tahtası da kullanabilirsiniz.
LCD Ekran için Code Composer Studio kullanarak MSP430'u programlama
Bu projede kullanılan kodun tamamı bu sayfanın altında verilmiştir. Kodu kullanmanın açıklaması aşağıdaki gibidir. İlk olarak, başlık dosyasını (hd44780.h) açın ve mikrodenetleyici parça numarasını dosyanın ilk bölümüne ekleyin.
#include "msp430g2553.h"
Önce bekçi uygulaması zamanlayıcısının durdurulması gerekir. Mikrodenetleyicinin osilatörünü yapılandırmak için DCOCTL ve BCSCTL1 kontrol kayıtları kullanılır. Aşağıdaki satırlar MCLK'yi 1MHZ olacak şekilde yapılandıracaktır .
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Veri pinleri için kullanılacak olan port 1 pinlerinden çıkış olarak bahsedilmelidir. Pim 0 ve pim 1 ayrıca RS ve R / W pini için kullanılacak olan port 2'de çıkış olarak belirtilmelidir.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Değerleri periyodik olarak görüntülemek için dahili zamanlayıcı kullanılıyor. Zamanlayıcı A, saat kaynağı olarak SMCLK (1MHZ) ile seçilir ve çalışma modu sürekli moddur.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Karşılaştırma kanalları 1 ve 2 ve zamanlayıcı taşma kesintisi için kesintiler aynı kesme vektörünü ( TIMER0_A1_VECTOR ) farklı başlangıç adresleriyle paylaşır . Yakalama karşılaştırma kanalı 1 (CCR1) , anahtar durumunda kullanılan adres olarak 2'yi kullanır.
#pragma vektör = TIMER0_A1_VECTOR __kesintisiz boşluk zamanlayıcı_0_a1_isr (void) { anahtar (TA0IV) { durum 2: { hd44780_timer_isr (); kırmak; } } }
Kodunuzu derledikten sonra, MSP430 eğitimine başlarken açıklandığı gibi MSP430 panosuna yükleyebilirsiniz. Her şey beklendiği gibi giderse, aşağıda gösterildiği gibi LCD ekranınızın biraz kontrastını görmelisiniz.
Testiniz çok sönükse, daha iyi kontrast elde etmek için potansiyometreyi ayarlamayı deneyebilirsiniz. Projenin tam çalışması, aşağıda bağlantısı verilen videoda da bulunabilir. Umarım projeyi beğenmişsinizdir ve kendi projenizi inşa etmeyi ilginç bulmuşsunuzdur. Herhangi bir sorunuz varsa, lütfen aşağıdaki yorum bölümüne bırakın. Ayrıca, tüm teknik sorularınızı cevaplandırmak veya bir tartışma başlatmak için forumlara yazabilirsiniz.