HOMENAGEM
† 12 de março de 2016
Quem está conectado?
Há 144 usuários online :: 1 registrado, 0 invisíveis e 143 visitantes :: 2 motores de buscasandy silva de oliveira
O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
Top dos mais postadores
Rafael Silveira (7816) | ||||
Caca Silva (6057) | ||||
renatoscp (3891) | ||||
CMeletronica (3234) | ||||
michel chagas (2791) | ||||
Railson (2119) | ||||
alexsandro rodrigues de a (1835) | ||||
naldo santos (1625) | ||||
ablacon64 (1222) | ||||
gilvantexas (1061) |
Tópicos semelhantes
Medidor de Velocidade
Alguém pode me ajudar? Teclado e display no mesmo PORT
2 participantes
Página 1 de 1
Alguém pode me ajudar? Teclado e display no mesmo PORT
Pessoal aos poucos estou aprendendo a programar PICs com o PIC C Compilerseguindo video aulas e foi passado um exemplo aonde se mostra um display alfanumérico e um teclado 4x3 juntos no mesmo PORT mas fiz tudo exatamente como se pede mas não funciona de forma alguma.
Código
Segundo o próprio instrutor, o display é automaticamente definido para o PORTD mas em MCUs que não tem ele que é o caso do 16F628A o display já é definido automaticamente para o PORTB
Já tentei de tudo, mudei de display do LM044L para o LM016L, mudei de PIC do 16F628A para o F88 (refazendo claro todo o código) mas não adianta, o PIC C Compiler compila sem erros, o Isis simula sem erros mas ao pressionar o teclado nada acontece.
Código
- Código:
#include <16F628A.h>
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(internal=4000000)
#define use_portb_kbd TRUE //Teclado definido para o port B
#include <KBD.C>
char tecla;
#include <lcd.c>
void main()
{
kbd_init();
lcd_init();
while(TRUE)
{
tecla=kbd_getc();
delay_ms(1);
if (tecla!=0){ //tecla diferente de zero, foi pressionada
printf(lcd_putc, "%c", tecla);
delay_ms(200);
}
}
}
Segundo o próprio instrutor, o display é automaticamente definido para o PORTD mas em MCUs que não tem ele que é o caso do 16F628A o display já é definido automaticamente para o PORTB
Já tentei de tudo, mudei de display do LM044L para o LM016L, mudei de PIC do 16F628A para o F88 (refazendo claro todo o código) mas não adianta, o PIC C Compiler compila sem erros, o Isis simula sem erros mas ao pressionar o teclado nada acontece.
_________________
Caca Silva- ADMINISTRADOR
- Mensagens : 6057
Data de inscrição : 30/01/2011
Idade : 43
Localização : Ritápolis MG
Re: Alguém pode me ajudar? Teclado e display no mesmo PORT
Bom dia Caca Silva, primeiro você terá que descobrir quem não está respondendo , se é o teclado ou o LCD, para isso logo após a inicialização do LCD coloque uma linha para imprimir no LCD qq coisa, tipo:
...
void main()
{
kbd_init();
lcd_init();
lcd_gotoxy(1, 1);
printf(lcd_putc, "TESTE LCD");
while(TRUE)
{
tecla=kbd_getc();
...
Se no LCD mostrar na primeira linha "TESTE LCD" o problema está no teclado, ai para testar se o teclado está funcionando, faça assim:
...
while(TRUE)
{
tecla=kbd_getc();
delay_ms(1);
if (tecla!=0){ //tecla diferente de zero, foi pressionada
printf(lcd_putc, "%c", tecla);
output_high(PIN_A0);
delay_ms(2000);
output_low(PIN_A0);
}
...
O led deve acender por 2s se qualquer tecla for pressionada, ligue o anodo de um LED ao pino A0 e o katodo a um resistor de 330R que vai ao terra, na simulaçao do ISIS, agora só acho estranho como um único porte vai funcionar como entrada e saída ao mesmo tempo, pode ser que seja tratado internamente pela biblioteca do teclado, não sei como é isso, espero ter ajudado
...
void main()
{
kbd_init();
lcd_init();
lcd_gotoxy(1, 1);
printf(lcd_putc, "TESTE LCD");
while(TRUE)
{
tecla=kbd_getc();
...
Se no LCD mostrar na primeira linha "TESTE LCD" o problema está no teclado, ai para testar se o teclado está funcionando, faça assim:
...
while(TRUE)
{
tecla=kbd_getc();
delay_ms(1);
if (tecla!=0){ //tecla diferente de zero, foi pressionada
printf(lcd_putc, "%c", tecla);
output_high(PIN_A0);
delay_ms(2000);
output_low(PIN_A0);
}
...
O led deve acender por 2s se qualquer tecla for pressionada, ligue o anodo de um LED ao pino A0 e o katodo a um resistor de 330R que vai ao terra, na simulaçao do ISIS, agora só acho estranho como um único porte vai funcionar como entrada e saída ao mesmo tempo, pode ser que seja tratado internamente pela biblioteca do teclado, não sei como é isso, espero ter ajudado
gantunes- Nível 2
- Mensagens : 34
Data de inscrição : 28/11/2012
Idade : 55
Localização : João Pessoa
Re: Alguém pode me ajudar? Teclado e display no mesmo PORT
Muito obrigado meu amigo mas uma outra pessoa me ajudou aqui ontem e deu certo. Segundo ele tem que declarar sim o LCD no PORT B
#define LCD_DATA_PORT getenv("SFR:PORTB");
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
Agora enfrento outro dilema kkkkkkk estou aprendendo a colocar senha, fiz tudo direitinho mas não funciona de jeito nenhum
#define LCD_DATA_PORT getenv("SFR:PORTB");
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
Agora enfrento outro dilema kkkkkkk estou aprendendo a colocar senha, fiz tudo direitinho mas não funciona de jeito nenhum
- Código:
#include <D628a.h>
#define use_portb_kbd TRUE //Teclado definido para o port B
#include <KBD.C>
#define LCD_DATA_PORT getenv("SFR:PORTB");
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
char tecla;
char *senha="1122"; // Definição da senha
int i=0; // Contador
int1 errado=0;
#include <lcd.c>
void main()
{
kbd_init();
lcd_init();
printf(lcd_putc, "\fDIGITE A SENHA:\n");
while(TRUE) {
tecla=kbd_getc();
delay_ms(1);
if (tecla!=0){ //tecla diferente de zero, foi pressionada
printf(lcd_putc, "%c", tecla);
delay_ms(200);
if (senha[i]!=tecla){
errado=1;
}
i++; //Incremento
}
if (i==4 && errado==1){ //Senha errada
printf(lcd_putc, "\fSENHA INCORRETA");
delay_ms(5000);
i=0;
errado=0;
printf(lcd_putc, "\fDIGITE A SENHA:\n");
}
if (i==4 && errado==0){ // Senha Correta
printf(lcd_putc, "\fSENHA CORRETA");
delay_ms(5000);
i=0;
errado=0;
}
}
}
_________________
Caca Silva- ADMINISTRADOR
- Mensagens : 6057
Data de inscrição : 30/01/2011
Idade : 43
Localização : Ritápolis MG
Tópicos semelhantes
» ALGUEM PODE ME AJUDAR?
» PI POLONÊS
» {Resolvido} Alguem dos colegas teria drivers do xp pra me ajudar.
» PI POLONÊS
» {Resolvido} Alguem dos colegas teria drivers do xp pra me ajudar.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Ontem à(s) 20:57 por sandy silva de oliveira
» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Dom 24 Mar 2024 - 16:10 por crisnich
» Defeito intermitente amplificador Ciclotron TIP5000
Qua 20 Mar 2024 - 9:13 por fastaveira
» Esquema Amplificador Audio Leader AL 5.0
Qua 20 Mar 2024 - 9:01 por fastaveira
» MK4000 - FONTE CHAVEADA FULL BRIDGE
Dom 17 Mar 2024 - 18:43 por sandy silva de oliveira
» amplificador class h tailandes
Sex 15 Mar 2024 - 22:41 por mehuysal
» Amplificador Super Strong
Qui 14 Mar 2024 - 13:03 por Reginaldo Silva
» Amplificador Classe D UCD1500
Qua 13 Mar 2024 - 13:07 por Guille
» NS450 - FONTE CHAVEADA PARTE 2
Seg 11 Mar 2024 - 6:55 por ffernand3s
» DETECTOR DE METAIS IDX-PRO
Sex 1 Mar 2024 - 16:41 por Benyamin
» Amplificador Fonte Simples em teia de aranha
Sex 1 Mar 2024 - 12:17 por Reginaldo Silva
» Manutenção Gradiente 366 / 266
Qui 29 Fev 2024 - 21:40 por tiaogaviao
» Criação pcb esquema phono cápsula ceramica
Qui 29 Fev 2024 - 16:58 por warley cesar
» DETECTOR DE METAIS MKII (PINPOINTER)
Qua 28 Fev 2024 - 19:09 por Benyamin
» Fonte chaveada compacta IR2153D - 10 x 10 cm
Ter 27 Fev 2024 - 22:02 por microbit