본문 바로가기

AVR 기초/FND 제어하기

[AVR 기초] FND 0~9까지 나타낸 후 한칸씩 옮겨가기

*키트는 Atmega128A를 사용하였습니다*

 

 

왼쪽서부터 0~9까지 나타낸 후 한칸씩 옮겨가는 코드입니다.

 

#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

int main(void)
{
    /* Replace with your application code */
	DDRC = 0xff;																				//fnd의 포트는 portc. PORT C를 입/출력으로 설정
	DDRG = 0x0f;																				//fnd의 자리를 결정하는 포트. 4개의 자리만 있기 때문에 0x0f
	 unsigned char fnd[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f};		//0~9를 나타내는 HEX값
	 unsigned char fnd_pos[4] = {0x01, 0x02, 0x04, 0x08} ;										//fnd의 자리를 결정하는 값.
    while (1) 
    {
		for(int j = 0; j < 4 ; j++){			//fnd의 자리를 결정하는 반복문. j=0부터 3까지 4번
			PORTG = fnd_pos[j];					//PORTG에 fnd_pos의 값을 저장
			for ( int i = 0; i < 10 ; i++)		//배열 fnd는 총 10개. i=0부터 9까지 10번 반복 >> 배열 fnd[0] ~ fnd[9]
			{
				PORTC = fnd[i];					//PORTC에 fnd[i]의 값 저장
				_delay_ms(1000);				//딜레이 1초
			}
		}
	}
}



/*            a
*           ******
*          *      *  b
*        f *   g  *
*           ******
*          *      *   c			LED와 비슷하게..
*        e *      *
*           ******
*             d
*/

'AVR 기초 > FND 제어하기' 카테고리의 다른 글

[AVR 기초] FND 4자리를 한번에 나타내기  (0) 2020.07.12
[AVR 기초] FND 1씩 옮기기  (0) 2020.07.12