- Messaggi: 1222
- Ringraziamenti ricevuti 104
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?
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
- Autore della discussione
- Visitatori
11 Anni 8 Mesi fa #2
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
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
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
- Moderator
Riduci
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
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
- Autore della discussione
- Visitatori
11 Anni 8 Mesi fa #4
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
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
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
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
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
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.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.