본문 바로가기
Mcu 만져보기

Atmega128 LED 구동하기 4

by 닉네임 없네용 2024. 3. 3.

[실험 5] 패턴에 따라 LED 점등하기

 

(0) LED를 다음과 같은 패턴으로 1초 간격으로 순차 점등하여라.

 

 

(1) 다음 프로그램을 작성하라.

#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
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 = 0b11101111;
       _delay_ms(1000);
       PORTA = 0xDF;                            // PORTA = 0b11011111;
       _delay_ms(1000);
       PORTA = 0xBF;                            // PORTA = 0b10111111;
       _delay_ms(1000);
       PORTA = 0x7F;                            // PORTA = 0b011111111;
       _delay_ms(1000);
    }
    return 0;
}

 

(2) 프로그램을 컴파일 및 다운로드하고, 정상작동 여부를 확인하라.

 

실험5 결과

 

(3) 프로그램의 의미를 파악하라.

 

[실습 6] 배열로 점등 패턴을 구성하여 LED 점등하기

 

(0) 이전의 심험에서의 프로그램은 동일한 유형의 문장이 반복되므로 프로그램이 길어지고 복잡해진다. 따라서 점등 패턴을 배열(array)을 사용하여 작성 하여라.

 

(1) 다음 프로그램을 작성하라.

#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
int main()
{
    char pattern[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};        // (가)
    DDRA = 0xFF;
    while(1)
    {
       for(int i=0;i<8;i++)
        {
           PORTA = pattern[i];
           _delay_ms(1000);
        }
    }
    return 0;
}

 

(2) 프로그램을 컴파일 및 다운로드하고, 정상작동 여부를 확인하라.

 

실험 6 결과

 

(3) 프로그램의 의미를 파악하라.

 

 

[추가 실험]

 

(1) 8개의 LED가 순차적으로 점등되는 프로그램을 작성하고 구현하라.

    - [실험5], [실험6]에서 사용한 방법이 아닌 다른 방법을 사용하라.

    - 예를들면 shift연산자 (<<,>>)를 사용한다.

'Mcu 만져보기' 카테고리의 다른 글

Atmega128 7-Segment  (0) 2024.03.04
Atmega128 LED 구동하기 3  (0) 2024.03.02
Atmega128 LED 구동하기2  (0) 2024.03.01
Atmega128로 LED구동하기  (0) 2024.03.01
MCU vs MPU 둘의 차이는 무엇일까?  (2) 2024.02.01