Wyświetlacz 7-segmentowy

Wyświetlacz 7-segmentowy

Program: inkrementujący liczbą na czterech wyświetlaczach 7-segmentowych.

Od 0 do 9999.

Kompilator: Code::Blocks

Kod programu:

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int display(int x)	
	{
	  	switch(x)
	  	{
	  		case 0:
			return 192;
			case 1:
			return 249;
			case 2:
			return 164;
			case 3:
			return 176;
			case 4:
			return 153;
			case 5:
			return 146;
			case 6:
			return 130;
			case 7:
			return 248;
			case 8:
			return 128;
			case 9:
			return 144;
			default:
			return 192;
		}
	}
int main(void)
{
	DDRD = 0xFF;
	DDRA = 0xFF;
	
	int z=0;
	int i=0;
	int t,s,d,j;
	
	for(i;i<9999;i = i+1){
		z=i;
		t=z/1000;
		z=z-1000*t;
		s=z/100;
		z=z-s*100;
		d=z/10;
		z=z-d*10;
		j=z;
	
		PORTA=254;
		PORTD=display(j);
		_delay_ms(100);
	
		PORTA=253;
		PORTD=display(d);
		_delay_ms(100);
	
		PORTA=251;
		PORTD=display(s);
		_delay_ms(100);
	
		PORTA=247;
		PORTD=display(t);
		_delay_ms(100);		
	}
}