Display LCD I2C
10 Anni 5 Mesi fa #11
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Display LCD I2C
Ciao,
sarebbe di aiuto se potessi postare anche il codice.
per poter usare il modulo I2C sono importanti anche le impostazioni software del modulo e delle relative porte, ovvero pin per le linee SDA e SCL.
Altro dato importante e' il cristallo che stai usando, ovvero la sua frequenza.
Presumo che l'hardware, in altre applicazioni stia funzionando correttamente.
I collegamenti elettrici sono corretti?
Se fai uso dei di fili volanti accerati di avere anche Vcc e GND oltre a SCL e SDA.
Saluti,
Mauro
sarebbe di aiuto se potessi postare anche il codice.
per poter usare il modulo I2C sono importanti anche le impostazioni software del modulo e delle relative porte, ovvero pin per le linee SDA e SCL.
Altro dato importante e' il cristallo che stai usando, ovvero la sua frequenza.
Presumo che l'hardware, in altre applicazioni stia funzionando correttamente.
I collegamenti elettrici sono corretti?
Se fai uso dei di fili volanti accerati di avere anche Vcc e GND oltre a SCL e SDA.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
Riduci
Di più
10 Anni 5 Mesi fa - 10 Anni 5 Mesi fa #12
da igna_09
Risposta da igna_09 al topic Display LCD I2C
l'ho fatto e continua a non funzionare
Allora il codice è:
#include <p18f4550.h>
#include "LCD_44780_I2C.h"
#include "LCD_44780_I2C.c"
#include "PCF8574.c"
#include "PCF8574.h"
#include "delay.c"
#include "delay.h"
#include <i2c.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
#pragma config PLLDIV = 1
//OSC = 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 = 0xFF;
// Imposto PORTC tutti ingressi
LATC = 0x00;
TRISC = 0xFF;
// Imposto PORTD tutti uscite
LATD = 0x00;
TRISD = 0xFF;
// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;
delay_ms(50);
/*LED1=0;
LED2=0;
LED3=0;
LED4=0;*/
// Inizializza il modulo I2C a 100KHz @20MHz
OpenI2C(MASTER, SLEW_OFF);
SSPADD = 49;
delay_ms(50);
OpenLCD (20);
BacklightLCD(TURN_ON_LED);
WriteCharLCD('c');
WriteStringLCD("Hello World");
// Ciclo infinito
while (1) {
}
}
come si può notare il codice è lo stesso dell'articolo scritto sul sito... in più ho aggiunto PLLDIV per disattivare il pll in quanto il divisore in questo modo è impostato a 1. Per la linea SCL utilizzo il pin N°34 mentre per la linea SDA il pin n°33. il quarzo utilizzato lavora a 20Mhz. Tutti i componenti fino ad ora sono stati utilizzati senza problema ed i collegamenti li ho verificati diverse volte. Illuminatemi voi!!
Vi ringrazio per l'aiuto che mi state dando.
Allora il codice è:
#include <p18f4550.h>
#include "LCD_44780_I2C.h"
#include "LCD_44780_I2C.c"
#include "PCF8574.c"
#include "PCF8574.h"
#include "delay.c"
#include "delay.h"
#include <i2c.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
#pragma config PLLDIV = 1
//OSC = 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 = 0xFF;
// Imposto PORTC tutti ingressi
LATC = 0x00;
TRISC = 0xFF;
// Imposto PORTD tutti uscite
LATD = 0x00;
TRISD = 0xFF;
// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;
delay_ms(50);
/*LED1=0;
LED2=0;
LED3=0;
LED4=0;*/
// Inizializza il modulo I2C a 100KHz @20MHz
OpenI2C(MASTER, SLEW_OFF);
SSPADD = 49;
delay_ms(50);
OpenLCD (20);
BacklightLCD(TURN_ON_LED);
WriteCharLCD('c');
WriteStringLCD("Hello World");
// Ciclo infinito
while (1) {
}
}
come si può notare il codice è lo stesso dell'articolo scritto sul sito... in più ho aggiunto PLLDIV per disattivare il pll in quanto il divisore in questo modo è impostato a 1. Per la linea SCL utilizzo il pin N°34 mentre per la linea SDA il pin n°33. il quarzo utilizzato lavora a 20Mhz. Tutti i componenti fino ad ora sono stati utilizzati senza problema ed i collegamenti li ho verificati diverse volte. Illuminatemi voi!!
Vi ringrazio per l'aiuto che mi state dando.
Ultima Modifica 10 Anni 5 Mesi fa da igna_09.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- igna_09
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 18
- Ringraziamenti ricevuti 0
10 Anni 5 Mesi fa #13
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Display LCD I2C
se posti il codice, domani mattina a mente sveglia, gli do un'occhiata...
è veramente strano, sul prototipo che feci a suo tempo, tutto il sistema ha funzionato al primo al primo colpo
Marcello
è veramente strano, sul prototipo che feci a suo tempo, tutto il sistema ha funzionato al primo al primo colpo
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
10 Anni 5 Mesi fa #14
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Display LCD I2C
da uno sguardo durato 10 secondi, guarda cosa hai scritto:
// Imposto PORTD tutti uscite
LATD = 0x00;
TRISD = 0xFF;
ti sembrano uscite? metti TRISD = 0x00 !!!!!!
facci sapere
Marcello
p.s. domani, a mente fresca, te lo controllo meglio, ora sono troppo stanco e potrebbe sfuggirmi qualche altra cosa. Come indirizzo metti 0x20
// Imposto PORTD tutti uscite
LATD = 0x00;
TRISD = 0xFF;
ti sembrano uscite? metti TRISD = 0x00 !!!!!!
facci sapere
Marcello
p.s. domani, a mente fresca, te lo controllo meglio, ora sono troppo stanco e potrebbe sfuggirmi qualche altra cosa. Come indirizzo metti 0x20
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
10 Anni 5 Mesi fa #15
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Display LCD I2C
la stessa cosa era successa anche a me, ho dovuto combattere un'ora prima di accorgemene. E sai perchè? per il mio vizio di fare troppi copia incolla
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.