stm32f4 nucleof401re 7 segment 2 digit ekran kodum yanlış çalışıyor.

Başlatan sessiz_roman, 07 Nisan 2019, 02:57:07

sessiz_roman

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);
  }
}
  }