728x90

 

7 segment 숫자와 알파벳 출력 


캐소드 구동방식은 FND의 세그먼트중 켜길 원하는 비트가 0, 끄길 원하는 비트가 1이 된다.




 

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	unsigned char fnd[16] = 
				{0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xd8, 
		 		 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
	volatile unsigned char i;

	DDRF=0xFF;
	while(1)
	{	
		for(i=0; i<16; i++)
		{		
			_delay_ms(20);
			PORTF = fnd[i];
		}
	}
}



  //  PORTF = 0b1000000;  //0

  //  PORTF = 0b1111001;  //1

  //  PORTF = 0b0100100;  //2

  //  PORTF = 0b0110000;  //3  B0

  //  PORTF = 0b0011001;  //4  99

  //  PORTF = 0b0010010;  //5  92

  //  PORTF = 0b0000010;  //6  82

  //  PORTF = 0b1011000;  //7  E8

  //  PORTF = 0b0000000;  //8  80

  //  PORTF = 0b0010000;  //9  90

  //  PORTF = 0b0001000;  //A  88

  //  PORTF = 0b0000011;  //b  83

  //  PORTF = 0b1000110;  //c  c6

  //  PORTF = 0b0100001;  //d  a1

  //  PORTF = 0b0000110;  //e  86

  //  PORTF = 0b0001110;  //f  8e








애노드 구동방식은 FND의 세그먼트중 켜길 원하는 비트가 1, 끄길 원하는 비트가 0이 된다.


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	unsigned char fnd[10] = // 0~9
							{0xC0, 0xF9, 0xA4, 0xB0, 0x99, 
							 0x92, 0x82, 0xd8, 0x80, 0x90};
		
	unsigned char n10;
	unsigned char n1;

	unsigned char num=0;

	DDRH=0xFF;	// 7 Segment의 Data Line
	DDRJ=0xFF;	// 7 Segment의 자릿수 ON/OFF
	while(1)
	{	
		n10 = num / 10;	// 십의 자리
		n1 = num % 10;	// 일의 자리
		
		PORTJ = 0x00;	// ON
		PORTH = fnd[n10];	// Data
		PORTJ = 0x01;	// OFF
		_delay_ms(2);
				
		PORTJ = 0x00;
		PORTH = fnd[n1];
		PORTJ = 0x02;
		_delay_ms(2);
		PORTJ = 0x00;		

		num++;
		num = num % 100;
	}
	return 0;
}








+ Recent posts