Ir ao conteúdo
  • Cadastre-se

Novo Problema com PIC e LCD


Denis Bopp

Posts recomendados

Bom pessoal, montei um novo circuito agora com o 16F887, usando o código que estava rodando no 16F628A, após os devidos ajustes, gravei mas aparentemente havia algo de errado (claro que havia) pois o LCD parecia iniciar mas não mostrava nada, depois de várias tentativas e nenhum problema encontrado, minha vontade de jogar tudo na parede e pisotear até não sobrar nada foi trocada por uma surpresa inesperada, já estava cansado de passar o ci do gravador para o circuito apenas puxeis os fios necessário para a gravação e pluguei no circuito, gravei novamente o código e tudo rodou beleza... ??? Mas quando tirei os fios que iam do gravador ao circuito tudo voltou ao que era, apagou o lcd e nada aparecia, depois de mexer em tudo, coloquei um resistor entre o bit 7 e o terra o lcd funcionou beleza, agora, o porque não tenho ideia, se alguém tiver alguma... não encontrei nada no catálogo que justificasse.

Link para o comentário
Compartilhar em outros sites

por favor, nos forneça o código e a linguagem, além do esquema elétrico ou fotos para que possamos ajudar melhor.

E por favor, forneça também o nome e versão do compilador. Além do programa de gravação em uso.

Fala grande Lucas, estou enviando o circuito, quanto ao código :

#include <htc.h>

#include <string.h>

#include <stdlib.h>

#include "lcd.h"

__CONFIG(INTIO & MCLREN & WDTDIS & LVPDIS & BOREN);

char buf[21];

int x = 0, y = 180;

static bit _IMPRIME;

void interrupt isr(void){

//tratamento das interrupções

if(T0IE && T0IF){

T0IF = 0;

x++;

if(x==1000){

//RA1 = !RA1;

y--;

x = 0;

_IMPRIME = 1;

}

}

}

void main(void){

//inicia_pic();

TMR0 = 0b11111010;//250

INTCON = 0b0100000;//Habilita TMR0

OSCCON = 0b01100001;

OPTION = 0b10000001;

ADCON0 = 0x00;

ANSEL = 0b00000000;

ANSELH = 0b00000000;

TRISA = 0b00000000;

PORTA = 0b00000000;

TRISB = 0b00000000;

PORTB = 0b00000000;

TRISD = 0b00000001;

PORTD = 0b00000000;

configura_lcd();

envia_comando(0x80);

strcpy(buf, "Rede CA Normal");

envia_cadeia(buf);

envia_comando(0xC0);

strcpy(buf, "tensão: 220VAC");

envia_cadeia(buf);

ei();

while(1){

//Inicio do laço

if(!RD0){

if(T0IE){

if(_IMPRIME){

envia_comando(0x01);

__delay_ms(2);

strcpy(buf, "Falta de rede CA");

envia_cadeia(buf);//Envia a primeira linha

envia_comando(0xC0);//Segunda linha

strcpy(buf, "Partinto GGD em: ");

envia_cadeia(buf);

itoa(buf, y, 10);

strcat(buf, " s");

//envia_comando(0xC9);//Segunda linha

envia_cadeia(buf);

_IMPRIME = 0;

}

}

else{

TMR0 = 0b11111010;

T0IE = 1;

x = 0;

y = 180;

}

}

else if(RD0 && T0IE){

T0IE = 0;

x = 0;

y = 180;

envia_comando(0x01);

__delay_ms(2);

//envia_comando(0x80);

strcpy(buf, "Rede CA Normal");

envia_cadeia(buf);

envia_comando(0xC0);

strcpy(buf, "tensão: 220VAC");

envia_cadeia(buf);

}

//Fim do laço

}

}

post-515594-13884951103138_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...