-->

  • PIC16F84A Mikrodenetleyici ile Ortak Anotlu 7 Segment Display Sayıcı Uygulama Devresi ve Program Kodu



    Yukarıdaki devrede PIC16F84A Mikrodenetleyici ile yapılmış 4 haneli 7 Segment Display Sayıcı Uygulama Devresi görülmektedir.

    Devrede ortak anotlu 7 segment display kullanılmıştır.

    Rb7'ye bağlı olan butona basıldığında görüntülenen sayı değeri 1 artar.

    PIC16F84A Mikrodenetleyici devresi +5V gerilim ile çalışmaktadır.
    4 basamaklı 7 Segment Display Sayıcı PIC16F84A Mikrodenetleyici CCS C kodu

    1   // 4-Digit digital counter using PIC16F84A (common anode type)
    2  // http://elektrikelektronikegitimi.blogspot.com
    3
    4  #include <16F84A.h>
    5  #fuses HS,NOWDT,PUT,NOPROTECT
    6  #use delay(crystal=8000000)
    7
    8  short s; // Used to know button position
    9  unsigned int digit, digit1, digit10, digit100,digit1000;
    10  unsigned long i;
    11  unsigned int seg(unsigned int num) {
    12  switch (num) {
    13  case 0 : return 0xC0;
    14  case 1 : return 0xF9;
    15 case 2 : return 0xA4;
    16  case 3 : return 0xB0;
    17  case 4 : return 0x99;
    18  case 5 : return 0x92;
    19  case 6 : return 0x82;
    20  case 7 : return 0xF8;
    21  case 8 : return 0x80;
    22  case 9 : return 0x90;
    23  }
    24  }
    25  void main() {
    26  while(TRUE) {
    27  if(input(PIN_B7) == 1)
    28  s = 1;
    29  if(s == 1) {
    30  if(input(PIN_B7) == 0) {
    31  s = 0;
    32  i++;
    33  if(i > 9999)
    34  i = 0;
    35  }
    36  }
    37  digit = i % 10;
    38  digit1 = seg(digit);
    39  output_a(0x0F); // Turn off all displays
    40  output_b(digit1); // Send ones digit
    41  output_a(0x07); // Turn on display for ones
    42  delay_ms(5);
    43  digit = (i / 10) % 10;
    44  digit10 = seg(digit);
    45  output_a(0x0F); // Turn off all displays
    46  output_b(digit10); // Send tens digit
    47  output_a(0x0B); // Turn on display for tens
    48  delay_ms(5);
    49  digit = (i / 100) % 10;
    50  digit100 = seg(digit);
    51  output_a(0x0F); // Turn off all displays
    52  output_b(digit100); // Send hundreds digit
    53  output_a(0x0D); // Turn on display for hundreds
    54  delay_ms(5);
    55  digit = (i / 1000) % 10;
    56  digit1000 = seg(digit);
    57  output_a(0x0F); // Turn off all displays
    58  output_b(digit1000); // Send thousands digit
    59  output_a(0x0E); // Turn on display for thousands
    60  delay_ms(5);
    61  }
    62  }
  • YOUTUBE KANALIMI ZİYARET EDİN

    Youtube'da seslendirdiğim şiirleri paylaşıyorum. Youtube kanalıma da abone olursanız sevirim.

    Video Of Day

    ADRES

    Kağıthane/İstanbul

    EMAIL

    omersalihgul@gmail.com
    omersalihgul@hotmail.com