다음은 AVR 마이크로컨트롤러(예: ATmega328P)에서 7세그먼트 디스플레이를 제어하는 예제 코드입니다.
#include <avr/io.h>
#include <util/delay.h>
// 7세그먼트 디스플레이의 각 숫자에 대한 비트 패턴 정의
const uint8_t seg7_digits[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void display_digit(uint8_t digit) {
if (digit < 10) {
PORTB = seg7_digits[digit]; // 7세그먼트 디스플레이에 숫자 표시
}
}
int main(void) {
DDRB = 0xFF; // PORTB를 출력으로 설정
while (1) {
for (uint8_t i = 0; i < 10; i++) {
display_digit(i); // 숫자 i를 표시
_delay_ms(1000); // 1초 대기
}
}
}