세븐세그먼트란 무엇일까요?
이게 세븐세그먼트 입니다. 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; } } |
'아트메가 > 이론' 카테고리의 다른 글
아트메가128 센서제어하기(ADC제어) 1편 (0) | 2017.06.01 |
---|---|
아트메가128의 DDRx,PORTx,PINx,포트특징 알아보기 (0) | 2017.05.24 |
아트메가128 외부인터럽트입니다. (2) | 2016.11.25 |
아트메가128 LED키기 (1) | 2016.11.22 |
아트메가128이란 무엇인가? (0) | 2016.11.20 |