Esquemático :
Código fonte:
//************************************************************************/ // Display 7 segmento com Atmega328P // Version : 1.0 // microcontrolador : AVR ATMega328 // Autor : Aguivone // descrição : usando display 7 segmento com avr studio // data : 26/07/2012. // //************************************************************************/ #define F_CPU 16000000UL // 16 MHz #include <avr/io.h> #include <avr/interrupt.h> #include <stdio.h> #include <util/delay.h> #include <string.h> #define liga_pino(x,y) x |= _BV(y) #define desliga_pino(x,y) x &= ~(_BV(y)) #define alterna_pino(x,y) x ^= _BV(y) #define SEG_A PD7 #define SEG_B PB0 #define SEG_C PB1 #define SEG_D PB2 #define SEG_E PB3 #define SEG_F PB4 #define SEG_G PB5 /////////////////////////////funçoes auxiliares ///////////////////////////// void mostra_numero(int numero) { switch(numero) { case 0: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); liga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); desliga_pino(PORTB,SEG_G); }break; case 1: { desliga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); desliga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); desliga_pino(PORTB,SEG_F); desliga_pino(PORTB,SEG_G); }break; case 2: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); desliga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); liga_pino(PORTB,SEG_E); desliga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 3: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); desliga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 4: { desliga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); desliga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 5: { liga_pino(PORTD,SEG_A); desliga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 6: { liga_pino(PORTD,SEG_A); desliga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); liga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 7: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); desliga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); desliga_pino(PORTB,SEG_F); desliga_pino(PORTB,SEG_G); }break; case 8: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); liga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 9: { liga_pino(PORTD,SEG_A); liga_pino(PORTB,SEG_B); liga_pino(PORTB,SEG_C); liga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); liga_pino(PORTB,SEG_F); liga_pino(PORTB,SEG_G); }break; case 10://desliga display { desliga_pino(PORTD,SEG_A); desliga_pino(PORTB,SEG_B); desliga_pino(PORTB,SEG_C); desliga_pino(PORTB,SEG_D); desliga_pino(PORTB,SEG_E); desliga_pino(PORTB,SEG_F); desliga_pino(PORTB,SEG_G); }break; } } /////////////////////////////função principal//////////////////////////////// int main(void) { DDRD = 0XFF; //inicializa portD como saida DDRB = 0XFF; //inicializa portB como saida ////////////////////////// for(;;) { mostra_numero(0); _delay_ms(1000); mostra_numero(1); _delay_ms(1000); mostra_numero(2); _delay_ms(1000); mostra_numero(3); _delay_ms(1000); mostra_numero(4); _delay_ms(1000); mostra_numero(5); _delay_ms(1000); mostra_numero(6); _delay_ms(1000); mostra_numero(7); _delay_ms(1000); mostra_numero(8); _delay_ms(1000); mostra_numero(9); _delay_ms(1000); mostra_numero(10); _delay_ms(1000); } } //////////////////////////////////////////////////////////////////////////////
para contribuir com o blog colocando seus projetos aqui basta entrar em contato!
até a próxima!
Nenhum comentário :
Postar um comentário
olá,digite aqui seu comentário!