본문 바로가기

전체 글8

Atmega128 7-Segment [참고 내용] 1) 7-Segment 7-Segment는 FND(Flexible Numeric Displays)의 가장 대표적인 소자로서, 7개의 LED 또는 8개의 LED(소수점이 있는 경우)를 조합하여 숫자정보를 표시하는 소자이다. 일반적으로 LED 1개는 ON 또는 OFF 정보밖에 나타낼 수 없지만, 와 같이 7개의 LED를 조합하면 숫자 (0~9) 및 특정문자(A~F)의 표현이 가능하다. 7개의 LED를 점멸하기 위해서는 14개의 핀이 필요하지만, Vcc 또는 GND를 공통단자로 사용하면 핀을 8개로 줄일 수 있게 된다. 이때 공통단자로 어느 것으로 사용하느냐에 따라서 7-Segment는 애노드공통(A형)과 캐소드공통(K형)으로 구분할 수 있으며, 그 내부 구조는 다음과 같다. 2) 7-Segme.. 2024. 3. 4.
Atmega128 LED 구동하기 4 [실험 5] 패턴에 따라 LED 점등하기 (0) LED를 다음과 같은 패턴으로 1초 간격으로 순차 점등하여라. (1) 다음 프로그램을 작성하라. #include #define F_CPU 16000000 #include int main() { DDRA = 0xFF; while(1) { PORTA = 0xFE; // PORTA = 0b11111110; _delay_ms(1000); PORTA = 0xFD; // PORTA = 0b11111101; _delay_ms(1000); PORTA = 0xFB; // PORTA = 0b11111011; _delay_ms(1000); PORTA = 0xF7; // PORTA = 0b11110111; _delay_ms(1000); PORTA = 0xEF; // PORTA .. 2024. 3. 3.
Atmega128 LED 구동하기 3 [실험 3] 정확한 시간 지연 함수 만들기 (0) [실험2]에서 사용한 delay( ) 함수는 저오학한 시간지연을 얻을 수 없다. 따라서 실행시간을 알 수 있는 어셈블리 명령어를 사용하여 시잔지연함수를 만들어 보고, 시간지연함수를 사용하여, 1초 간격으로 LED를 반복 작동시켜 보자. (1) 다음 프로그램을 작성하라. #include void msec_delay(int ms); int main() { DDRA = 0xFF; while(1) { PORTA = 0xF0; msec_delay(1000); PORTA = 0x0F; msec_delay(1000); } return 0; } void msec_delay(int ms) { unsigned int i; for( ; ms>0; ms--) { for(i=0.. 2024. 3. 2.
Atmega128 LED 구동하기2 [실험 2] 시간 지연 함수를 이용한 LED 반복점등하기 (0) 시간 지연 함수를 만들어서, PORTA의 비트 0~3번과 4~7번에 해당하는 LED를 약 1초 간격으로 반복적으로 점등하여 보자. (1) 다음 프로그램을 작성하여라. #include void delay(int temp); // (가) int main() { DDRA=0xFF; for (;;) // (나) { PORTA=0xF0; delay(200); PORTA=0x0F; delay(200); } return 0; } void delay(int temp) // (다) { volatile int i,j; // (라) for(i=0;i 2024. 3. 1.