KimBuİbrahim
İnsan, gözden ibarettir aslında, geri kalan cesettir. Göz ise ancak dostu görene denir.

4 Haziran 2012 Pazartesi

Msp 430 ile Dijital Saat Yapımı - (4 adet Seven Segment Display ile)

  Gerekli malzemeler : 7447 entegresi, Msp430, 4lü Ortak anot tek parçalı display

  Devre elemanlarının uçlarına isim vererek bağlantıları anlatmaya çalışacağım.

msp 430 dijital saat uygulaması
Bağlantı uçlarını küçük büyük harfe dikkat ederek eşleştirmeleri yapıp devreyi kurun. Msp 430'a atmanız gereken kodlar : // Msp 430 ile Dijital Saat Yapımı || ibrahimKizir 

#include "io430.h"
#include "in430.h"
#include "intrinsics.h"

unsigned int saniye=0, dakika=2, saat=16, mod=0;
int digit[4];
void saatbilgisi(void);
void saniyeartir(void);
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; //Watchdog Timer'ı Kapattık
BCSCTL1= CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
TACCTL0 = CCIE;
TACCTL1 = CCIE;
__enable_interrupt(); //Genel kesmeler aktir

CCTL0=CCIE; //CCR0 için Kesme Aktif
CCTL1=CCIE; 
TACCR0=65535 ; //65535 kesme = 1 saniye
TACCR1=65535 ;


TACTL=TASSEL_2 + MC_3 + ID_3 + TAIE; //ACLK,Up Mod,Timer Kesmesi Aktif
P1DIR = 0xFF;    //P1 yönlendirmesi
P2DIR = 0xF0;    // P2 Yönlendirmesi 
P2SEL = 0x00;
P1OUT = 0x00;    //P1 Portu sıfırlandı
P2OUT = 0xF0;
__delay_cycles(50000000);      // 5000000 kes çalıştır. 
_BIS_SR(LPM3_bits + GIE); // CPU LPM3 Modunda ve Genel Kesmeler Aktif
}
void saniyeartir(void) //saat fonksiyonu
  
{
saniye++;
if(saniye==60)
{
saniye=0;
dakika++;
if(dakika==60)
{
dakika=0;
saat++;
if(saat==24)
saat=0;
}
}
TACTL_bit.TAIFG=0;
  
}
void saatbilgisi(void) //tarama fonksiyonu
  
{
digit[0]=saat/10;
digit[1]=saat%10;
digit[2]=dakika/10;
digit[3]=dakika%10;
P1OUT = 0x10 | digit[0];
__delay_cycles(5000);
P1OUT = 0x20 | digit[1];
__delay_cycles(5000);
P1OUT = 0x40 | digit[2];
__delay_cycles(5000);
P1OUT = 0x80 | digit[3];
__delay_cycles(5000);
TACTL_bit.TAIFG=0;
  
}
//Kesme vektörleri (A0)
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
saniyeartir();
TACTL_bit.TAIFG = 0;
}
// A1 Kesme Vektörü
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
saatbilgisi();
TACTL_bit.TAIFG = 0;
}



Umarım işinize yarar. Kolay gelsin.

4 yorum: