03. 한 자리 7-SEGMENT 제어하기

안양진·2022년 8월 22일
0

ATmega128

목록 보기
5/7
post-thumbnail
post-custom-banner

아두이노나 라즈베리 파이 아트메가와 같은 다양한 마이크로컨트롤을 접하다보면 가장 많이 사용되는 7-segment 혹은 FND라고 불리는 부품이 있다.

8개의 LED를 사진과 같이 배치하여 우리가 흔히 쉽게 볼수 있는 전광판의 번호 혹은 알파벳을 출력할 수있게 만든 모듈이다.

사진과 같이 공통 VCC 혹은 공통 GND를 가진 두 가지 타입이 존재한다.
따라서 제어 방식 또한 서로 반대가 된다.

공통 VCC의 경우 신호 (a,b,...,g,dp)를 0으로 주어야지만 해당 LED에 순방향이 걸려 ON이 되며, 공통 GND의 경우 반대로 1의 신호를 주어야 순방향이 걸려 LED가 쳐지게 된다.

보통 MCU에 덜 무리가 가는 공통 VCC 타입을 사용하는 것이 좋다.
하지만 이 글에서는 공통 GND 타입을 사용 하였다.

빠르게 숫자를 표현하기 위한 표는 다음과 같다.(공통 GND 기준)

숫자DPGFEDCBA2진값16진값
0001111110011 11113F
1000001100000 011006
2010110110101 10115B
3010011110100 11114F
4011001100110 011066
5011011010110 11016D
6001111010111 11017D
7001001110010 011127
8011111110111 11117F
9011001110110 011167
7-SEGMENT 16진 카운트
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	unsigned char SEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7f,0x67,0xF7,0xFC,0xB9,0x5E,0xf9,0xf1};
	DDRE=0xff;
	int i=0;
	while(1)
	{
		PORTE=SEG[i];
		i++;
		if(i>15){
			i=0;
		}
		_delay_ms(300);
	}	
}
post-custom-banner

0개의 댓글