Jump to content

7 segmentos


Recommended Posts

Posted

boas tardes,

eu tou dificuldades para criar um mostrador de 7 segmentos, eu consigo fazer com um digito e com dois tb só que fica abaixo do outro e eu queria que tivesse na mesma linha por assim dizer.

 

#include <stdio.h>

main () {
    int segs[1] [2];
    int sect, secd, secu;
        printf("digite um numero:\n");
        printf(">>>");
            scanf("%d", &sect);

        secd = sect / 10;
        secu = sect % 10;

        segs [0][0]= secd;
        segs [0][1]= secu;
            switch (segs [0][0]) {
                    case 0:
                        printf(" _ \n");
                        printf("| |\n");
                        printf("|_| ");
                        break;
                    case 1:
                        printf("   \n");
                        printf("  |\n");
                        printf("  |\n");
                        break;
                    case 2:
                        printf(" _\n");
                        printf(" _|\n");
                        printf("|_ \n");
                        break;
                    case 3:
                        printf(" _\n");
                        printf(" _|\n");
                        printf(" _|\n");
                        break;
                    case 4:
                        printf("   \n");
                        printf("|_|\n");
                        printf("  |\n");
                        break;
                    case 5:
                        printf(" _\n");
                        printf("|_\n");
                        printf(" _|\n");
                        break;
                    case 6:
                        printf(" _ \n");
                        printf("|_\n");
                        printf("|_|\n");
                        break;
                    case 7:
                        printf(" _\n");
                        printf("  |\n");
                        printf("  |\n");
                        break;
                    case 8:
                        printf(" _\n");
                        printf("|_|\n");
                        printf("|_|\n");
                        break;
                    case 9:
                        printf(" _\n");
                        printf("|_|\n");
                        printf(" _|\n");
                        break;
                }
                switch (segs [0][1]) {
                    case 0:
                        printf(" _ \n");
                        printf("| |\n");
                        printf("|_| ");
                        break;
                    case 1:
                        printf("   \n");
                        printf("  |\n");
                        printf("  |\n");
                        break;
                    case 2:
                        printf(" _\n");
                        printf(" _|\n");
                        printf("|_ \n");
                        break;
                    case 3:
                        printf(" _\n");
                        printf(" _|\n");
                        printf(" _|\n");
                        break;
                    case 4:
                        printf("   \n");
                        printf("|_|\n");
                        printf("  |\n");
                        break;
                    case 5:
                        printf(" _\n");
                        printf("|_\n");
                        printf(" _|\n");
                        break;
                    case 6:
                        printf(" _ \n");
                        printf("|_\n");
                        printf("|_|\n");
                        break;
                    case 7:
                        printf(" _\n");
                        printf("  |\n");
                        printf("  |\n");
                        break;
                    case 8:
                        printf(" _\n");
                        printf("|_|\n");
                        printf("|_|\n");
                        break;
                    case 9:
                        printf(" _\n");
                        printf("|_|\n");
                        printf(" _|\n");
                        break;
                }
}

Obrigado!! 🙂

Melhores cumprimentos,

HAPRO

Posted (edited)

Não arranjas aí forma de incluir um 'if' para que quando tem dois algarismos , apenas dá enter ao fim de ter apresentado os dois algarismos , caso contrário , dá enter de algarismo a algarismo . 

Edited by PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted
17 minutes ago, hapro said:

Mas ao tirar os \n os números não ficam direitos.

Como assim por o if?? 

Não dá de outra maneira?? 

É possível que dê de outra maneira . O que eu dizia era algo como:

 

if(segd){
  //code para mostrar um algarismo
  //code para mostrar outro algarismo
  putchar('\n');
}else
  //code para mostrar um algarismo

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted
5 horas atrás, PsySc0rpi0n disse:

Daqui a pouco já testo o código!

boas tardes, ja testou? Ainda não consegue resolver o problema. Por matrizes não dá??

Melhores cumprimentos,

HAPRO

Posted
3 minutes ago, hapro said:

boas tardes, ja testou? Ainda não consegue resolver o problema. Por matrizes não dá??

Ainda não cheguei a testar! Estou a acabar um trabalho para a minha escola e depois posso tentar! Peço desculpa por ainda não ter testado mas ainda não consegui ter tempo!

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted
7 minutos atrás, PsySc0rpi0n disse:

Ainda não cheguei a testar! Estou a acabar um trabalho para a minha escola e depois posso tentar! Peço desculpa por ainda não ter testado mas ainda não consegui ter tempo!

Na boa, ja tas a fazer um grande favor por me tar ajudar!!

Melhores cumprimentos,

HAPRO

Posted

Eu tentava criar matrizes para guardar os números de 0 a 9 dos 7 segmentos. E depois fazia o que tu fazes para separar as unidades das dezenas e imprimia as matrizes de acordo com o valor extraído das dezenas e das unidades!

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted (edited)
char M0[4][3] = {{'', '_', ''}, {'|', '', '|'}, {'|', '', '|'}, {'', '_', ''}};

Isto foi apenas uma ideia. Nem sei se é mais simples ou não! Mas pelo menos ficarias isento dos <enters>.

Terias que imprimir essa matriz por linhas, ou seja, imprimias as posições 0,0; 0,1; 0,2 numa linha. Depois un <enter>, depois imprimir as posições 1,0;1,1;1,2 e mais um <enter> e por fim imprimir as posições 2,0; 2,1;2,2 e mais um <enter>!

 

Edit:

A matriz assim não vai dar! Vou tentar alterar!

Edited by PsySc0rpi0n
Alteração do post

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted

eu quero fazer tudo numa linha, ou seja para exemplo: ficava tipo char numero[1][2]={{'', '_', ''}, {'|', '', '|'}, {'|', '', '|'}, {'', '_', ''}}; e depois como faço para exibir os numeros que o usario escrever por exemplo??

Melhores cumprimentos,

HAPRO

Posted (edited)

Não sei se me percebeste, mas a ideia é que cada matriz seja um algarismo mas preparado para ser representado num 7 segment display. Um 7 segment display é algo assim:

Quote

  -

|    |

  -

|    |

  -

Aqui não dá para representar muito bem mas a ideia são 4 linhas e 3 colunas e preenchemos cada coluna de cada linha de acordo com os segmentos do display.

Edited by PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.