Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: sessiz_roman - 07 Nisan 2019, 02:57:07

Başlık: stm32f4 nucleof401re 7 segment 2 digit ekran kodum yanlış çalışıyor.
Gönderen: sessiz_roman - 07 Nisan 2019, 02:57:07
Arkadaşlar uzun süredir uğraştığım 7 segment 2 digit led display projemde kod düzgün çalışmıyor. Başlıkta belirttiğim kartımda aldığım sorun şu; displayde 35 yazması için kodu düzenliyorum ancak ekranda 99 yazıyor. hangi sayıyı bastırmaya çalışırsam çalışayım ekranda sürekli 99 sayısını görüyorum. kodu aşağıya yüklüyorum bilgili arkadaşlardan yardımcı olmalarını diliyorum. iyi geceler.

#include "stm32f4xx.h"

GPIO_InitTypeDef  GPIO_InitStructure;




void DisplayNumber(int number);

void Delay(uint32_t time){

while(time--){

}
}


void DisplayNumber(int x) {

   switch (x){
   case 0: zero(); break;
       case 1: one(); break;
       case 2: two(); break;
       case 3: three(); break;
       case 4: four(); break;
       case 5: five(); break;
       case 6: six(); break;
       case 7: seven(); break;
       case 8: eight(); break;
       case 9: nine(); break;
   }
}


void zero()
 {
            GPIO_SetBits(GPIOB, GPIO_Pin_2);
      GPIO_SetBits(GPIOB, GPIO_Pin_3);
  GPIO_SetBits(GPIOB, GPIO_Pin_4);
  GPIO_SetBits(GPIOB, GPIO_Pin_5);
  GPIO_SetBits(GPIOB, GPIO_Pin_6);
  GPIO_SetBits(GPIOB, GPIO_Pin_7);
  GPIO_ResetBits(GPIOB, GPIO_Pin_8);
}

 void one()
   {
              GPIO_SetBits(GPIOB, GPIO_Pin_3);
        GPIO_SetBits(GPIOB, GPIO_Pin_4);
        GPIO_ResetBits(GPIOB, GPIO_Pin_2);
      GPIO_ResetBits(GPIOB, GPIO_Pin_5);
    GPIO_ResetBits(GPIOB, GPIO_Pin_6);
          GPIO_ResetBits(GPIOB, GPIO_Pin_7);
    GPIO_ResetBits(GPIOB, GPIO_Pin_8);
  }

 void two()
    {
              GPIO_SetBits(GPIOB, GPIO_Pin_3);
        GPIO_SetBits(GPIOB, GPIO_Pin_4);
        GPIO_ResetBits(GPIOB, GPIO_Pin_2);
      GPIO_ResetBits(GPIOB, GPIO_Pin_5);
    GPIO_ResetBits(GPIOB, GPIO_Pin_6);
          GPIO_ResetBits(GPIOB, GPIO_Pin_7);
    GPIO_ResetBits(GPIOB, GPIO_Pin_8);
   }

 void three()
      {
                GPIO_SetBits(GPIOB, GPIO_Pin_2);
          GPIO_SetBits(GPIOB, GPIO_Pin_3);
          GPIO_SetBits(GPIOB, GPIO_Pin_4);
          GPIO_SetBits(GPIOB, GPIO_Pin_5);
          GPIO_SetBits(GPIOB, GPIO_Pin_8);

            GPIO_ResetBits(GPIOB, GPIO_Pin_7);
      GPIO_ResetBits(GPIOB, GPIO_Pin_6);
     }

 void four()
       {

            GPIO_SetBits(GPIOB, GPIO_Pin_3);
            GPIO_SetBits(GPIOB, GPIO_Pin_4);
            GPIO_SetBits(GPIOB, GPIO_Pin_7);
          GPIO_SetBits(GPIOB, GPIO_Pin_8);


              GPIO_ResetBits(GPIOB, GPIO_Pin_2);
        GPIO_ResetBits(GPIOB, GPIO_Pin_5);
        GPIO_ResetBits(GPIOB, GPIO_Pin_6);

      }

 void five()
        {
                  GPIO_SetBits(GPIOB, GPIO_Pin_2);

            GPIO_SetBits(GPIOB, GPIO_Pin_4);
            GPIO_SetBits(GPIOB, GPIO_Pin_5);
            GPIO_SetBits(GPIOB, GPIO_Pin_7);
          GPIO_SetBits(GPIOB, GPIO_Pin_8);

              GPIO_ResetBits(GPIOB, GPIO_Pin_3);
        GPIO_ResetBits(GPIOB, GPIO_Pin_6);
       }
 void six()
        {

             GPIO_SetBits(GPIOB, GPIO_Pin_2);

              GPIO_SetBits(GPIOB, GPIO_Pin_4);
              GPIO_SetBits(GPIOB, GPIO_Pin_5);
              GPIO_SetBits(GPIOB, GPIO_Pin_7);
              GPIO_SetBits(GPIOB, GPIO_Pin_8);
              GPIO_SetBits(GPIOB, GPIO_Pin_6);

                GPIO_ResetBits(GPIOB, GPIO_Pin_3);

       }
 void seven()
     {
                GPIO_SetBits(GPIOB, GPIO_Pin_3);
          GPIO_SetBits(GPIOB, GPIO_Pin_4);
          GPIO_SetBits(GPIOB, GPIO_Pin_2);
        GPIO_ResetBits(GPIOB, GPIO_Pin_5);
      GPIO_ResetBits(GPIOB, GPIO_Pin_6);
            GPIO_ResetBits(GPIOB, GPIO_Pin_7);
      GPIO_ResetBits(GPIOB, GPIO_Pin_8);
    }
 void eight()
  {
            GPIO_SetBits(GPIOB, GPIO_Pin_2);
      GPIO_SetBits(GPIOB, GPIO_Pin_3);
  GPIO_SetBits(GPIOB, GPIO_Pin_4);
  GPIO_SetBits(GPIOB, GPIO_Pin_5);
  GPIO_SetBits(GPIOB, GPIO_Pin_6);
  GPIO_SetBits(GPIOB, GPIO_Pin_7);
  GPIO_SetBits(GPIOB, GPIO_Pin_8);
 }

 void nine()
    {
              GPIO_SetBits(GPIOB, GPIO_Pin_2);
        GPIO_SetBits(GPIOB, GPIO_Pin_3);
    GPIO_SetBits(GPIOB, GPIO_Pin_4);
    GPIO_SetBits(GPIOB, GPIO_Pin_5);
    GPIO_ResetBits(GPIOB, GPIO_Pin_6);
    GPIO_SetBits(GPIOB, GPIO_Pin_7);
    GPIO_SetBits(GPIOB, GPIO_Pin_8);
   }




int main(void)
{



  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5  | GPIO_Pin_6 | GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9 | GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB, &GPIO_InitStructure);




  while (1)


  {

  int dig1;
  int dig2;
  int i = 0;


  dig1=2;
  dig2=5;










     for (int i = 1; i <= 2000; i++)
     {
    GPIO_ResetBits(GPIOB, GPIO_Pin_9);    //digit 1
         DisplayNumber(dig1);
         Delay(4);
         GPIO_SetBits(GPIOB, GPIO_Pin_9);

         GPIO_ResetBits(GPIOB, GPIO_Pin_10);  //digit 2
         DisplayNumber(dig2);
         Delay(4);
         GPIO_SetBits(GPIOB, GPIO_Pin_10);





  }
}
  }