Ir ao conteúdo
  • Cadastre-se

Programaçao c,pic 18f4550,teclado e lcd


Posts recomendados

  • Membro VIP

Estranha conexão temporal. Falando nisso aqui tá caindo um.

 

você pode também alternar cada nibble entre entrada e saída e ler o teclado em duas instruções. Já postei isso aqui há pouco tempo. O problema é que minha memória está cada vez mais residual. Quiçá alguém lembre, ou eu a qualquer momento. Mas... lembrar do que mesmo??

 

Gozado... parace que to tendo um de ja vu... triplo...

 

Agora sério... pra você e sua colega... Mostrem o que já fizeram com sucesso. Por gentileza, que não tenham queimado a etapa pisca led.

 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Isadora Ferraz disse:

Estranha conexão temporal. Falando nisso aqui tá caindo um.

 

você pode também alternar cada nibble entre entrada e saída e ler o teclado em duas instruções. Já postei isso aqui há pouco tempo. O problema é que minha memória está cada vez mais residual. Quiçá alguém lembre, ou eu a qualquer momento. Mas... lembrar do que mesmo??

 

Gozado... parace que to tendo um de ja vu... triplo...

 

Agora sério... pra você e sua colega... Mostrem o que já fizeram com sucesso. Por gentileza, que não tenham queimado a etapa pisca led.

 

é o seguinte,temos um exemplo com o display de 7 segmentos certo,e nao estamos conseguindo com que seja trocado por um lcd.vou mandar a programaçao que temos como base,mais é com display 7 segmentos.

Novo Documento de Texto (2).txt

Link para o comentário
Compartilhar em outros sites

@Luciano pereira Dias ,

 

Vocês pelo menos sabem como utilizar o display LCD ?

 

Melhor ainda, sabem programar em C ? Já conseguiram fazer um programa e simular com sucesso no Proteus ?

 

Sugiro que vocês começem apenas tentando fazer uma mensagem aparecer no display, usando uma biblioteca para isso.

 

Depois, façam a leitura do teclado aparecer no display.

 

Por último, tentem fazer o seu programa completo.

 

Aqui não fazemos e nem modificamos o programa para vocês, mas ajudaremos quando for preciso.

 

Mas o básico é com vocês!

 

Quem precisa aprender são vocês, façam o possível pois isso vai lhes garantir um futuro !

 

Pegar tudo pronto, mastigado pelos outros, só serve para se enganarem, nada mais.

 

Paulo

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@aphawk ... nossas mensagens que 'tocam' as pessoas kk

 

Seguinte... baixei contra meus principios. Mas assim nao membros podem visualizar e talvez se sintam inclinados a vos ajudar

 

Spoiler

 



#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic18f4550.h>
#include "config1.c"

void D_7seg (char C);
void delay (unsigned int ms);
void teclado_init ();
char tecla, tecla_antiga;


void main (){
    char teclapres, teclado='0';
    teclado_init ();
    
    while (1){
      teclapres = teclado_getec();
        if (teclapres!=0xFF){
            teclado = teclapres;
        }
        D_7seg(teclado);
        }
    }


#define fila1por LATBbits.LATB0   // define portas a serem utilizadas pelo teclado matricial
#define fila2por LATBbits.LATB1
#define fila3por LATBbits.LATB2
#define fila4por LATBbits.LATB3

#define colu1por PORTBbits.RB4   // define entrada 
#define colu2por PORTBbits.RB5
#define colu3por PORTBbits.RB6

#define _XTAL_FREQ 8000000

int x[10]={0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01101111, //9
};

char const matrizteclado[]={
    '1','2','3',
    '4','5','6',
    '7','8','9',
    '*','0','#',
    0xFF  
};

void teclado_init (){             //Para 7 segmentos
    PORTB = 0x00;                 //Reinicializa as portas B,D e resistor pullup porta b.
    LATB  = 0x00;
    TRISB = 0xF0;
    INTCON2bits.NOT_RBPU = 1;    //0 ativo 1 negado para NOT ! Esta função é para fazer a leitura somente após soltar o botão pressionado
    TRISD = 0x00;
}

int teclado_getec(){    
    // Faz a busca da tecla selecionada
    char tecla = 0, linha;
    for (linha = 0b00000001; linha<0b00010000; linha <<= 1){
        {
            //linhas ativas
            fila1por = (linha & 0x0001)>>0;
            fila2por = (linha & 0x0002)>>1;
            fila3por = (linha & 0x0003)>>2;
            fila4por = (linha & 0x0004)>>3;
            delay(100);
        }
        if (colu1por) break; tecla++;
        if (colu2por) break; tecla++;
        if (colu3por) break; tecla++;
        }
    fila1por = 0;
    fila2por = 0;
    fila3por = 0;
    fila4por = 0;
    
    if(tecla!=tecla_antiga){
        tecla_antiga = tecla;
        return matrizteclado[tecla];
    }
    else
        return matrizteclado[ 0x0C ];
    }

void delay (unsigned int ms) {
    unsigned int i,j;
    
    for (i=0; i<=120; i++); // gera 1ms de atraso
    for (j=0; j<=ms; j++); // gera atraso
}

void D_7seg (char c){
    
    LATD = 0x00;
    if ((c>'9')||(c<'0'))
        if (c=='*') LATD=0x77;  // A
        else if (c=='#') LATD=0x76; // H
        else LATD = (0x00);
    else
        LATD = (x[c-'0']);
    }

 

 

Obviamente pode ser bem melhorado. Tente consultar o autor disso. Talvez ele te oriente. Escrever num display lcd e mo' moleza.

 

Espero que nosso toque nao tenha feito você se tocar

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...