-
아두이노 | 7-세그먼트 디코더 CD4511Technology/Arduino 2024. 3. 8. 18:00
1. 7-세그먼트 디코더 CD4511
7-세그먼트 디스플레이를 제어하기 위해서는 디지털 입출력 핀 8개를 사용해야 한다. 디스플레이를 단독으로 사용한다면 상관 없겠지만, 다른 전자 소자들과 함께 사용해야하는 경우에는 디지털 입출력 핀이 부족할 수 있다. 이때 CD4511 7-세그먼트 디코더를 사용하면 이진화 십진법을 이용해 디지털 입출력 핀 4개만 사용해도 7-세그먼트 디스플레이를 제어할 수 있다. 7-세그먼트 디코더 CD4511은 아래 링크로 접속하면 구매할 수 있다.
CD4511의 단자는 총 16개로, DC 5V 전원과 접지 단자, 테스트 단자 3개, 입력 단자 4개, 그리고 세그먼트와 연결되는 단자 7개로 구성되어 있다. 테스트 단자 중 램프 테스트(Lamp Test, LT) 단자는 모든 세그먼트가 정상적으로 동작하는지 테스트하기 위한 것으로, 해당 단자에 디지털 LOW 신호를 가하면 모든 세그먼트가 동작한다. 테스트를 마치고 일반적으로 동작할 때에는 해당 단자에 디지털 신호 HIGH를 가하면 된다. 블랭킹(Blanking, BL) 단자는 세그먼트의 밝기를 제어하기 위한 것으로, 해당 단자에 PWM 신호를 입력하면 세그먼트의 밝기를 조절할 수 있다. 밝기 조절 없이 일반적으로 동작하고자 한다면 해당 단자에 디지털 신호 HIGH를 가하면 된다. 마지막으로 래치 활성화(Latch Enable, LE) 단자는 현재 상태를 저장하기 위한 것으로, 디지털 신호 HIGH가 입력되면 입력 단자의 설정과 상관없이 마지막 데이터가 표시된다. 데이터 저장 없이 일반적으로 동작하고자 한다면 해당 단자에 디지털 신호 LOW를 가하면 된다.
2. 제어 방법
사람은 십진수를 기반으로 0~9를 사용해 수를 표현하지만, 컴퓨터는 이진수를 기반으로 동작하기 때문에 0과 1을 사용해 수를 표현한다. 이진화 십진법(Binary Coded Decimal, BCD)은 십진수를 이진수로 표현하는 방법 중 하나로, 십진수 숫자의 각 자리수 숫자를 네 자리의 이진수로 표현한다. 예를 들어, 십진수 109를 이진화 십진법으로 표현하면 1은 0001, 0은 0000, 9는 1001이므로 000100001001로 나타낼 수 있다. CD4511의 입력 신호 단자 4, 3, 2, 1은 각각 이진수의 자릿수를 담당한다. 단자 4, 3, 2, 1에 디지털 신호 HIGH, LOW, LOW, HIGH를 입력하면 BCD로 1001에 해당하므로 7-세그먼트 디스플레이에 십진수 9가 출력된다. CD4511의 입력에 따른 7-세그먼트 디스플레이 출력을 정리하여 나타내면 아래 표와 같다.
입력 신호 단자 결과 4 3 2 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 3. 확인 사항
CD4511의 입력 신호 단자들에 디지털 신호를 입력하였을 때 7-세그먼트 디스플레이와 연결된 단자로 출력되는 디지털 신호를 측정해 진리표를 작성해보면 디스플레이 음극 타입의 진리표와 같다는 것을 알 수 있다. 따라서 CD4511을 사용할 때에는 7-세그먼트 디스플레이 음극 타입을 사용해야 한다. 또한 CD4511에는 7-세그먼트 디스플레이의 소수점을 위한 제어 단자가 없으므로, 디스플레이에서 소수점까지 제어하고자 한다면 디지털 신호를 디스플레이에 직접 입력해주어야 한다.
4. 예제
4.1. 회로 구성
4.2. 프로그램 작성
// 정수형 배열 선언 후 디지털 핀 번호로 초기화 int DataPin[5] = {12, 11, 10, 9, 5}; // 4, 3, 2, 1, DP 순서로 연결 // 정수형 2차원 배열 선언 후 숫자를 나타내는 BCD 배열로 초기화 int BCD[10][4] = { // 4, 3, 2, 1 0, 0, 0, 0, // 0 0, 0, 0, 1, // 1 0, 0, 1, 0, // 2 0, 0, 1, 1, // 3 0, 1, 0, 0, // 4 0, 1, 0, 1, // 5 0, 1, 1, 0, // 6 0, 1, 1, 1, // 7 1, 0, 0, 0, // 8 1, 0, 0, 1 // 9 }; void setup() { for (int i = 0; i < 5; i++) { pinMode(DataPin[i], OUTPUT); // 디지털 DataPin[i]번 핀을 출력(OUTPUT) 모드로 설정 } } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10; i++) { for (int j = 0; j < 8; j++) { // 디지털 DataPin[j]번 핀에 BCD[i][j]에 해당하는 디지털 신호 출력 digitalWrite(DataPin[j], BCD[i][j]); } delay(1000); // 1000 ms 대기 } }
[함께 읽으면 좋은 페이지]
참고문헌
- 최훈. (2022). 팅커캐드 & 아두이노. 길벗캠퍼스.
- Texas Instruments. (2003). COMOS BCD-to-7-Secment Latch Decoder Drivers. https://www.ti.com/lit/ds/symlink/cd4511b.pdf. 2023.10.31.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | PISO 시프트 레지스터 74HC165 (0) 2024.03.15 아두이노 | SIPO 시프트 레지스터 74HC595 (0) 2024.03.15 아두이노 | 7-세그먼트 디스플레이 (0) 2024.03.01 아두이노 프로젝트 | 적외선 무선 원격 통신을 이용한 무선 RC카 (0) 2024.02.23 아두이노 라이브러리 | 적외선 무선 원격 통신 (0) 2024.02.16