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 ?
Tags:
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:
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
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por