Display LCD I2C
- Mauro Laurenti
-
- Moderatore
-
Less
Di più
11 Anni 11 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 Accesso o Crea un account a partecipare alla conversazione.
- igna_09
- Autore della discussione
- Nuovo Utente
-
Less
Di più
- Messaggi: 18
- Ringraziamenti ricevuti 0
11 Anni 11 Mesi fa - 11 Anni 11 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 11 Anni 11 Mesi fa da igna_09.
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Pinna
-
- Moderatore
-
Less
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 11 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 Accesso o Crea un account a partecipare alla conversazione.
- Pinna
-
- Moderatore
-
Less
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 11 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 Accesso o Crea un account a partecipare alla conversazione.
- Pinna
-
- Moderatore
-
Less
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 11 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 Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- Comunicazione in seriale, mediante tranceiver max4...
- da Mauro Laurenti
-
- Gestione di una tastiera a matrice
- da FABRIZIO
-
- TIMER1 e MikroC - numeri decimali e numeri binari
- da Mauro Laurenti
-
- STM32F103C8T6 PWM
- da elpablito
-
- Caricabatteria per batteria al litio 12V
- da cirifischio
