Galera, estou tentando desenvolver um projeto simples para escrever algumas coisas num display lcd 16x2, fiz o projeto no MPLAB utilizando a biblioteca do Noboru para o display LCD, compilou normalmente mas quando jogo o hexa no proteus não aparece nada no display, agora não sei se é erro da programação no MPLAB ou das ligações no proteus, ou se é outro pulo do gato. Se alguém puder me ajudar ficarei muito grato. Vi um tópico parecido e que teve solução porém a solução não foi comentada no fórum. segue em anexo o programa, a biblioteca e a imagem (arquivo do Word) do circuito montado no proteus.

Exibições: 2997

Anexos

Responder esta

Respostas a este tópico

Gente, acabei descobrindo que a biblioteca do livro do Noboru continha um erro, existem versões já corrigidas. Corrigi biblioteca e agora o display já mostra os caracteres, porém não escreve todos, por exemplo, ao escrever 123456789, sai 1133557799, não aparecem os pares, e ao escrever, ABCD, sai ACCE, se alguém poder ajudar já agradeço.

Cara, estou com o mesmo problema com o 18F4550.. com o 16F877A funciona normal, mas com o 18F só fica os quadradinhos no display. Já me disseram q tem algo a ver com o clock do 18F4550 q é diferente do 16F877A. 

Não uso MPLAB e sou iniciante no CCS, mas o que posso te dizer é:

1) ligue a saida dos capacitores do clock diretamente no GND e não no capacitor de 470nF!

2) vc coloca nível lógico 1 no pino RS no seu código? dei uma olhada por cima e não vi. se não tiver, coloque para iniciar já com VCC!

Fiz algumas alterações no circuito antigo, o que postei antes não aparecia nenhum caractere, agora o problema é a falta dos números pares e de algumas letras, vou conferir a situação no nível lógico do RS na programação, e se for o caso será que já posso ligar vcc direto?

Já tá iniciando em nível alto mesmo, mas mesmo assim joguei vcc direto pra testar e travou, vou continuar testando aqui e postando os resultados.

no exemplo acima tentei escrever de 1 a 9 e olha o que saiu, o código é esse abaixo:                                

#include <p18f4550.h>
#include <delays.h>
#include<stdio.h>//Chama biblioteca stdio.h C18.
#include<string.h>//Chama biblioteca string.h C18.
#include "C:\Users\Dayvisson Barbosa\Desktop\Pic18\PIC18\biblioteca_lcd_2x16.h"
#include "C:\Users\Dayvisson Barbosa\Desktop\Pic18\PIC18\config_PIC18F4550.h"
#define Fosc 20

void gera_atraso_segundos(unsigned char atraso)
{
do
{
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
atraso--;
}
while(atraso>0);
}

void main()
{
unsigned char dado_lido;
ADCON1=0b00000111;//Todas as portas A do PIC como digital(desliga os conversores a/d)
TRISA=0b00011111;//RA0 a RA4 - entrada e RA5 a RA6 - saída
TRISB=0b11100111;//RB0,RB1,RB2,RB5,RB6 e RB7 - entrada e RB3 a RB4 - saída
TRISC=0b10111111;//RC0 a RC5 e RC7 - entrada e RC6 - saída
TRISD=0b00000000;//RD0 a RD7 - saída
TRISE=0b00000000;//RE0 a RE2 - saída

PORTD=0x00;//Coloca a porta D em 0V
PORTE=0x00;//Coloca a porta E em 0V

lcd_inicia(0x28, 0x0F, 0x06);//inicializa o display com 4 linhas de dados
lcd_LD_cursor(0);//desliga o cursor
lcd_limpa_tela();
lcd_posicao(1,16);

while(1)//loop infinito
{
//lcd_escreve_dado('Q');
imprime_string_lcd("0123456789");
//dado_lido=lcd_le_dado();
//lcd_escreve_dado(dado_lido);

gera_atraso_segundos(20);


}
}

não há necessidade de usar lib externa pra lcd. se o CCS tem uma vantagem é justamente as libs que vem embutidas nele. acho q é problema na lib.

Estou utilizando MPLAB

foi mal, qual compilador c18?

eu migraria pro mikroC.

C18, ainda não utilizei mikroc!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço