Ir ao conteúdo

Erro ao simular pic18f1220 controlando lcd!!!


PAT0LINO

Posts recomendados

Postado

olá galrinha!

estava tentando fazer uma simualção no proteus, com um circuito bem simples, apenas escrever no lcd usando um pic 18f1220...mas nem algo simples assim, eu consegui :( ...

não sei se consegui colocar a imagem aqui na mensagem, por isso coloquei na net, o codigo em c que fiz, coloquei tambem o arquivo para abrir com o proteus, e tmb um print screen do erro q deu....

ta ai o link dos arquivos...

http://sharex.xpg.com.br/files/7521144588/ajuda_.rar.html

pode baixar ai q é seguro!

o q quero fazer, é algo simples...quero fazer um termometro q le a porta analogico digital do pic (pino A0 que usei), e joga o valor lido no display lcd...

só que aparece um erro no proteus, que nao entendi...

na simulação, coloquei um potenciometro na entrada analogica, e queria ver o resultado no lcd...pra testar, fiz a leitura pelo virtual terminal do proteus (saida serial, usando protocolo rs232)...

me da um help ai galera...se eu não tiver sido claro com minha duvida, é só fala..hauahuah

valeu ai moçada!

post-560715-13884958364498_thumb.jpg

Postado

Seu código estava muito confuso e equivocado, então modifiquei para uma versao mais enxuta.

Veja que você define no programa o PIC trabalhando a 4Khz! Isso é muito pouco. O comum é acima de 4Mhz. Tinha muitos fuses declarados. Para um programa simples de exemplo, não é necessário todos.

Outra coisa, quando for modificar os pinos usados pelo LCD faça no LCD_Flex e nao no codigo principal pois está dando erro na simulação.

Então, ficou assim:

Circuito modificado:

semttuloyz.png

Código mais enxuto:

#include <18F1220.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOMCLR

#use delay(clock=12000000)

#use rs232(baud=9600, xmit=PIN_B0,rcv=PIN_B2)
#include <lcd_flex.c>

int sensor,i;
long soma=0;

void main()
{
lcd_init();

setup_adc_ports(sAN0|VSS_VDD);
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us (20);

while(true)
{
for (i=1;i<=10;i++)
{
sensor=read_adc();
delay_ms(10);
soma=soma+sensor;
}
sensor=soma/10;
delay_ms(10);
printf("valor A/D = %u\n\r", sensor);
soma=0;

printf(lcd_putc,"\foi");
delay_ms(100);
}
}

Falou

Postado

q isso heim!!!:lol:

você é bom mesmo heim matheus...

deu certim mesmo...

mas ainda uma pergunta que nao quer calar...

como não declarei nada quanto ao tipo de clock (interno, externo ou sei la o que)

na hora de montar o circuito de verdade...nao saberia o q fazer...

e se eu declarar #fuses intrc_io , q seria o clock interno do pic, da pal na simulação, o mesmo erro de antes...

e outra coisa...não preciso declarar nada daqueles fuses que eu havia declarado???

é tudo automatico já?

valeu ai mestre matheus.

Postado

Patolino, me desculpe mas não sei porque o código não saiu completo...

Acredito que copiei errado e nao verifiquei o post.

Já corrigi ali em cima. Outra coisa: você precisa sempre declarar o PIC e os fuses. É que o proteus engole muita coisa e nao precisa disso nele.

Sobre o #FUSES INTRC_IO, se esse PIC tiver clock interno, só adiciona lá que dá certo sim e não se esqueça de colocar o clock interno correto. Tá lá no datasheet.

Falou

Postado

ou matheus obrigado ai cara, por estar me ajudando heim...

então...coloquei o #fuses intrc_io

e setup_oscillator(osc_4mhz); pois este pic permite mais de um tipo de oscilador interno...ai escolhi o de 4mhz...certo?

mas ai aparece o erro mostrado na figura anexada...

agora ta ate simulando certim, só q da esse erro ai, fala q escolhi um clock de quase 400 GHz...hauahuah

estranho né?

sabe o q fiz de errado?

to colocando o link ai do pragrama novo, com a simulação

http://sharex.xpg.com.br/files/5133051360/ajuda2_.rar.html

ve se da o mesmo erro ai com você...se der, tenta ve onde errei...

valeu mesmo ai matheus...

post-560715-13884958368937_thumb.jpg

Postado

Patolino, vi aqui e me parece que não é erro. São apenas informações.

Na primeira, ele diz que o clock que você especificou na simulaçao será ignorado no modo INTRC_IO.

Na segunda, diz que o comando não foi modelado NO PROTEUS.

Na terceira é a mesma da primeira.

São apenas avisos. Monte o circuito real e teste.

Não confie apenas no simulador.

Falou

Postado

entendi cara...

vou montar o circuito de verdade, e ver no que vai dar...

pow tava vendo q você é de SJDR...estudo na universidade de la...hauha:lol:

valeu ai matheus, resolveu o topico sozinho heim...hauha

tópico resolvido!:D

  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!