30 Ağustos 2019 Cuma

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  }

Hiç yorum yok:

Yorum Gönder

Cervantes, Kılıç Ali Paşa ve Mimar Sinan Aynı Camide Nasıl Buluşur?

Cervantes, Kılıç Ali Paşa ve Mimar Sinan Aynı Camide Nasıl Buluşur? 1500'lü yıllarda İtalyan bir aile henüz 11 yaşındaki oğullarını papa...