페이지

2026년 4월 25일 토요일

6.3.5. 7-세그먼트 디코더 실습 (4-입력 7-출력)






CODE 6.5 | 7-세그먼트 회로 실습
01void setup() {
02  // 출력 핀 설정: 7-세그먼트 a~g (7~13번)
03  pinMode(7, OUTPUT); // a
04  pinMode(8, OUTPUT); // b
05  pinMode(9, OUTPUT); // c
06  pinMode(10, OUTPUT); // d
07  pinMode(11, OUTPUT); // e
08  pinMode(12, OUTPUT); // f
09  pinMode(13, OUTPUT); // g
10  // 입력 핀 설정: BCD 4비트 (2,3,4,5번)
11  pinMode(2, INPUT_PULLUP); // A (LSB)
12  pinMode(3, INPUT_PULLUP); // B
13  pinMode(4, INPUT_PULLUP); // C
14  pinMode(5, INPUT_PULLUP); // D (MSB)
15}
16 
17void loop() {
18  // 1. 입력 읽기 (눌림=1, 떼어짐=0)
19  int A = (digitalRead(2) == LOW);
20  int B = (digitalRead(3) == LOW);
21  int C = (digitalRead(4) == LOW);
22  int D = (digitalRead(5) == LOW);
23 
24  // 2. [7-세그먼트 세그먼트별 부정 논리식 구현]
25  // 각 식은 해당 세그먼트가 '꺼져야 하는 상황'을 판별한다.
26  int a_bar = (!D && !C && !B && A) || (C && !A);
27  int b_bar = C && (B ^ A);
28  int c_bar = !C && B && !A;
29  int d_bar = (!C && !B && A) || (C && !B && !A) || (C && B && A);
30  int e_bar = A || (C && !B);
31  int f_bar = (B && A) || (!C && B) || (!D && !C && A);
32  int g_bar = (!D && !C && !B) || (C && B && A);
33 
34  // 3. 결과 출력
35  digitalWrite(7, !a_bar);
36  digitalWrite(8, !b_bar);
37  digitalWrite(9, !c_bar);
38  digitalWrite(10, !d_bar);
39  digitalWrite(11, !e_bar);
40  digitalWrite(12, !f_bar);
41  digitalWrite(13, !g_bar);
42}




 

댓글 없음:

댓글 쓰기