Language/AVR

ATmega 128 : FND 동작 구현

짱도르딘 2024. 5. 29. 19:08
728x90

이번에는 FND (7 Segment)의 동작을 구현해보았다.

 

FND란. Flexible Numeric Display의 약자로 LED의 숫자를 나타내는 부품을 의미한다.

 

일반적으로 Common Anode와 Common Cathode 방식으로 FND는 구현되는데, 이번에는 Common Cathode 방식으로 다룰 예정이다.

 

Common Cathode는 공통적인 음극(-)를 갖는 구조를 의미한다. 이와 반대인 Common Anode 방식은 공통 양극(+)이라고 생각하면 된다.

 

이번에 다루게 될 7 segment 소자는 5161AS 소자로, Circuit Diagram은 아래와 같다.

5161AS Circuit Diagram

 

7 segment의 핀번호는 아래와 같다.

 

7 segment Display Pinout

 

DP 제외 A~G까지의 구현을 위해 각각 알맞는 번호의 Pin에 연결을 한 후, 3번과 8번 Pin은 Ground로 묶는다.

 

 

동작을 구현할 코드는 아래와 같다.

 

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	uint8_t FND_Number[]=
	{
		0x3F,
		0x06,
		0x5B,
		0x4F,
		0x66,
		0x6D,
		0x7D,
		0x27,
		0x7F,
		0x67
	};
	
	int count = 0; 
	DDRA = 0xff;
	
    while (1) 
    {
		PORTA = FND_Number[count];
		count = (count + 1) % 10;
		_delay_ms(500);
    }
}

 

Display 동작 구현은 FND_Number 배열 안에서 이루어지며, 각각의 숫자는 16진수로 표현하였다. 

 

Common Cathode Configuration

 

 

 

728x90