Boa noite colegas,

Estou tentando imprimir no lcd barras com nivel caracteres customizados, estou utilizando o comando

lcd_set_cgram_char(0,image);

onde o mesmo está acusando erros(em negrito).

Alguém pode me ajudar ?

Exibições: 880

Responder esta

Respostas a este tópico

Oi F, boa noite.

As suas informações estão muito vagas.

Qual é o compilador que você está usando?  Hi-tech, CCS, mikroc, etc?

Que tipo de erro (error message) esta sendo apresentado?

Você esta usando um LCD genérico 16X2 ?

Que tal anexar o arquivo do seu code?

 Ser for CCS   -------->   lcd_set_cgram_char(w, *p)   Write a custom character to the CGRAM.

  

https://tyekk.googlecode.com/files/LCD.C

// write a custom character to the ram
// which is 0-7 and specifies which character array we are modifying.
// ptr points to an array of 8 bytes, where each byte is the next row of
// pixels. only bits 0-4 are used. the last row is the cursor row, and
// usually you will want to leave this byte 0x00.
void lcd_set_cgram_char(unsigned int8 which, unsigned int8 *ptr)

Rui

Obrigado Rui,

Estou utilizando compilador CCS.

aparecendo mensagem erro: undefined dentifier.

lcd 16x2  PART NUMBER LCD: MGD1602B-NS(W)-BBS

segue codigo:

#include <18f4550.h>
#device adc=10 

#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

#use delay(clock=48000000)

#include <lcd.c>


int image[8]={
0b00000,
0b01110,
0b00110,
0b00000,
0b11111,
0b11111,
0b00000,
0b01111
};

int16 q1,soma;

void main()

{
lcd_init();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_8); 
set_adc_channel(0);
delay_us (20);
while (TRUE) 
{
q1 = read_adc();
printf (lcd_putc,"\fAD:%ld", q1);
delay_ms (200);

// soma = read_EEPROM (0);
if (q1 > 200)
{
soma++;
//write_eeprom(0,soma);
lcd_set_cgram_char(0,image);
printf(lcd_putc,"eu %c vc",0);
}
}
}

Oi F, 

onde você definiu "image" como uma array, então ele tem que ser tratada como array.

 int image[8]

Você pode gravar até 8 novos caracteres na RAM do LCD, então terá que usar um "for"

para ir de 0 até 7 na sua array image[x].  x indo de 0 a até 7.

Veja se este code funciona:

http://pastebin.com/ghWXsSwR

Rui

ficaria assim?

lcd_set_cgram_char(image[0]);

Oi F,

veja no code que anexei.  É o seu code com a modificação 

para carregar os 8 Bytes da RAM.

Rui

ok testei e está dando erro nesta linha:

for (int x = 0; x;8;x++)

acusou 4 erros em negrito.

Oi F, 

eu errei ao escrever esta linha.

no lugar do segundo ponto e virgula deveria ter um <.

a linha correta é assim:

for (int x = 0; x<8;x++)

Corrija e teste.

Rui

ola,

testei o erro permanece na linha:

for (int x = 0; x<8;x++)

o mesmo erro.

Oi F, bom dia,

Não sei o que ocorre com o seu code, mas pequei o code que te enviei

e rodei no meu compilador, e não deu nenhum erro. 

Copilou corretamente.

Mas para evitar qq dúvida ainda mudei o "x" para  " i ".

seque o arquivo com o novo code, o hex gerado e o list.

Rui

Anexos

Oi F, bom dia,

como parece que seu compilador está com problema,  eu compilei o code acrescentando

aquele delay de 500ms e modificando o de 200ms para 500ms.

seguem arquivos.

Rui

Anexos

Obrigado,vou testar dps te flo.

flww

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço