Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  

Recommended Posts

Opa pessoal, recentemente estou trabalhando e um projetinho, para isso eu desenvolvi uma biblioteca para um teclado 4x4, o funcionamento do mesmo para um digito funciona que e uma beleza, entre tanto, eu nao consegui elaborar um código que eu aplique mais de um digito como por exemplo o valor 563. Se alguém puder ajudar ficaria grato xD.

Segue o código abaixo.

 


//))))))))))))))))))))))))))))))))))))))))))

//))))))))))))))))))))))))))))))))))))))))))
//LCD module connections                  //
sbit LCD_RS at RD2_bit;                   //
sbit LCD_EN at RD3_bit;                   //
sbit LCD_D4 at RD4_bit;                   //
sbit LCD_D5 at RD5_bit;                   //
sbit LCD_D6 at RD6_bit;                   //
sbit LCD_D7 at RD7_bit;                   //
                                          //
sbit LCD_RS_Direction at TRISD2_bit;      //
sbit LCD_EN_Direction at TRISD3_bit;      //
sbit LCD_D4_Direction at TRISD4_bit;      //
sbit LCD_D5_Direction at TRISD5_bit;      //
sbit LCD_D6_Direction at TRISD6_bit;      //
sbit LCD_D7_Direction at TRISD7_bit;      //
// End LCD module connections             //
//))))))))))))))))))))))))))))))))))))))))))


//))))))))))))))))))))))))))))))))))))))))))
//TECLADO IO`s CONFIG                     //
//Definição para colunas  do teclado      //
#define Y1 RB0_bit                        //
#define Y2 RB1_bit                        //
#define Y3 RB2_bit                        //
#define Y4 RB3_bit                        //
                                          //
//Definições para linha do teclado        //
#define X1 RB4_bit                        //
#define X2 RB5_bit                        //
#define X3 RB6_bit                        //
#define X4 RB7_bit                        //
//END CONFIG IO`s                         //
//))))))))))))))))))))))))))))))))))))))))))

//))))))))))))))))))))))))))))))))))))))))))
//Variaveis globais                       //
char txt1[] = "REAL TIMER CLOCK";//LCD    //
char txt2[7];//LCD                        //
unsigned char digito;//TECLADO            //
unsigned char cen;//TECLADO               //
unsigned char dez;//TECLADO               //
unsigned char soma;                       //
//END                                     //
//))))))))))))))))))))))))))))))))))))))))))

//))))))))))))))))))))))))))))))))))))))))))
//PROTYPE                                 //
void teclado();                           //
//END                                     //
//))))))))))))))))))))))))))))))))))))))))))

//))))))))))))))))))))))))))))))))))))))))))
//VETOR INTERRUPT                         //
void digitos() iv 0x0008 ics ICS_AUTO     //
{                                         //
                                          //
                                          //
                                          //
}                                         //
//END                                     //
//))))))))))))))))))))))))))))))))))))))))))

                                          
//))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
//PROGRAMA PRINCIPAL

void main()//START MAIN
{
 //PIC START
 
 //INTCON: INTERRUPT CONTROL REGISTER
 GIE_bit = 1;//DESABILITA TODAS INTRRUPCOES MASCARADAS
 GIEH_bit = 1;// HABILITA TODAS INTTERRUPCOES DE ALTA PRIORIDADE
 PEIE_bit = 1;//Enables all unmasked peripheral interrupts
 GIEL_bit = 0;//Disables all low-priority peripheral interrupts

 //TECLADO FUNC
 teclado();//TECLADO START
 
 //LCD FUNC
 Lcd_Init(); // LCD START
 Lcd_Cmd(_LCD_CLEAR);// Clear display
 Lcd_Cmd(_LCD_CURSOR_OFF);// Cursor off
 Lcd_Out(1,1,txt1);//ESCREVE NO LCD PRIMEIRA LINHA
 
 //I2C FUNC
 I2C1_Init(100000);//Start I2C communication
 
 
 //CONFIGURATION DIGITAL OR ANALOGIC PORTS
 PCFG0_bit = 1;                     //ALL PORTS DIGITAL
 PCFG1_bit = 1;                     //ALL PORTS DIGITAL
 PCFG2_bit = 1;                     //ALL PORTS DIGITAL
 PCFG3_bit = 1;                     //ALL PORTS DIGITAL

 //CONFIG INPUT OR OUTPUT, OBS Nao habilitar todos PORTE como entrada ja que um do mesmo e o reset
 TRISE0_bit = 1;
 TRISE1_bit = 1;
 TRISE2_bit = 1;
 TRISD0_bit = 0;

while(1)//ROTINA PRINCIPAL
{
    teclado();


    
    IntToStr(digito,txt2);// CONVERTE VARIAVEL PARA STRING, PARA O LCD
    Lcd_Out(2,1,txt2);//ESCREVE NO LCD SEGUNDA LINHA
    
}// END ROTINA PRINCIPAL
 


}//END MAIN

//))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))


//))))))))))))))))))))))))))))))))))))))))))
//TRATAMENTO DE FUNCOES                   //
                                          //
//))))))))))))))))))))))))))))))))))))))))))
//TECLADO                                 //
void teclado()                             //
{                                         //
        //START                           //
        int valor[10];                    //
        TRISB = 0b11110000;               //
                                          //
        //DIGITO 15                       //
        Y1 = 1;                           //
        delay_us(1);                      //
        if(X1 == 1 && Y1 == 1)            //
        {                                 //
            digito = 15;                  //
        }                                 //
        Y1 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 14                       //
        Y2 = 1;                           //
        delay_us(1);                      //
        if(X1 == 1 && Y2 == 1)            //
        {                                 //
            digito = 14;                  //
        }                                 //
        Y2 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 13                       //
         Y3 = 1;                          //
        delay_us(1);                      //
        if(X1 == 1 && Y3 == 1)            //
        {                                 //
            digito = 13;                  //
        }                                 //
        Y3 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 12                       //
        Y4 = 1;                           //
        delay_us(1);                      //
        if(X1 == 1 && Y4 == 1)            //
        {                                 //
            digito = 12;                  //
        }                                 //
        Y4 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 11                       //
        Y1 = 1;                           //
        delay_us(1);                      //
        if(X2 == 1 && Y1 == 1)            //
        {                                 //
            digito = 11;                  //
        }                                 //
        Y1 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 10                       //
        Y2 = 1;                           //
        delay_us(1);                      //
        if(X2 == 1 && Y2 == 1)            //
        {                                 //
            digito = 10;                  //
        }                                 //
        Y2 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 9                        //
        Y3 = 1;                           //
        delay_us(1);                      //
        if(X2 == 1 && Y3 == 1)            //
        {                                 //
            digito = 9;                   //
            cen = 900;                    //
            dez = 90;                     //
        }                                 //
        Y3 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 8                        //
        Y4 = 1;                           //
        delay_us(1);                      //
        if(X2 == 1 && Y4 == 1)            //
        {                                 //
            digito = 8;                   //
            cen = 800;                    //
            dez = 80;                     //
        }                                 //
        Y4 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 7                        //
        Y1 = 1;                           //
        delay_us(1);                      //
        if(X3 == 1 && Y1 == 1)            //
        {                                 //
            digito = 7;                   //
            cen = 700;                    //
            dez = 70;                     //
        }                                 //
        Y1 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 6                        //
        Y2 = 1;                           //
        delay_us(1);                      //
        if(X3 == 1 && Y2 == 1)            //
        {                                 //
            digito = 6;                   //
            cen = 600;                    //
            dez = 60;                     //
                                          //
        }                                 //
        Y2 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 5                        //
        Y3 = 1;                           //
        delay_us(1);                      //
        if(X3 == 1 && Y3 == 1)            //
        {                                 //
            digito = 5;                   //
            cen = 500;                    //
            dez = 50;                     //
        }                                 //
        Y3 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 4                        //
        Y4 = 1;                           //
        delay_us(1);                      //
        if(X3 == 1 && Y4 == 1)            //
        {                                 //
            digito = 4;                   //
            cen = 400;                    //
            dez = 40;                     //
        }                                 //
        Y4 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 3                        //
        Y1 = 1;                           //
        delay_us(1);                      //
        if(X4 == 1 && Y1 == 1)            //
        {                                 //
            digito = 3;                   //
            cen = 300;                    //
            dez = 30;                     //
        }                                 //
        Y1 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 2                        //
        Y2 = 1;                           //
        delay_us(1);                      //
        if(X4 == 1 && Y2 == 1)            //
        {                                 //
            digito = 2;                   //
            cen = 200;                    //
            dez = 10;                     //
        }                                 //
        Y2 = 0;                           //
        delay_us(1);                      //
                                          //
        //DIGITO 1                        //
        Y3 = 1;                           //
        delay_us(1);                      //
        if(X4 == 1 && Y3 == 1)            //
        {                                 //
            digito = 1;                   //
            cen = 100;                    //
            dez = 10;                     //
        }                                 //
        Y3 = 0;                           //
        delay_us(1);                      //
                                          //
         //DIGITO 0                       //
        Y4 = 1;                           //
        delay_us(1);                      //
        if(X4 == 1 && Y4 == 1)            //
        {                                 //
            digito = 0;                   //
        }                                 //
        Y4 = 0;                           //
        delay_us(1);                      //
}//END                                    //
                                          //
//END_FUNC                                //
//))))))))))))))))))))))))))))))))))))))))))

Sem título.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não analisei o programa mas a opção de mostrar 456 no display é algo como a cada pressionada desloque a posição de impressão no display. Algo como (chute)
 

//...
unsigned char i=1;
//...
Lcd_Out(2,i++,txt2);//ESCREVE NO LCD SEGUNDA LINHA

Consulte o help da sua função lcd_out pra ver a função dos argumentos

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Em 08/09/2017 às 09:08, Isadora Ferraz disse:

    Não analisei o programa mas a opção de mostrar 456 no display é algo como a cada pressionada desloque a posição de impressão no display. Algo como (chute)
     

    
    //...
    unsigned char i=1;
    //...
    Lcd_Out(2,i++,txt2);//ESCREVE NO LCD SEGUNDA LINHA

    Consulte o help da sua função lcd_out pra ver a função dos argumentos

    Muito obrigado ajudou muito, achei duas soluções para o problema, a primeira foi da maneira que você falou, vai atribuindo valores e pula para segunda coluna, sendo assim depois desse processo basta ler o LCD através do microcontrolador, habilitando o modo leitura do LCD. O segundo método, nao precisa ter um LCD para atribuir os dígitos sequencialmente, basta  usar um laço while e atribuir cada digito em uma posição do vetor e depois juntar ambas partes veja:

     

    while(RE1_bit == 0)
         {
         char txt1[] = "PRIMEIRO DIGITO";
         Lcd_Out(1,1,txt1);//ESCREVE NO LCD PRIMEIRA LINHA
         teclado();
         soma[0] = digito*10;
         }
         
         delay_ms(500);
         Lcd_Cmd(_LCD_CLEAR);// Clear display
         delay_ms(500);
         
         while(RE1_bit == 0)
         {
         char txt1[] = "SEGUNDO DIGITO";
         Lcd_Out(1,1,txt1);//ESCREVE NO LCD PRIMEIRA LINHA
         teclado();
         soma[1] = digito;
         }
         delay_ms(500);
         valor = soma[0] + soma[1];
         delay_ms(500);

         }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×