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





  }
}
  }