꽁부왕

AVR Studio4_LED FND제어 본문

AVR

AVR Studio4_LED FND제어

꽁부중 2020. 2. 3. 11:33

DDRx와 PORTx

#include <avr/io.h>
int main(){
DDRF=0xF0;
PORTF=0xF0;
}

※ AVR은 c언어를 기본으로 함. 문법도 동일.

DDRx는 전압을 조절할 PIN번호를 선택하는 코드.

PORTx는 선택된 PIN의 전압을 5V로 할지 0V로 할지 결정하는 코드.

 

DDR"F"인 이유는 내가 사용하는 보드의 schematic을 보면 알 수 있는데,

이 보드의 LED의 output은 PF4~7에 연결되어 있기 때문이다.

 

AVR은 주로 16진법을 이용하여 제어한다.

LED 제어

DDRF=0xF0;

PORTF=0xF0;

PF중 4~7의 전압을 조절할 것이다. 4~7의 전압을 5V로 한다. 는 의미이다.

 

FND 제어

#include <avr/io.h>
#include<avr/delay.h>
#define F_CPU 16000000UL //frequency설정
unsigned char FND_SEG[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66,
                     0x6D, 0x7C, 0x07, 0x7F, 0x67}; //SEG 0~9를 배열로
int main(){
DDRE=0x0C;
DDRA=0xFF;

while(1){
	PORTE=0x04;	//PE2=1일 때, 4개의 FND중 어떤 FND를 조절할지 결정하겠다는 의미.
	PORTA=0x01;
	PORTE=0x08;	//PE3=1일 때, 위에서 선택한 1개의 FND의 0~7까지의 on/off를 조절.
	PORTA=FND_SEG[1];
	_delay_ms(1);	//delay함수를 사용할 경우, 헤더파일을 추가
	PORTE=0x04;
	PORTA=0x02;
	PORTE=0x08;
	PORTA=FND_SEG[2];
	_delay_ms(1);
	PORTE=0x04;
	PORTA=0x04;
	PORTE=0x08;
	PORTA=FND_SEG[3];
	_delay_ms(1);
	PORTE=0x04;
	PORTA=0x08;
	PORTE=0x08;
	PORTA=FND_SEG[4];
	_delay_ms(1);
	}
}

출력 결과

1234

'AVR' 카테고리의 다른 글

AVR Studio4_New Project생성  (0) 2020.01.23