본문 바로가기

AVR 기초/LED 제어하기

(7)
[AVR 기초] 스위치를 눌렀을때 LED 점등하기 *키트는 Atmega128A를 사용하였습니다* 스위치를 눌렀을 때 LED를 점등하는 코드입니다. #include #define F_CPU 16000000UL #include int main(void)//main함수 { /* Replace with your application code */ unsigned char LED[5] = {0xff, 0x7e, 0x3c, 0x18, 0x00};//LED라는 이름의 배열 5개 생성. 배열 안의 각각의 값은 LED를 몇개 킬 것인지의 대한 값을 HEX로 나타낸값 DDRA = 0xff;//PORTA 사용 (LED 8개) DDRE = 0x00;//PORTE 사용 while (1)//무한반복 { if ((PINE & 0x10) == 0x00){//회로도에서 위의 스위치가..
[AVR 기초] LED로 1~255 표현하기 *키트는 Atmega128A를 사용하였습니다* LED로 1부터 255 표현하기 입니다. ATmega128A에서는 LED가 총 8개입니다. 맨 오른쪽의 LED부터 2의 0승 -> 맨 왼쪽의 LED는 2의 7승 코드는 다음과 같습니다. #include #define F_CPU 16000000UL//클럭 설정 16MHz #include //딜레이 헤더파일 선언 int main(void)//main 함수 { /* Replace with your application code */ DDRA = 0xff;//LED 8개 사용 int j = 1;//변수 j = 1 while (1)//무한루프 { PORTA = 0x00;//LED 다 끄기 for (int i=0; i< 256 ; i++)//i=0 부터 255까지 반복..
[AVR 기초] LED로 X-MAS 트리 만들기2 *키트는 Atmega128A를 사용하였습니다* X-MAS 트리 만들기 2번째 입니다. 전의 코드와 다른점은 점멸할 때 PORTA에 들어있는 값에 따라 delay를 다르게 해줍니다. #include #define F_CPU 16000000UL #include #include #include void del(int sec){ volatile int j,k,l; for(j = 0; j< sec ; j++){ for(k = 0; k< 1000 ; k++){ for (l = 0; l
[AVR 기초]LED로 X-MAS 트리 만들기 *키트는 Atmega128A를 사용하였습니다* #include //avr 사용 #include //util 안에있는 delay 헤더파일 사용 #include //srand와 rand 함수 사용을 위해 stdlib 선언 #include //time 함수 > 시간값을 받기 위해서 time 헤더파일 선언 void del(int sec){//del 함수(딜레이) volatile int j,k,l; for(j = 0; j< sec ; j++){ for(k = 0; k< 1000 ; k++){ for (l = 0; l rand의 값이 계속 초기화됨 while (1)//무한반복 { PORTA = rand()%256;//PORTA에 0~255까지의 수를 랜덤으로 넣음 del(rand()%3);//del 함수를 이용한 ..
[AVR 기초]LED를 다양하게 켜보기 *키트는 Atmega128A를 사용하였습니다* LED를 다양하게 켜보는 방법입니다. 이 글에서는 delay 헤더파일을 이용한 delay 대신 delay 함수를 만들어 사용하였습니다. #include //avr사용 헤더파일 선언 void del(int sec){//_delay_ms를 대신할 함수 del volatile int j,k,l; for(j = 0; jsec에 1 PORTA = 0xff;//LED 8개 다 켜기 del(1);//del 함수 이용 >> sec 에 1 PORTA = 0X3c;//가운데 4개만 켜기 */ //1.LED를 왼쪽 4개는 켜고 오른쪽 4개는 끄기 /* PORTA = 0xf0;//L..
[AVR 기초]delay 헤더파일 간단히 만들어보기 *키트는 Atmega128A를 사용하였습니다* 딜레이 헤더파일을 이용해 간단히 딜레이를 할 수 있지만 딜레이 헤더파일을 직접 만들어 보도록 하겠습니다. 코드는 다음과 같습니다. void del(int sec){//delay 를 대신할 함수 del volatile int j,k,l; for(j = 0; j< sec ; j++){ for(k = 0; k< 1000 ; k++){ for (l = 0; l
LED 켜고 끄기 *키트는 Atmega128A를 사용하였습니다* LED를 켜기 위해서는 1을 인가해야 합니다.(끄기 위해서는 0) 즉, LED에 해당하는 포트에 해당 비트에 1을 출력하여야 합니다. 포트에 1을 출력하려면 DDRA의 해당 비트에 1을 입력하여 출력 상태로 만들고 PORTA의 해당 비트에 1을 입력하면 됩니다. 코드는 다음과 같습니다. #include //atmega 사용 헤더파일 선언 #define F_CPU 16000000//클럭주기 설정 #include //util ->delay 헤더파일 사용 선언 void delay(int sec){//delay 함수 사용 안할 시 delay 라는 이름의 함수 사용 volatile int j,k,l;//이 함수는 임의적으로 delay를 만들어줌(처리하는 시간을 이용)..