페이지

2026년 4월 25일 토요일

6.3.4. 코드 변환 회로 실습 (4-입력 4-출력)






CODE 6.4 | 코드 변환 회로 실습
01void setup() {
02  // 출력 핀 설정: LED 13번이 최상위 비트(MSB)
03  pinMode(13, OUTPUT); // 변환 결과 out3 (MSB)
04  pinMode(12, OUTPUT); // 변환 결과 out2
05  pinMode(11, OUTPUT); // 변환 결과 out1
06  pinMode(10, OUTPUT); // 변환 결과 out0 (LSB)
07 
08  // 입력 핀 설정: 버튼 5번이 최상위 비트(B3)
09  pinMode(5, INPUT_PULLUP); // B3 (MSB)
10  pinMode(4, INPUT_PULLUP); // B2
11  pinMode(3, INPUT_PULLUP); // B1
12  pinMode(2, INPUT_PULLUP); // B0 (LSB)
13}
14 
15void loop() {
16  // 1. 입력 읽기 (핀 번호와 비트 가중치 일치)
17  int b3 = (digitalRead(5) == LOW); // 5번 핀이 MSB
18  int b2 = (digitalRead(4) == LOW);
19  int b1 = (digitalRead(3) == LOW);
20  int b0 = (digitalRead(2) == LOW); // 2번 핀이 LSB
21 
22  int out3, out2, out1, out0;
23 
24  // 2. [논리 변환 식] - 실습 주제에 따라 하나를 선택
25 
26  // [CASE A: 2진 코드 -> 그레이 코드 변환]
27  /*
28  out3 = b3;
29  out2 = b3 ^ b2;
30  out1 = b2 ^ b1;
31  out0 = b1 ^ b0;
32  */
33 
34  // [CASE B: BCD -> 3-초과 코드 변환]
35  out3 = b3 || (b2 && b1) || (b2 && b0);
36  out2 = (!b2 && b1) || (!b2 && b0) || (b2 && !b1 && !b0);
37  out1 = !(b1 ^ b0);
38  out0 = !b0;
39 
40  // 3. 결과 출력
41  digitalWrite(13, out3);
42  digitalWrite(12, out2);
43  digitalWrite(11, out1);
44  digitalWrite(10, out0);
45}




 

댓글 없음:

댓글 쓰기