source: t29-www/physical-computing/bcd-decoder/bcd-decoder.ino @ 1192

Last change on this file since 1192 was 1192, checked in by heribert, 7 years ago

Kleinigkeiten + neues Bild

File size: 2.2 KB
Line 
1
2 
3// 7-Segment-Ziffernanzeige, aufgebaut mit Hilfe des CA3161E BCD-Decoders, Aufg. 2 Blatt 4
4
5const int A=4;    // wir benoetigen 4 Ausgaenge fuer den Decoder (A=2^0 bis D=2^3)
6const int B=5;    // diesen Ausgaengen werden die Pins 4,5,6,7 zugeordnet
7const int C=6;
8const int D=7;   
9
10const int TASTE = 8;  // gedrueckt: LOW
11 
12void setup() {
13  pinMode(TASTE, INPUT_PULLUP);   // erklaere, warum hier ein PULLUP notwendig ist
14  pinMode(A, OUTPUT); // 2^0     
15  pinMode(B, OUTPUT);
16  pinMode(C, OUTPUT);
17  pinMode(D, OUTPUT); // 2^3
18
19  Serial.begin(9600);       // Initialisieren des Seriellen Monitors
20 
21}
22 
23int count = 0;     // Zaehlvariable (= angezeigte Ziffer)
24 
25void loop() {
26  if (digitalRead(TASTE) == LOW)   // Abfrage, ob die Taste gedrueckt ist
27    {
28    count++;                    // ausfuehrlich:  count=count + 1
29    delay(300);           // erklaere, warum hier ein delay() stehen muss
30    if (count == 10)      // wir wollen ja nur bis 9 zaehlen!
31      count = 0;
32
33/*{  alternativ mit C++ :
34  Setzten der vier oberen PINs des Ports D und beibehalten der Zustaende der unteren vier PINs
35  PORTD = (count << 4) & 0xf0 | (PORTD & 0xf)  ;
36  return ; 
37  diese 2 Zeilen bewirken das Gleiche, wie der Rest unten. Sie sind aber "deaktiviert"
38  weil wir sie noch nicht verstehen! }
39  */
40
41    if (count == 0) //write 0000   ab hier steht die Umsetzung des BCD Codes
42    {
43      digitalWrite(A, LOW);
44      digitalWrite(B, LOW);
45      digitalWrite(C, LOW);
46      digitalWrite(D, LOW);
47     
48    }
49     
50    if (count == 1) //write 0001
51    {
52      digitalWrite(A, HIGH);
53      digitalWrite(B, LOW);
54      digitalWrite(C, LOW);
55      digitalWrite(D, LOW);
56     
57    }
58     
59    if (count == 2) //write 0010
60    {
61      digitalWrite(A, LOW);
62      digitalWrite(B, HIGH);
63      digitalWrite(C, LOW);
64      digitalWrite(D, LOW);
65       
66    }
67     
68    if (count == 3) //write 0011
69    {
70      digitalWrite(A, HIGH);
71      digitalWrite(B, HIGH);
72      digitalWrite(C, LOW);
73      digitalWrite(D, LOW);
74     
75    }
76     
77    if (count == 4) //write 0100
78    {
79      digitalWrite(A, LOW);
80      digitalWrite(B, LOW);
81      digitalWrite(C, HIGH);
82      digitalWrite(D, LOW);
83    }
84
85     //  den Rest kannst du sicher selbst machen  :-)
86   
87    }
88   
89}
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License