Pages

STM32VLDISCOVERY ile 7 Segment 0-9 İleri Sayıcı

STMicroelectronics tarafından üretilen STM32VLDISCOVERY geliştirme kiti ile basit GPIO işlemleri kullanarak 7 segment 0-9 sayıcı devresini yapacağız.



Devrenin yapılması için gerekli malzemeler 


7 SEGMENT DISPLAY PİN DİYAGRAMI

Kısaca 7 segment displaylerden bahsetmek gerekirse, günlük hayatımızda birçok elektronik devrede karşımıza çıkan led tabanlı göstergelerdir. 7 segment ismini alması içerisinde bulunan her bir ledin birer segment olarak adlandırılmasından kaynaklıdır. Fiziksel olarak tekli, ikili, dörtlü, sekizli gibi ihtiyaca yönelik birçok çeşidi bulunmasının yanı sıra ortak katot ve ortak anot olmak üzere iki çeşidi vardır. Ortak katot displaylerin bağlantısı yukarıda gösterilen "com" pinlerinin herhangi birinden toprağa bağlanması ile gerçekleştirilir. Ortak anot olması durumunda ise 5 volta bağlanır. Ortak katot displaylerde mikrodenetleyicinin ilgili pinleri "high" (1) olması durumunda ledlerin yanması sağlanır, "low" (0) yapılması durumunda ise ledler söndürülür. Ortak anot displaylerde ise bu durum tam tersi olarak gerçekleşmektedir.


Devremde a,b,c,d,e,f,g pinlerini sırası ile mikrodenetleyicinin b0,b1,b2,b3,b4,b5,b6 pinlerine bağladım ve her bir bağlantı için yani her bir led için 220 ohm değerinde direnç kullandım. Bu şekilde display in içerisindeki ledleri korumuş oluruz. Direnç kullanmadan da bağlanabilir ancak displayin zarar görme ihtimaline karşı dirençle bağlanması tavsiye edilir.


Devrenin kodlarına aşağıdan ulaşabilirsiniz.


 #include "stm32f10x.h"         // Device header  
 const int digit[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D,0x7D, 0x07, 0x7F, 0x6F};   
 void delay(uint32_t time)  
 {  
      while(time--);  
 }  
 void gpioConfig()  
 {  
      GPIO_InitTypeDef GPIOInitStructure;  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  
      GPIOInitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
      GPIOInitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;   
      GPIOInitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
      GPIO_Init(GPIOA,&GPIOInitStructure);  
 }  
 int main()  
 {  
      gpioConfig();  
      while(1)  
      {  
                for(int i=0; i<10; i++)  
                {  
                     GPIO_SetBits(GPIOA,digit[i]);  
                     delay(3600000);  
                     GPIO_ResetBits(GPIOA,0xFF);  
                }  
      }  
 }  

Emre Aytur

Gömülü Sistemler, Elektronik, Teknoloji