Problemi con LCD 16x2

11 Anni 8 Mesi fa #1 da Alex68
Problemi con LCD 16x2 è stato creato da Alex68
Ciao

Sto provando da giorni ad usare un LCD con la libreia di Mauro ma mi da sempre l'errore "Error - could not find definition of symbol 'ShiftLCD' in file './Prova_lcd.o'." nonostante che sia i files LCD_44780.h - LCD_44780.c - delay.h - delay.c siano presenti nella stessa directory del progetto.
Inoltre se commento la riga "ShiftLCD(RIGHT,2);" l'errore cambia in "Error - could not find definition of symbol 'WriteStringLCD' in file './Prova_lcd.o'."

Se commento la riga " WriteStringLCD("Hello World");" l'errore cambia in "Error - could not find definition of symbol 'OpenLCD' in file './Prova_lcd.o'."

come se non trovasse i files inclusi.



di seguito il programma di prova

#include <p18f2550.h>

#define LCD_DEFAULT
#include "LCD_44780.h"

#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF

#pragma config MCLRE = ON
#pragma config PWRT = OFF
#pragma config BOR = OFF
#pragma config PLLDIV = 1
#pragma config DEBUG = OFF
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config VREGEN = OFF
#pragma config CCP2MX = OFF
#pragma config LPT1OSC = OFF
#pragma config STVREN = OFF
//FOSC= HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici

void main (void){

// Imposto PORTA tutti ingressi
LATA = 0x00;
TRISA = 0xFF;

// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0x00;

// Imposto PORTC tutti ingressi
LATC = 0x00;
TRISC = 0XFF;

// Inizializzo il display LCD con quarzo a 20MHz

OpenLCD (20);

WriteStringLCD("Hello World");

//BacklightLCD (TURN_ON_LED );

ShiftLCD(RIGHT,2);

// Ciclo infinito
while (1) {

}
}

Le conessioni del display sono così configurate
linea E su RB0
linea RS su RB1
linea D4 su RB4
linea D5 su RB5
linea D6 su RB6
linea D7 su RB7

linea R/W collegato a massa
linea retoilluminazione NC

Ho modificato la parte della configurazione della porta del file "LCD_44780.h" come di seguito:

#include <p18cxxx.h>
#include "delay.h"
#include <ctype.h>
......
......
.......
#define LCD_D4 LATBbits.LATB4
#define LCD_D5 LATBbits.LATB5
#define LCD_D6 LATBbits.LATB6
#define LCD_D7 LATBbits.LATB7

#define LCD_RS LATBbits.LATB1
#define LCD_E LATBbits.LATB0

#define LCD_RW LATBbits.LATB2
#define LCD_LED LATBbits.LATB3

Quarzo esterno da 20MHz

Libreria Lauartec "LCD_44780.h"
Version : 1.1
Date : 4/9/2006
Last Update: 09/03/2012

Quando alimento il tutto mi visualizza solo una sequenza di blocchi neri sulla prima riga

Dove sbaglio?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Alex68
  • Visitatori
  • Visitatori
11 Anni 8 Mesi fa #2 da StefA
Risposta da StefA al topic Problemi con LCD 16x2
vista l'ora e lo sguardo rapido magari mi sono perso qualcosa..ma come fai a provare il programma sul display se ti da errore e non compila?
per risolvere quell'errore prova ad includere i file:
LCD_44780.h - LCD_44780.c - delay.h - delay.c
anche a sinistra, nel progetto.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 8 Mesi fa #3 da Alex68
Risposta da Alex68 al topic Problemi con LCD 16x2
ciao

ho fatto come mi hai detto e ho i files anch a sx del progetto e ora compila e l'LCD funziona. inoltre mi sono accorto che avevo modificato erroneamente i #define del file "LCD_44780.h" e li ho corretti come segue:

#define LCD_D0 LATBbits.LATB4
#define LCD_D1 LATBbits.LATB5
#define LCD_D2 LATBbits.LATB6
#define LCD_D3 LATBbits.LATB7

#define LCD_RS LATBbits.LATB1
#define LCD_E LATBbits.LATB0

#define LCD_RW LATBbits.LATB2
#define LCD_LED LATBbits.LATB3

ora però mi compaiono na serie di warning

C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:66:Warning [2105] LCD_D0 has been not defined, LATDbits.LATD4 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:67:Warning [2105] LCD_D1 has been not defined, LATDbits.LATD5 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:68:Warning [2105] LCD_D2 has been not defined, LATDbits.LATD6 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:69:Warning [2105] LCD_D3 has been not defined, LATDbits.LATD7 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:70:Warning [2105] LCD_RS has been not defined, LATDbits.LATD2 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:71:Warning [2105] LCD_E has been not defined, LATDbits.LATD3 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:72:Warning [2105] LCD_RW has been not defined, LATDbits.LATD1 will be used
C:\Documents and Settings\a\Desktop\Prov_Pic_18\LCD\LCD_44780.h:73:Warning [2105] LCD_LED has been not defined, LATCbits.LATC1 will be used


cosa manca ancora?

grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Alex68
  • Visitatori
  • Visitatori
11 Anni 8 Mesi fa #4 da StefA
Risposta da StefA al topic Problemi con LCD 16x2
vado a memoria...
quei warning sono per richiamare l'attenzione, e ti dicono che se non imposti tu i piedini del pic per il display, verranno settati di default come poi ti scrive.
Se utilizzi i file di libreria di mauro .h e .lib, il programma legge la riga:
#define LCD_DEFAULT
e non ti scrive i warning perché gli dici che sai quello che stai facendo.

Se invece utilizzi i sorgenti ed includi i file .h e .c nel progetto, quel warning rimane anche se inserisci la riga sopra (#define LCD_DEFAULT). Se ti funziona tutto bene, puoi lasciare che ti scriva i warning o andare deltro il file .h e togliere la parte relativa all'avviso.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 8 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Problemi con LCD 16x2
scrivendo #define LCD_DEFAULT

prima dei file .h e .c dovrebbe funzionare in ogni modo.

...altrimenti ho sbagliato qualcosa!
Vorrei comunque ritoccare tale funzione e magari avere una sola warning che spaventi meno! :)

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login