Ir ao conteúdo
  • Cadastre-se

rodolfogravena

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

0
  1. Boa noite pessoal, deculpe o sumiço, mas quase enloqueci com isso, bem vamos lá no formato inicial não consegui resolver, Troquei processador, até mesmo de modelo, display, flat, oscilador, fonte e outras coisas mais, até mesmo escrever no display sem biblioteca,(isso funcionou, mas iria perder muito tempo desenvolvendo uma nova biblioteca...kkk) A solução até este momento foi a seguinte, escrever no display caractere a caractere sem utilizar nenhum laço de repetição, e utilizando o menor número de variaveis possível. tive que reformular todo o software novamente, 2k de linhas, este foi o motivo do sumiço kkkk, as vezes desconfio da biblioteca do Mikroc, porque levei em cosideração as mesnsagens acima e reduzi o oscilador de 16 MHz para 5 MHz, melhorei alimentação, alimentei com fonte separado, e muitas outras coisa e nada, mas agora esta caminhando bora para o proxima etapa, abaixo uma parte do software para vocês entenderem da forma que eu fiz. acima duas partes do software, uma das funções e outra de como elas são chamadas, mas agradeço de coração toda a ajuda e espero contribuir um dia com o forum...kkkkk
  2. Boa noite pessoal, obrigado pelas dicas, mas infelizmente ja tinha testado algo parecido com a sugestão do @if. Desculpe pessoal, na proxima vez coloco o código no post.
  3. O display é direto no controlador, a função I2c, é somente o nome da função que fiz para tentar escrever no display através do comando "Lcd_Chr", a placa contem reles, mas os mesmos não estão sendo acionados, quanto ao ruido, também pensei nisso, e coloquei um capacitor de desacoplamento entre o 5v e o gnd, direto nos pino do display, até estou pensando de colocar resistor de pushdown nos pinos de dados. Uma coisa que observei que quando mando escrever na linha 1, assim que ele termina aparece a mensagem anterior na linha 3, ai escreve a linha 2, e ao final acontece o mesmo na linha 4, depois segue sobrescrevendo as linha 3 e 4. aparentemente esta ficando sujeira na memória do display.
  4. Bom dia a todos, e muito obrigado pela ajuda que estão dando, Respondendo o @aphawk , estou utilizando a biblioteca do próprio Mikroc, os timers estavam entre as linha citadas em sua resposta, mas no arquivo enviado já havia retirado os mesmos porque na surtiram efeito, fiz uma nova logica e melhorou um pouco, mas não resolveu, segue abaixo a nova logica feita, sei que o nome "I2C_LCD_Out" não é adequado, mas aproveitei de uma biblioteca de comunicação I2C, mas futuramente irei alterar o nome da função. @vtrx em anexo o vídeo do problema já com esta função implementada. OBS Já foram trocados o LCD, Processador e o Flat que interliga o Display ao processador. WhatsApp Video 2023-08-11 at 09.07.58.zip
  5. Obrigado Paulo, qual tempo você sugere, já fiz testes com um delay de 20ms entre cada comando, e não surtiu efeito.
  6. Bom dia a todos; Estou enfrentando um problema com um display LCD 20x4 conectado a um PIC18f4580; o LCD inicializa normalmente, mas começa a embaralhar as escritas, como se terminasse um comando e na sequencia começasse uma nova escrita, estou utilizando conforme arquivo em anexo; O código em anexo é apenas uma parte do software, que refiz para poder testar, mas comente com isso já tenho problemas. tentei utilizar o comando Lcd_out(1,1,"Descric Atual Limit"); mas sem sucesso a única forma que encontrei até o momento e utilizando o Lcd_Chr, conforma abaixo, <Lcd_Chr(1,3,'I'); Lcd_Chr(1,4,'N'); Lcd_Chr(1,5,'C'); Lcd_Chr(1,6,'I'); Lcd_Chr(1,7,'A'); Lcd_Chr(1,8,'L'); Lcd_Chr(1,9,'I'); Lcd_Chr(1,10,'Z'); Lcd_Chr(1,11,'A'); Lcd_Chr(1,12,'N'); Lcd_Chr(1,13,'D'); Lcd_Chr(1,14,'O'); Lcd_Chr(1,15,'.'); Lcd_Chr(1,16,'.'); Lcd_Chr(1,17,'.');> agora o que mais me chamou a atenção é que no Protheus funciona normalmente e no físico da este problemas . Já substitui o display pois o que estou utilizando é um pouco antigo, mas o problema permanece. Alguém poderia me dar uma orientação? teste.txt teste.txt
  7. Também não funcionou, estou achando que seja algo relacionado as configurações dos registradores iniciais, uma vez que os pinos da PORTD tem 3 funções cada
  8. .if bom dia, muito obrigado por analisar a minha duvida, respondendo ao seu questionamento, o compilador não gera erro de compilação em então entendo que ele não faz diferenciação entre maiúscula e minúscula, bem entendido nas configurações dos pinos do 18f e com relação a registradores, já nas logicas sim, ele faz diferenciação dando erro de compilação, fiz testes com maiúscula e minúscula já para tira esta duvida, e o comportamento foi o mesmo, sim consultei os datasheet e no meu entendimento estaria ok, pois configurei as entradas analógicas como pinos digitais e desabilitei os comparadores. A lógica funciona, o display mostra as informações, a única parte em que estou enfrentando problema é que a checagem if ( PORTD.F4 == 1) por exemplo nunca é satisfeita mesmo quando tem 5v no pino RD4, sempre o controlador enxerga a PORTD em nível logico 0.
  9. Boa noite a todos; Estou com uma certa dificuldade em configurar a PORD de um pic 18f4580 como entrada alguém poderia me dar alguma orientação, abaixo segue o codigo fonte do projeto. sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB2_bit; sbit LCD_D5 at RB3_bit; sbit LCD_D6 at RB4_bit; sbit LCD_D7 at RB5_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB2_bit; sbit LCD_D5_Direction at TRISB3_bit; sbit LCD_D6_Direction at TRISB4_bit; sbit LCD_D7_Direction at TRISB5_bit; unsigned short TempDia, TempMes, TempAno; unsigned TelaControl, TelaCall; bit BtPress; char TempTxtDia[8]; char TempTxtMes[3]; char TempTxtAno[3]; void main() { ADCON1 = 0x0F; // Configure AN pins as digital CMCON = 7; // Turn off comparators ECCP1CON = 0x00; trisa = 0b11111111; porta = 0x00; trisb = 0b00000000; portb = 0x00; trisd = 0b11111111; // Configura os pinos como entrada ou saida portd = 0xff; TRISE = 0b11111111; PORTE = 0x00; BtPress = 0; Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off TelaControl = 110; while(1){ switch (TelaControl) { case 100: Lcd_chr(2,2,'T'); Lcd_chr(2,3,'R'); Lcd_chr(2,4,'O'); Lcd_chr(2,5,'C'); Lcd_chr(2,6,'A'); Lcd_chr(2,7,'D'); Lcd_chr(2,8,'O'); Lcd_chr(2,9,':'); Lcd_chr(2,12,'0'); Lcd_chr(2,13,'0'); Lcd_chr(2,14,'/'); Lcd_chr(2,15,'0'); Lcd_chr(2,16,'0'); Lcd_chr(2,17,'/'); Lcd_chr(2,18,'0'); Lcd_chr(2,19,'0'); Lcd_chr(3,2,'P'); Lcd_chr(3,3,'R'); Lcd_chr(3,4,'O'); Lcd_chr(3,5,'X'); Lcd_chr(3,7,'T'); Lcd_chr(3,8,'R'); Lcd_chr(3,9,'O'); Lcd_chr(3,10,'C'); Lcd_chr(3,11,':'); Lcd_chr(3,12,TempTxtDia[4]); Lcd_chr(3,13,TempTxtDia[5]); Lcd_chr(3,14,'/'); Lcd_chr(3,15,TempTxtMes[4]); Lcd_chr(3,16,TempTxtMes[5]); Lcd_chr(3,17,'/'); Lcd_chr(3,18,TempTxtAno[4]); Lcd_chr(3,19,TempTxtAno[5]); TelaControl = TelaCall; break; case 110: // Tela Vencimento H2S Lcd_chr(1,6,'S'); Lcd_chr(1,7,'E'); Lcd_chr(1,8,'N'); Lcd_chr(1,9,'S'); Lcd_chr(1,10,'O'); Lcd_chr(1,11,'R'); Lcd_chr(1,13,'H'); Lcd_chr(1,14,'2'); Lcd_chr(1,15,'S'); Lcd_chr(2,9,'/'); TempDia = 20 ; IntToStr(TempDia, TempTxtDia); IntToStr(TempMes, TempTxtMes); IntToStr(TempAno, TempTxtAno); if (portd.f4 == 1){ TelaControl = 120; TelaCall = 120; } if (portd.f5 == 1){ TelaControl = 110; TelaCall = 110; } if (portd.f4 == 0 && portd.f5 == 0 ){ BtPress = 0; TelaCall = 110; TelaControl = 100; } break; case 120: // Tela Vencimento O2 Lcd_chr(1,6,'S'); Lcd_chr(1,7,'E'); Lcd_chr(1,8,'N'); Lcd_chr(1,9,'S'); Lcd_chr(1,10,'O'); Lcd_chr(1,11,'R'); Lcd_chr(1,13,'O'); Lcd_chr(1,14,'2'); //Lcd_chr(1,15,''); IntToStr(TempDia, TempTxtDia); IntToStr(TempMes, TempTxtMes); IntToStr(TempAno, TempTxtAno); if (portd.f4 == 1){ TelaControl = 130; TelaCall = 130; } if (portd.f5 == 1){ TelaControl = 110; TelaCall = 110; } if (portd.f4 == 0 && portd.f5 == 0 ){ TelaCall = 120; TelaControl = 100; } break; } } }

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...