7 segment는 LED를 여러개 한것에 불과하다.
단지, 여러자리로 된 7 segment는
빠른 속도로 여러개를 돌아가면서 출력해야 하기 때문에
타이밍에 민감해져 어려워질 뿐이다.
세븐 세그먼트는 위의 순서대로 폰트를 생성하게 되는데,
어떻게 선을 연결하냐에 따라서 폰트 데이터가 달라지게 된다.
A가 LSB가 될지, MSB가 될지는 결정하기 나름이지만,
일반적으로는 A를 LSB로 쓰는듯 하다.
0번 핀에 A
1번 핀에 B
2번 핀에 C
3번 핀에 D
4번 핀에 E
5번 핀에 F
6번 핀에 G
이런식으로 연결을 한다.
위의 방법으로 세그먼트의 항목을 1로 쓰면 엑셀로 계산해서 10진수로 출력해주는 파일이다.
생성한 결과는 아래와 같다.
그리고 1개가 아닌 여러개의 세그먼트를 제어해야 할 경우에는
AVR에서 A~G + DP의 8bit를 하나의 포트에 연결해주고
다른 포트에 segment select 를 연결해서, Cathod 타입이나 Anode 타입에 따라서
0이나 1로 설정해주면 된다.
단, 이렇게 할경우, 2ms 단위로 4개를 돌리면 상당히 어두운 편이니,
5V를 별도로 TR로 연결해서 사용하는 것이 좋을듯 하다. (밝기가 상관없으면 그냥 연결해도 무방하다)
2ms 정도 되어야지 UART와 동시 사용해도 깜박임이 없었다.
3ms 부터는 7 segment 자체가 깜박이며, UART 입력시에 깜박임이 발생했다.
(UART 는 115200bps로 테스트, ATmega128 16Mhz)
단지, 여러자리로 된 7 segment는
빠른 속도로 여러개를 돌아가면서 출력해야 하기 때문에
타이밍에 민감해져 어려워질 뿐이다.
세븐 세그먼트는 위의 순서대로 폰트를 생성하게 되는데,
어떻게 선을 연결하냐에 따라서 폰트 데이터가 달라지게 된다.
A가 LSB가 될지, MSB가 될지는 결정하기 나름이지만,
일반적으로는 A를 LSB로 쓰는듯 하다.
0번 핀에 A
1번 핀에 B
2번 핀에 C
3번 핀에 D
4번 핀에 E
5번 핀에 F
6번 핀에 G
이런식으로 연결을 한다.
위의 방법으로 세그먼트의 항목을 1로 쓰면 엑셀로 계산해서 10진수로 출력해주는 파일이다.
생성한 결과는 아래와 같다.
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 unsigned char numeric_font[] = {6, 91, 79, 102, 109, 125, 7, 127, 111, 63}; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 unsigned char numeric_font[] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111}; |
그리고 1개가 아닌 여러개의 세그먼트를 제어해야 할 경우에는
AVR에서 A~G + DP의 8bit를 하나의 포트에 연결해주고
다른 포트에 segment select 를 연결해서, Cathod 타입이나 Anode 타입에 따라서
0이나 1로 설정해주면 된다.
단, 이렇게 할경우, 2ms 단위로 4개를 돌리면 상당히 어두운 편이니,
5V를 별도로 TR로 연결해서 사용하는 것이 좋을듯 하다. (밝기가 상관없으면 그냥 연결해도 무방하다)
2ms 정도 되어야지 UART와 동시 사용해도 깜박임이 없었다.
3ms 부터는 7 segment 자체가 깜박이며, UART 입력시에 깜박임이 발생했다.
(UART 는 115200bps로 테스트, ATmega128 16Mhz)
'embeded > AVR (ATmega,ATtiny)' 카테고리의 다른 글
AVR에 스위치를 달자 (0) | 2009.10.28 |
---|---|
avr 에서 printf 사용하기 (2) | 2009.10.20 |
winAVR 판올림 이후 AVR Studio 에서 컴파일러를 못 찾는 경우 (0) | 2009.10.09 |
winAVR outp/inp 매크로 (0) | 2009.10.09 |
ATmega128 UART 에코 서버 만들기 (echo server) (4) | 2009.10.08 |