2024/05/29 3

ATmega 128 : FND 동작 구현

이번에는 FND (7 Segment)의 동작을 구현해보았다. FND란. Flexible Numeric Display의 약자로 LED의 숫자를 나타내는 부품을 의미한다. 일반적으로 Common Anode와 Common Cathode 방식으로 FND는 구현되는데, 이번에는 Common Cathode 방식으로 다룰 예정이다. Common Cathode는 공통적인 음극(-)를 갖는 구조를 의미한다. 이와 반대인 Common Anode 방식은 공통 양극(+)이라고 생각하면 된다. 이번에 다루게 될 7 segment 소자는 5161AS 소자로, Circuit Diagram은 아래와 같다. 7 segment의 핀번호는 아래와 같다.  DP 제외 A~G까지의 구현을 위해 각각 알맞는 번호의 Pin에 연결을 한 후, 3..

Language/AVR 2024.05.29

ATmega 128 : Led Bar 버튼 인터럽트 동작 구현

이번에는 인터럽트를 사용하여 LED Bar를 제어하는 동작을 구현해보겠다. 인터럽트(Interrupt)란, 외부에서 이벤트가 발생하였을 때 동작하던 프로그램을 잠시 중단하고 해당 이벤트를 동작한 후 다시 프로그램의 동작으로 복귀하는 것을 의미한다. 이벤트가 발생하면 마이크로컨트롤러는 현재 실행 중인 작업을 중단하고 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)이라고 불리는 특정 함수를 실행한다. ATmega128a Datasheet내 인터럽트에 관한 내용은 다음과 같다.  인터럽트가 발생하였을 때 수행하는 동작은 ISR(Interrupt Service Routine) 함수에서 구현된다. 해당 동작을 수행하기 위한 코드는 아래와 같다.#define F_CPU 16000000..

Language/AVR 2024.05.29

ATmega 128 : Led Bar 버튼 3개 동작 구현

이번에는 세개의 버튼을 사용하여 LED Bar를 제어할 예정이다. DDRC 포트에는 LED Bar를, DDRD 포트에는 세개의 버튼을 제어할 수 있도록 설정하였다. 아래의 코드를 확인해보면 "flag"가 선언된 것을 확인할 수 있다.  "flag" 변수는 초기에 0으로 설정되며, 버튼 3이 눌렸을 때 1로 설정된다. 이후에는 특정 조건에 따라 해당 플래그를 검사하고 적절한 동작을 수행한다. 세번째 버튼이 눌리게 된다면 flag의 값은 1로 설정되며, if(flag == 1)의 동작을 수행한다.#define F_CPU 16000000UL#include #include int main(void){ DDRC = 0xff; // LED 출력 방향 설정 DDRD = 0x00; // Button 입력 방향 설정' ..

Language/AVR 2024.05.29
728x90