아트메가/이론

아트메가128로 세븐세그먼트 사용하기입니다

원원 2016. 12. 3. 19:40



세븐세그먼트란 무엇일까요?

이게 세븐세그먼트 입니다. 7개의 빨간 선이 보입니다. 이 빨간선들이 LED인데 이 LED들을 키고 끄고함으로써 숫자들(0,1,2,....9)을 표시할 수 있게 됩니다.



세븐세그먼트의 핀 배치도는 무엇일까요??


보통의 세그먼트1개짜리는 위와처럼 핀배치가 되있습니다. A,B,C...G와 DP는 표시입니다. 여기에 신호를 주면 LED가 켜지게 됩니다.

중앙에보면 K가 있습니다. K에는 VCC or GND를 연결해줘야되는데 그 타입에따라 VCC를 연결해줘야하는걸 애노드, GND를 연결해줘야하는걸 케소드타입이라고 합니다.

만약 애노드타입이면 A,B,C...G와 DP에는 한쪽이 vcc로 연결되어있으므로 0v신호를 줘야 그 위치가 켜질 것 입니다.

반대로 캐소드타입일때 한쪽이 gnd로 연결해있으므로 5v신호를 줘야합니다.



세븐세그먼트의 사용 법?

이제 실제로 프로테우스로 세븐세그먼트를 제어해보겠습니다.

세그먼트의 타입은 애노드 입니다. 그러므로 VCC를 연결해 주었고, 맨 위에서부터 A,B...G까지 자리입니다. 여기에 PE0,PE1,,PE6까지 연결해 주었습니다.

숫자 0을 표시하려면 G의자리에만 5V를 주고 나머지에는 0V를 주면 됩니다. 그러므로 G의자리은 PE6이므로 PE에만 1을주면 PORTE=0x40 을 해주면 0이 표시됩니다.




사용 동영상입니다.

1초마다 숫자가 올라가게 하였습니다.




사용 코드입니다.

여기에서는 PE7번이 아무것도 연결안해 있으므로 출력을 1으로해도되고 0으로해도되는데 이 코드에서는 1로 하였습니다. 또한 num배열에 미리 자릿수를 정해놔서 num[5]이면 5가 표시됩니다.

이걸사용해서 메인문에서 1초마다 i의 값을 1증가시켜서 PORTE에 num[i]를 넣어줍니다.

 세븐 세그먼트 코드(애노드 타입, ATEML 7)

 #define F_CPU 16000000UL

#include <avr/io.h>

#include <util/delay.h>

unsigned char num[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // 애노드타입 


int main(void)

{

DDRE=0xff;

int i=0;

    while (1) 

    {

PORTE=num[i];

_delay_ms(1000);

i++;

if(i==10)

i=0;

    }

}