Direnç Hesaplama Motoru

PIC16F877 ile Display Uygulaması-2 (Buton İle 0-99 Yukarı Sayıcı)

PIC16F877 ile Display Uygulaması-2 (Buton İle 0-99 Yukarı Sayıcı) CCS C Kodu

Uygulamanın CCS C Kodu

/******************************************************
 Uygulama Adi      : Display Uygulamasi-2 (Buton Ile 0-99 Yukari Sayici)
 PIC PROG/DEKA     : Port B jumper'i 7-seg konumunda olmali
*******************************************************/

#include <0-99_sayici data-blogger-escaped-.h="">     // Kullanilacak denetleyicinin baslik dosyasi tanitiliyor.

//***********Denetleyici konfigürasyon ayarlari************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanilan osilatör frekansi belirtiliyor


#use fast_io(a) // Port yönlendirme komutlari a portu için geçerli
#use fast_io(b) // Port yönlendirme komutlari b portu için geçerli

#define   buton       pin_b0      // buton ifadesi pin_b0 ifadesine esitleniyor
#define   display_1   pin_b1      //display_1 ifadesi pin_b1 ifadesine esleniyor
#define   display_2   pin_b2      // display_2 ifadesi pin_b2 ifadesine esleniyor


char birler=0, onlar=0, sayi=0;       // char tipinde degiskenler tanimlaniyor

// Ortak anot display için veri degerleri (Proteus)
const int digit[10]={0X40, 0X79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10,};

/********* ANA PROGRAM FONKSIYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre disi
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre disi
   setup_timer_1(T1_DISABLED);     // T1 zamanlayicisi devre disi
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayicisi devre disi
   setup_adc_ports(NO_ANALOGS);    // ANALOG giris yok
   setup_adc(ADC_OFF);             // ADC birimi devre disi
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre disi
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre disi

   set_tris_b(0x01);
   set_tris_d(0x00); // B portu tümüyle çikis olarak yönlendiriliyor

   output_low(display_1);      // 1. display pasif durumda
   output_low(display_2);      // 2. display pasif durumda

   while(1)
   {
         birler=sayi%10;  // birler hanesi hesaplaniyor
         onlar=sayi/10;   // onlar hanesi hesaplaniyor

         output_high(display_2);  // 2. display aktif durumda
         output_d(digit[birler]); // displaye bilgi gönderiliyor
         delay_ms(5);             // gecikme veriliyor
         output_low(display_2);   // 2. display pasif durumda
         output_high(display_1);  // 1. display aktif durumda
         output_d(digit[onlar]);  // displaye bilgi gönderiliyor
         delay_ms(5);             // gecikme veriliyor
         output_low(display_1);   // 1. display pasif durumda
         

         if (input(buton))  // Arttir butonuna basildi ise
         {
            delay_ms(10);   // Buton arklarini önleme gecikmesi

            sayi++;         // sayi degiskenini 1 arttir

            if (sayi==100)  // Eger sayi degiskeni 100 oldu ise sifirla
              sayi=0;

            birler=sayi%10;          // birler hanesi hesaplaniyor
            onlar=sayi/10;           // onlar hanesi hesaplaniyor

            while(input(buton))  // Buton birakilana kadar döngüyü isle
            {
               output_high(display_2);  // 2. display aktif durumda
               output_d(digit[birler]); // displaye bilgi gönderiliyor
               delay_ms(5);             // gecikme veriliyor
               output_low(display_2);   // 2. display pasif durumda
               output_high(display_1);  // 1. display aktif durumda
               output_d(digit[onlar]);  // displaye bilgi gönderiliyor
               delay_ms(5);             // gecikme veriliyor
               output_low(display_1);   // 1. display pasif durumda
            }
         }
   }
}

 

PIC16F877 ILE (0-F SAYICI UYGULAMASI) İÇİN TIKLAYINIZ.

Uygulamanın Simulasyonu

http://uni-electrical.blogspot.com.tr/
Buton ile 0-99 Yukarı Sayıcı Simulasyonu

Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

2 yorum:

  1. Bunu yapmak istiyorum ama sayicida kullanılacak direnclere dair hiç bir fikrim yok. Yardım eder misiniz?

    YanıtlaSil
  2. dirençleri bilmene gerek yok 330 ohm yeterli displayin güvenliği için

    YanıtlaSil