LCD + CSS + 16f628A

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

LCD + CSS + 16f628A

Mensagempor sopa » 02 Mai 2008 09:34

Pessoal,
primeiramente desculpem pela minha noobice,

estou iniciando agora no mundo dos microcontroladores e não consegui nem compilar um programa q inclua a biblioteca do LCD que vem com o CCS.
estão dando mais ou menos uns 100 erros....
não faço idéia de onde eu esteja errando.
LCD: 1x16 caracteres, controlador HD44780
PIC: 16f628A
CCS: 4.0.13

Programa principal:
cpp code
#include "C:\pj1\to desistindo\last.h"
#include <LCD.C>


#define LCD_TYPE 1
#include <lcd.c>
void main()
{
lcd_init();

lcd_putc("\fReady...\n");

while (TRUE) {
k=kbd_getc();
if(k!=0)
if(k=='*')
lcd_putc('\f');
else
lcd_putc(k);
}


setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
setup_oscillator(osc_4mhz);

// TODO: USER CODE!!

}


Agradeço por qualquer ajuda!!!!!!!!!!!!!!!
sopa
Bit
 
Mensagens: 17
Registrado em: 04 Abr 2008 00:48

Re: LCD + CSS + 16f628A

Mensagempor andre_luis » 02 Mai 2008 09:56

sopa,

Esse teu programa tá meio esquizito.
Voce configura os registradores depois do main().

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor sopa » 02 Mai 2008 10:17

obrigado pela identificação da minha oreiada.. rs

eu coloquei os registradores antes do main, mas ainda continuam dando mais de 100 erros....

o programa localiza os erros no lcd.c, uma biblioteca do próprio ccs, isso q tá me deixando intrigado....

lista de erros:
Código: Selecionar todos
>>> Warning 225 "last.c" Line 3(17,19): Duplicate #define
>>> Warning 225 "C:\Program Files\PICC\drivers\lcd.c" Line 39(22,27): Duplicate #define
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 42(20,31): More info:   First Declaration of lcd_pin_map
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 42(20,31): Identifier is already used in this scope
*** Error 36 "C:\Program Files\PICC\drivers\lcd.c" Line 47(27,28): Expecting a ; or ,
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 47(28,29): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 48(9,10): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 48(11,14): Expecting a (
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 65(12,27): More info:   First Declaration of LCD_INIT_STRING
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 65(12,27): Identifier is already used in this scope
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(28,29): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(29,30): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(31,32): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(33,34): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(34,38): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(39,40): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(41,42): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(50,51): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(51,53): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(54,55): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(55,56): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(56,57): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(58,61): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(61,62): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(63,64): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(64,65): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(66,67): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(67,68): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 65(68,69): Expecting a declaration
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 73(36,45): More info:   First Declaration of LCD_WRITE
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 73(36,45): Identifier is already used in this scope
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(38,39): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(39,40): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(40,41): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(41,42): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(42,43): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(43,44): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(44,45): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(45,46): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(46,47): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(47,48): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(48,49): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 73(49,50): Expecting a declaration
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 74(35,43): More info:   First Declaration of LCD_READ
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 74(35,43): Identifier is already used in this scope
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(37,38): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(38,39): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(39,40): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(40,41): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(41,42): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(42,43): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(43,44): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(44,45): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(45,46): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(46,48): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(48,49): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 74(49,50): Expecting a declaration
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 78(6,19): More info:   First Declaration of lcd_read_byte
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 78(22,23): Identifier is already used in this scope
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 81(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 81(14,16): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 81(16,17): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 81(17,18): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\drivers\lcd.c" Line 82(20,21): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 82(22,23): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 83(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 83(18,24): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 83(20,21): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 83(21,22): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\drivers\lcd.c" Line 84(20,21): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 84(22,23): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 85(12,16): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 85(14,17): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 85(18,22): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 86(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 86(18,24): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 86(20,21): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 86(21,22): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\drivers\lcd.c" Line 87(20,21): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 87(22,23): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 88(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 88(18,24): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 88(20,21): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 88(21,22): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\drivers\lcd.c" Line 89(16,17): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 89(18,19): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 90(11,14): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 90(13,16): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 90(17,21): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 91(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 91(18,24): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 91(20,21): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 91(21,22): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(7,13): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(13,14): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(15,16): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 93(16,20): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(22,23): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(23,24): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(25,26): Expecting a declaration
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 93(27,30): Expecting a (
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 93(31,32): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\drivers\lcd.c" Line 94(1,2): Expecting a declaration
--- Info 300 "C:\Program Files\PICC\drivers\LCD.C" Line 97(6,21): More info:   First Declaration of lcd_send_nibble
*** Error 31 "C:\Program Files\PICC\drivers\lcd.c" Line 97(32,33): Identifier is already used in this scope
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 98(7,10): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 98(16,20): Expecting a (
*** Error 48 "C:\Program Files\PICC\drivers\lcd.c" Line 98(18,19): Expecting a (
      100 Errors,  2 Warnings.



:shock: :shock: :shock: :shock: :shock:
obrigado!
sopa
Bit
 
Mensagens: 17
Registrado em: 04 Abr 2008 00:48

Mensagempor andre_luis » 02 Mai 2008 10:21

As mensagens aparentam ser falta de cabeçalho.
Voce incluiu o LCD.C , 2 vezes (???)
Aparentemente tá faltando algum LCD.H
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor ze » 02 Mai 2008 10:28

obs:
seu prog tem 2 include lcd, 2 lcdinit.
configurar regs DENTRO (início) do main()
abrç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor sopa » 02 Mai 2008 10:47

Obrigado pela ajuda!!!
corrigi os problemas e cessaram os erros, mas ainda não funciona.. rsrsrsrsrsrs

Código: Selecionar todos
#include "C:\pj1\to desistindo\last.h"
#include <LCD.C>
#use fast_io(b)


void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   lcd_init();
   setup_oscillator(osc_4mhz);

   lcd_init();

   lcd_putc("\fReady...\n");


   // TODO: USER CODE!!



vou pesquisar mais aqui pra ver se descubro onde estou errando...
obrigado pessoal!!!
sopa
Bit
 
Mensagens: 17
Registrado em: 04 Abr 2008 00:48

Mensagempor buiz » 02 Mai 2008 13:36

Olá Sopa,
Tenta a biblioteca do Fabio:

Aqui esta:

cpp code
/************************************************************************/
/* MOD_LCD.C - Biblioteca de manipulação de módulo LCD */
/* */
/* Autor: Fábio Pereira */
/* */
/************************************************************************/

// As definições a seguir são utilizadas para acesso aos pinos do display
// caso o pino RW não seja utilizado, comente a definição lcd_rw
#ifndef lcd_enable
#define lcd_enable pin_D0 // pino enable do LCD
#define lcd_rs pin_D1 // pino rs do LCD
#define lcd_d4 pin_D4 // pino de dados d4 do LCD
#define lcd_d5 pin_D5 // pino de dados d5 do LCD
#define lcd_d6 pin_D2 // pino de dados d6 do LCD
#define lcd_d7 pin_D3 // pino de dados d7 do LCD
#endif

#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 linhas
#define lcd_seg_lin 0x40 // Endereço da segunda linha na RAM do LCD

// a constante abaixo define a seqüência de inicialização do módulo LCD
byte CONST INI_LCD[4] = {0x20 | (lcd_type << 2), 0xf, 1, 6};


byte lcd_le_byte()
// lê um byte do LCD (somente com pino RW)
{
byte dado;
// configura os pinos de dados como entradas
input(lcd_d4);
input(lcd_d5);
input(lcd_d6);
input(lcd_d7);
// se o pino rw for utilizado, coloca em 1
#ifdef lcd_rw
output_high(lcd_rw);
#endif
output_high(lcd_enable); // habilita display
dado = 0; // zera a variável de leitura
// lê os quatro bits mais significativos
if (input(lcd_d7)) bit_set(dado,7);
if (input(lcd_d6)) bit_set(dado,6);
if (input(lcd_d5)) bit_set(dado,5);
if (input(lcd_d4)) bit_set(dado,4);
// dá um pulso na linha enable
output_low(lcd_enable);
output_high(lcd_enable);
// lê os quatro bits menos significativos
if (input(lcd_d7)) bit_set(dado,3);
if (input(lcd_d6)) bit_set(dado,2);
if (input(lcd_d5)) bit_set(dado,1);
if (input(lcd_d4)) bit_set(dado,0);
output_low(lcd_enable); // desabilita o display
return dado; // retorna o byte lido
}

void lcd_envia_nibble( byte dado )
// envia um dado de quatro bits para o display
{
// coloca os quatro bits nas saidas
output_bit(lcd_d4,bit_test(dado,0));
output_bit(lcd_d5,bit_test(dado,1));
output_bit(lcd_d6,bit_test(dado,2));
output_bit(lcd_d7,bit_test(dado,3));
// dá um pulso na linha enable
output_high(lcd_enable);
output_low(lcd_enable);
}


void lcd_envia_byte( boolean endereco, byte dado )
{
// coloca a linha rs em 0
output_low(lcd_rs);
// aguarda o display ficar desocupado
//while ( bit_test(lcd_le_byte(),7) ) ;
// configura a linha rs dependendo do modo selecionado
output_bit(lcd_rs,endereco);
delay_us(100); // aguarda 100 us
// caso a linha rw esteja definida, coloca em 0
#ifdef lcd_rw
output_low(lcd_rw);
#endif
// desativa linha enable
output_low(lcd_enable);
// envia a primeira parte do byte
lcd_envia_nibble(dado >> 4);
// envia a segunda parte do byte
lcd_envia_nibble(dado & 0x0f);
}


void lcd_ini()
// rotina de inicialização do display
{
byte conta;
output_low(lcd_d4);
output_low(lcd_d5);
output_low(lcd_d6);
output_low(lcd_d7);
output_low(lcd_rs);
#ifdef lcd_rw
output_high(lcd_rw);
#endif
output_low(lcd_enable);
delay_ms(15);
// envia uma seqüência de 3 vezes 0x03
// e depois 0x02 para configurar o módulo
// para modo de 4 bits
for(conta=1;conta<=3;++conta)
{
lcd_envia_nibble(3);
delay_ms(5);
}
lcd_envia_nibble(2);
// envia string de inicialização do display
for(conta=0;conta<=3;++conta) lcd_envia_byte(0,INI_LCD[conta]);
}

void lcd_pos_xy( byte x, byte y)
{
byte endereco;
if(y!=1)
endereco = lcd_seg_lin;
else
endereco = 0;
endereco += x-1;
lcd_envia_byte(0,0x80|endereco);
}

void lcd_escreve( char c)
// envia caractere para o display
{
switch (c)
{
case '\f' : lcd_envia_byte(0,1);
delay_ms(2);
break;
case '\n' :
case '\r' : lcd_pos_xy(1,2);
break;
case '\b' : lcd_envia_byte(0,0x10);
break;
default : lcd_envia_byte(1,c);
break;
}
}


void limpa ()

{
lcd_pos_xy(0,0);
}

char lcd_le( byte x, byte y)
// le caractere do display
{
char valor;
// seleciona a posição do caractere
lcd_pos_xy(x,y);
// ativa rs
output_high(lcd_rs);
// lê o caractere
valor = lcd_le_byte();
// desativa rs
output_low(lcd_rs);
// retorna o valor do caractere
return valor;
}


Funciona 100%.

Abraços Buiz.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor sopa » 02 Mai 2008 15:07

Obrigado!!!!!!!!!!
Valeu mesmo!!!!!!!!!!!!!!
vou postar os resusltados aqui!
Abraços
sopa
Bit
 
Mensagens: 17
Registrado em: 04 Abr 2008 00:48


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x