-->

  • PIC16F84A Mikrodenetleyici ile Ortak Katotlu 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 katotlu 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 cathode type)
    2 // Common cathode 7-segment display
    3 // http://elektrikelektronikegitimi.blogspot.com
    4
    5 #include <16F84A.h>
    6 #fuses HS,NOWDT,PUT,NOPROTECT
    7 #use delay(crystal=8000000)
    8
    9 short s; // Used to know button position
    10 unsigned int digit, digit1, digit10, digit100,digit1000;
    11 unsigned long i;
    12 unsigned int seg(unsigned int num) {
    13 switch (num) {
    14 case 0 : return 0x3F;
    15 case 1 : return 0x06;
    16 case 2 : return 0x5B;
    17 case 3 : return 0x4F;
    18 case 4 : return 0x66;
    19 case 5 : return 0x6D;
    20 case 6 : return 0x7D;
    21 case 7 : return 0x07;
    22 case 8 : return 0x7F;
    23 case 9 : return 0x6F;
    24 }
    25 }
    26 void main() {
    27 while(TRUE) {
    28 if(input(PIN_B7) == 1)
    29 s = 1;
    30 if(s == 1) {
    31 if(input(PIN_B7) == 0) {
    32 s = 0;
    33 i++;
    34 if(i > 9999)
    35 i = 0;
    36 }
    37 }
    38 digit = i % 10;
    39 digit1 = seg(digit);
    40 output_a(0); // Turn off all displays
    41 output_b(digit1); // Send ones digit
    42 output_a(8); // Turn on display for ones
    43 delay_ms(5);
    44 digit = (i / 10) % 10;
    45 digit10 = seg(digit);
    46 output_a(0); // Turn off all displays
    47 output_b(digit10); // Send tens digit
    48 output_a(4); // Turn on display for tens
    49 delay_ms(5);
    50 digit = (i / 100) % 10;
    51 digit100 = seg(digit);
    52 output_a(0); // Turn off all displays
    53 output_b(digit100); // Send hundreds digit
    54 output_a(2); // Turn on display for hundreds
    55 delay_ms(5);
    56 digit = (i / 1000) % 10;
    57 digit1000 = seg(digit);
    58 output_a(0); // Turn off all displays
    59 output_b(digit1000); // Send thousands digit
    60 output_a(1); // Turn on display for thousands
    61 delay_ms(5);
    62 }
    63 }
  • 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