fpganedir.com'da ara

fpganedir mail

ARM KARAKTER LCD UYGULAMASI

Bu örneğimizde ARM 7 tabanlı bir mikrodenetleyici olan LCP2134 üzerinde LCD uygulamasını gerçekleştireceğiz. Bu uygulama kapsamında LCD'ye “ FPGA Nedir?” ifadesini yazdıracağız.

Örneğimizin yazılım kodunu C dilini kullanarak oluşturacağız. Derleyici program olarak Keil-uVision4 programını kullanacağız. Son olarak oluşturduğumuz tasarımın Proteus (7.9) programında simülasyonunu yapacağız.

Karakter LCD hakkında detaylı bilgilere buradan ulaşabilirsiniz.

uVision4 programını açalım ve yeni bir proje oluşturalım. Ardından projeye yeni bir C dosyası ekleyelim. uVision4 programında yeni bir projenin nasıl oluşturulduğunu ilk Arm Projem örneğinde bulabilirsiniz.

Project penceresinde oluşturduğumuz C dosyasına çift tıklayıp dosyayı açalım. Dosya içerisine fare ile gelip, sağ tıklayalım. Açılan menüden "insert #include <LPC213X.h>" ifadesini seçelim ve LPC213X ailesi microdenetleyicilerin özelliklerini tanımlayan dosyayı projeye ekleyelim.

Projemize LCD kontrol pinlerine microdenetleyici GPIO'larını atayarak devam edelim. Bu atama aşağıdaki gibi olacak.

#define e 1
#define rs (1<<1)
#define rw (1<<2)

/* D0..D7*/
int veri[8] ={(1<<3),(1<<4),(1<<5),(1<<6),(1<<7),(1<<8),(1<<9),(1<<10)};

C koduna gecikmeler için kullanacağımız delay fonksiyonu tanımlayarak devam edelim.

void delay(int zaman)
{
     while(zaman) zaman--;
}

Karakter(char) şeklinde gelen verileri LCD'nin D7..D0 kontrollerini süren GPIO(veri)'larına gönderen bir fonksiyon tanımlayalım.

void veri_yaz(char i)
{
    int k=0;
    int m;
    for (k=0;k<8;k++)
    {
         m=i&(1<<k);
         if(m ==0)
             IOCLR0 |= veri[k];
         else
             IOSET0 |= veri[k];
     }
}

LCD'ye veri gönderen fonksiyonu yazalım.

void lcd_yaz(char i)
{
    veri_yaz(i);
    IOSET0 |= rs;
    IOSET0 |= e;
    IOCLR0 |= e;
    delay(20000);
}

LCD'ye komut gönderen fonksiyonu yazalım.

void lcd_komut(char i)
{
    veri_yaz(i);
    IOCLR0 |= rs;
    IOSET0 |= e;
    IOCLR0 |= e;
    delay(20000);
}

LCD imlecinin LCD'deki yerini tayin edecek olan fonksiyonu yazalım.

void imlec(int satir, int sutun)
{
     if(satir==1)
        lcd_komut(0x80|(sutun-1));
    if (satir==2)
       lcd_komut(0x80|(0x40+(sutun-1)));
}

Artık ana programı yazabiliriz.

int main(void)
{
     IODIR0 |= 0x00000FFF;// Mikrodenetleyicinin P0.0..P0.11 çıkış olarak belirle
     IOCLR0 |= rw;
     delay(2000);
     lcd_komut(0x38);
     lcd_komut(0x01);
     lcd_komut(0x06);
     lcd_komut(0x0D);

    lcd_yaz('F');
    lcd_yaz('P');
    lcd_yaz('G');
    lcd_yaz('A');
    imlec(2,1);
    lcd_yaz('n');
    lcd_yaz('e');
    lcd_yaz('d');
    lcd_yaz('i');
    lcd_yaz('r');
    lcd_yaz('?');
}

Artık projeyi derleyip, mikrodenetleyiciye yükleyeceğimiz .hex dosyasını oluşturabiliriz. Bunun için Project penceresinde projenin üzerine (LCD) sağ tıklayıp, açılan listeden "Options For Target 'LCD'" ifadesine tıklayıp Options For Target 'LCD' diyalog kutusunu açalım. Bu diyalog kutusunda Target penceresinde kristal değerini belirleyelim. Biz bu değeri 12 Mhz olarak girdik. Ardından Output penceresine tıklayalım ve Create Hex File kutucuğunu işaretleyelim. Bu derleyinin .hex dosyası oluşturmasını sağlayacaktır. Ardından OK'e basıp diyalog kutusunu kapatalım.

Menü çubuğundan Project > Build target yada klavyeden F7'e basıp projeyi derleyelim.

Artık Projenin simülasyonunu yapabiliriz. Bunun için Proteus ISIS programını açalımve yeni bir tasarım oluşturalım. Bu tasarıma 1 adet LPC2134 mikrodenetleyici ve 1 adet LM016L 16x2 karakter LCD ekleyelim ve gerekli bütün bağlantıları aşağıdaki gibi yapalım.

LPC2134 üzerine çift tıklayıp proje .Hex dosyasını mikrodenetleyicisine yükleyelim. Ardından Play tuşuna basıp simülasyonu başlatalım.

Projenin bütün dokümanlarına buradan ulaşabilirsiniz.

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.