5 Mart 2014 Çarşamba

ARM-STM32F4 DISCOVERY ile 4x16 LCD KULLANIMI ve TÜRKÇE KARAKTER OLUŞTURMA

    Merhaba arkadaşlar bu projemizde STM32F4 Discovery ile 4x16 karakter lcd kullanımını göreceğiz. Ardından da Türkçe karakter oluşturup  lcd'ye yazdıracağız.
       




   Lcd'nin pin konfigürasyonu aşağıdaki şekildedir.Buna göre lcd'nin pin bağlantıları yapılmalıdır.




    Genel devremizde gerekli tüm bağlantılar görülmektedir.


   
   Programımızı mikroC PRO for ARM derleyicisinde yazdık , derledik ve STM32F407VG mikrodenetleyicimize yükledik.Videoda  programımızı anlattım.


                                
                         
                            
/////// Kodlarımız da burda yer almaktadır.

 sbit LCD_RS at GPIOD_ODR.B2;
 sbit LCD_EN at GPIOD_ODR.B3;
 sbit LCD_D4 at GPIOD_ODR.B4;
 sbit LCD_D5 at GPIOD_ODR.B5;
 sbit LCD_D6 at GPIOD_ODR.B6;
 sbit LCD_D7 at GPIOD_ODR.B7;
      char txt1[] ="EserSenturk";
      char txt2[] ="STM32F4-ARM";
      char txt3[] ="lcd4x16";
      char txt4[] ="example";
      int i;
           /////   Ş harfi
           const char character1[] = {14,17,16,14,1,17,14,4};

  void CustomChar1(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(64);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character1[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 0);
   }
           ////
           ////   Ü harfi
           const char character2[] = {0,10,0,17,17,17,14,0};

  void CustomChar2(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(72);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character2[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 1);
   }
           ////
  void main() {
         Lcd_Init();
         Lcd_Cmd(_LCD_CLEAR);
         Lcd_Cmd(_LCD_CURSOR_OFF);
         Lcd_Out(1,5,txt3);
         Lcd_Out(2,5,txt4);
         delay_ms(3000);

          Lcd_Out(1,19,txt1);
          CustomChar1(1,23);   // Ş harfi
          CustomChar2(1,27);  //  Ü harfi
          Lcd_Out(2,19,txt2);
         delay_ms(3000);
         
         for(i=0;i<3;i++){
         Lcd_Cmd(_LCD_SHIFT_RIGHT);
         delay_ms(750);
                    }
        while(1){
        for(i=0;i<5;i++){
           Lcd_Cmd(_LCD_SHIFT_LEFT);
           delay_ms(750);
        }
        for(i=0;i<5;i++){
           Lcd_Cmd(_LCD_SHIFT_RIGHT);
           delay_ms(750);
           }
       }
   } 

///////
     
      Program ile ilgili sorularınız varsa yardımcı olurum.
                               
                                 Projemizin çalışır hali de bu video da yer almaktadır.

                             
   
         İlgilenen arkadaşlara kolay gelsin.Bir sonraki projede görüşmek üzere..
    Başarılar dilerim.









2 yorum:

  1. merhabalar hocam bende aynı kartı kullanıyorum bu kartın üzerindeki butonu micro c ile kontrol edebilmem için nasıl bir program yazmam gerekiyor yardımcı olursanız çok sevinirim iyi günler dilerim.

    YanıtlaSil
  2. Merhaba Burak Gölen,
    aşağıda örnek bir program verdim. Programda discovery nin üzerinde bulunan PA0 user butonuna her tıklandığında D portunun üst 4 bitine ait ledleri (PD12-PD13-PD14-PD15) yakıp söndürmektedir.


    void main() {

    GPIO_Digital_Output(&GPIOD_ODR,_GPIO_pinmask_12
    |_GPIO_pinmask_13
    |_GPIO_pinmask_14
    |_GPIO_pinmask_15);
    GPIO_Digital_Input(&GPIOA_IDR,_GPIO_pinmask_0);
    GPIOD_ODR=0;

    while(1){

    if(GPIOA_IDR.B0){
    delay_ms(50);
    GPIOD_ODR.B12=~GPIOD_ODR.B12;
    GPIOD_ODR.B13=~GPIOD_ODR.B13;
    GPIOD_ODR.B14=~GPIOD_ODR.B14;
    GPIOD_ODR.B15=~GPIOD_ODR.B15;

    while(GPIOA_IDR.B0);
    delay_ms(50);
    }



    }

    }


    Faydalı olur inşallah. İyi günler dilerim.

    YanıtlaSil