CODE 6.4 | 코드 변환 회로 실습
| 01 | void 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 | |
| 15 | void 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 | } |
댓글 없음:
댓글 쓰기