Ciao a tutti,
innanzi tutto buon anno a tutti :)
Vi scrivo perché ho un problema con un lcd alfanumerico 16x2. Quando lo collego come da datasheet
(http://www.openhacks.com/uploadsproductos/eone-1602a1.pdf vedi pagina 4) mettendo però V0 a gnd l'lcd si accende ma mostra i dots della riga 2 mentre quelli della riga 1 restano tutti spenti.
Secondo voi l'lcd è danneggiato?
Per quale motivo ottengo questo strano comportamento?
Suggerimenti?
Saluti
Lcua 31989
problema con lcd 1602 blu
Moderatore:
Paolino
23 messaggi
• Pagina 1 di 3 • 1, 2, 3
0
voti
Il piedino di V0 è solo per contrasto.
L' LCD lo devo programmare, altrimenti visualizza solo porcherie. Mi era successo qualcosa di simile anche a me tempo fa, vedi questo thread: viewtopic.php?f=1&t=53382
Quello che ha visto quel display LCD prima che lo accendessi, me lo tengo per me.
Quindi, prova a programmarlo correttamente.

L' LCD lo devo programmare, altrimenti visualizza solo porcherie. Mi era successo qualcosa di simile anche a me tempo fa, vedi questo thread: viewtopic.php?f=1&t=53382
Quello che ha visto quel display LCD prima che lo accendessi, me lo tengo per me.
Quindi, prova a programmarlo correttamente.

0
voti
Ciao
lcua31989, ...
Prima però sarebbe meglio se tu riportassi lo schema, in FidoCadJ, di quello e di come hai collegato.
In alternativa, o contestualmente, cerca tra gli articoli di
Paolino; troverai utilissime informazioni in merito.
Probabilmente anche tra quelli di
TardoFreak.
Saluti
... si, forse.lcua31989 ha scritto:Suggerimenti?
Prima però sarebbe meglio se tu riportassi lo schema, in FidoCadJ, di quello e di come hai collegato.
In alternativa, o contestualmente, cerca tra gli articoli di
Probabilmente anche tra quelli di
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8982
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Ciao a tutti,
Si ho visto il thread ma non mi è servito ad un granchè purtoppo...
Ecco lo schema, che è solo una minima parte. Ho tolto il potenziometro/trimmer perché voglio sempre la luminosità alta e, quindi, l'ho collegato a massa.
Ho provato a fare il programma ma nada, non funziona nulla... In allegato la foto di ciò che appare
Allego anche il codice:
simo85 ha scritto:Il piedino di V0 è solo per contrasto.
L' LCD lo devo programmare, altrimenti visualizza solo porcherie. Mi era successo qualcosa di simile anche a me tempo fa, vedi questo thread: viewtopic.php?f=1&t=53382
Quello che ha visto quel display LCD prima che lo accendessi, me lo tengo per me.![]()
Quindi, prova a programmarlo correttamente.
Si ho visto il thread ma non mi è servito ad un granchè purtoppo...
WALTERmwp ha scritto:Ciaolcua31989, ...
... si, forse.lcua31989 ha scritto:Suggerimenti?
Prima però sarebbe meglio se tu riportassi lo schema, in FidoCadJ, di quello e di come hai collegato.
In alternativa, o contestualmente, cerca tra gli articoli diPaolino; troverai utilissime informazioni in merito.
Probabilmente anche tra quelli diTardoFreak.
Saluti
Ecco lo schema, che è solo una minima parte. Ho tolto il potenziometro/trimmer perché voglio sempre la luminosità alta e, quindi, l'ho collegato a massa.
Ho provato a fare il programma ma nada, non funziona nulla... In allegato la foto di ciò che appare
Allego anche il codice:
- Codice: Seleziona tutto
#include "__T6963C.h"
// T6963C module connections
char T6963C_dataPort at PORTH;
sbit T6963C_ctrlwr at LATJ2_bit;
sbit T6963C_ctrlrd at LATJ1_bit;
sbit T6963C_ctrlcd at LATJ0_bit;
sbit T6963C_ctrlrst at LATJ4_bit;
sbit T6963C_ctrlwr_Direction at TRISJ2_bit;
sbit T6963C_ctrlrd_Direction at TRISJ1_bit;
sbit T6963C_ctrlcd_Direction at TRISJ0_bit;
sbit T6963C_ctrlrst_Direction at TRISJ4_bit;
sbit T6963C_ctrlce at LATJ3_bit;
sbit T6963C_ctrlfs at LATJ6_bit;
sbit T6963C_ctrlmd at LATJ5_bit;
sbit T6963C_ctrlce_Direction at TRISJ3_bit;
sbit T6963C_ctrlfs_Direction at TRISJ6_bit;
sbit T6963C_ctrlmd_Direction at TRISJ5_bit;
sbit BacklightRed_Direction at TRISC2_bit;
sbit BacklightGreen_Direction at TRISC1_bit;
sbit BacklightBlue_Direction at TRISG0_bit;
sbit BacklightRed at LATC2_bit;
sbit BacklightGreen at LATC1_bit;
sbit BacklightBlue at LATG0_bit;
// End T6963C module connections
// Touch Panel module connections
sbit DriveA at LATG3_bit;
sbit DriveB at LATG4_bit;
sbit DriveA_Direction at TRISG3_bit;
sbit DriveB_Direction at TRISG4_bit;
// End Touch Panel module connections
// MMC module connections
sbit Mmc_Chip_Select at LATC0_bit; // for writing to output pin always use latch (PIC18 family)
sbit Mmc_Chip_Select_Direction at TRISC0_bit;
// eof MMC module connections
// MMC module connections
sbit Mmc_Card_Detect at PORTB.B5; // for writing to output pin always use latch (PIC18 family)
sbit Mmc_Card_Detect_Direction at TRISB5_bit;
// eof MMC module connections
sbit LCD_RS at RE7_bit;
sbit LCD_EN at RF1_bit;
sbit LCD_D4 at RF2_bit;
sbit LCD_D5 at RF3_bit;
sbit LCD_D6 at RF4_bit;
sbit LCD_D7 at RF5_bit;
sbit LCD_RS_Direction at TRISE7_bit;
sbit LCD_EN_Direction at TRISF1_bit;
sbit LCD_D4_Direction at TRISF2_bit;
sbit LCD_D5_Direction at TRISF3_bit;
sbit LCD_D6_Direction at TRISF4_bit;
sbit LCD_D7_Direction at TRISF5_bit;
char txt1[] = "mikroElektronika";
char txt2[] = "EasyPIC6";
char txt3[] = "Lcd4bit";
char txt4[] = "example";
char i; // Loop variable
void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}
// Main. Uncomment the function(s) to test the desired operation(s)
void main() {
int i = 0;
char mmcError = 1;
TRISA = 0B00101111;
PORTA = 0B00000000;
LATA = 0B00000000;
TRISB = 0B11100011;
PORTB = 0B00000000;
LATB = 0B00000000;
TRISC = 0B01011000;
PORTC = 0B00000000;
LATC = 0B00000000;
TRISD = 0B00000000;
PORTD = 0B00000000;
LATD = 0B00000000;
TRISE = 0B10000000;
PORTE = 0B00000000;
LATE = 0B00000000;
TRISF = 0B00000000;
PORTF = 0B00000000;
LATF = 0B00000000;
TRISG = 0B00000100;
PORTG = 0B00000000;
LATG = 0B00000000;
TRISH = 0B00000000;
PORTH = 0B00000000;
LATH = 0B00000000;
TRISJ = 0B00000000;
PORTJ = 0B00000000;
LATJ = 0B00000000;
ANCON0 = 0b00010011;
ANCON1 = 0;
ANCON2 = 0;
RCON.IPEN = 0; //prority interrupt disable
INTCON.GIE = 1; //Interrupts enable as high priority
INTCON.PEIE = 1; //Interrupts on the peripheral as low priority
INTCON2.RBPU =1; //Disable pull-up resistor on the PORTB
PIE3.RC2IE = 1; //Receive buffer interrupt enable
Mmc_Chip_Select = 0;
Mmc_Chip_Select_Direction = 0;
Mmc_Card_Detect_Direction = 1;
T6963C_ctrlce_Direction = 0;
T6963C_ctrlce = 0; // Enable T6963C
T6963C_ctrlmd_Direction = 0;
T6963C_ctrlmd = 0; // Column number select
T6963C_ctrlfs_Direction = 0;
T6963C_ctrlfs = 0; // Wide Font
BacklightRed_Direction = 0; // Set backlight signals as outputs
BacklightGreen_Direction = 0;
BacklightBlue_Direction = 0;
BacklightRed = 0; // Turn on Red component of back light
BacklightGreen = 0; // Turn on Green component of back light
BacklightBlue = 0; // Turn on Blue component of back light
// Initialize T6963C
T6963C_init(240, 128, 8);
T6963C_graphics(1);
T6963C_text(1);
T6963C_cursor(0);
T6963C_panelFill(0);
T6963C_write_text("MMC Example", 8, 6, 1);
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,6,txt3); // Write text in first row
Lcd_Out(2,6,txt4); // Write text in second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,5,txt2); // Write text in second row
Delay_ms(2000);
// Moving text
for(i=0; i<4; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
while(1) { // Endless loop
for(i=0; i<8; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<8; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}
0
voti
Il display credo funzioni correttamente, in difetto di una inizializzazione; quello che si vede nella foto è infatti quanto ci si può aspettare.
Lo schema è corretto.
Il codice è sicuramente da verificare e lì, probabilmente, per quanto presupposto, ci deve essere l'errore.
Intanto ti suggerirei di ricontrollare i collegamenti tra il microcontrollore e il display affinché corrispondano a quanto hai disegnato.
Poi, hai cercato tra gli articoli dei blog(s) degli utenti che ti ho indicato ?
Saluti
Lo schema è corretto.
Il codice è sicuramente da verificare e lì, probabilmente, per quanto presupposto, ci deve essere l'errore.
Intanto ti suggerirei di ricontrollare i collegamenti tra il microcontrollore e il display affinché corrispondano a quanto hai disegnato.
Poi, hai cercato tra gli articoli dei blog(s) degli utenti che ti ho indicato ?
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8982
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
1
voti
lcua31989 ha scritto:Ho tolto il potenziometro/trimmer perché voglio sempre la luminosità alta e, quindi, l'ho collegato a massa.
URG!
Inoltre non è una grande idea non avere nemmeno il trimmer per il contrasto.
Leggi qui
saluti brasati.
Pietro
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
0
voti
Ho dato un'occhiata al codice e mi pare che la parte più importante, col proposito di verificare tra l'altro i passaggi della inizializzazione, manchi.
Richiami le funzioni ...
Saluti
Richiami le funzioni ...
- Codice: Seleziona tutto
Lcd_Init();
Lcd_Cmd( ... );
Lcd_Out( ..., ..., ...);
Delay_ms(2000);
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8982
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Ciao,
purtroppo sono librerie chiuse sono di proprietà mikroc... quello che è strano è che se simulo il programma con proteus funziona correttamente riesco a vedere le scritte che compaiono sull'lcd. Se invece lo testo in hw, l'lcd resta come in fotografia postata nel thread precedente. L'unica che mi viene a pensare è che l'lcd non è compatibile con la libreria e che non abbia come decoder l'hitachi HD44780.
- come posso verificarlo?
- nel frattempo ho messo il trimmer in v0 e una resistenza da 380 ohm sull'anodo della retroilluminazione. Non è che omettendola ho danneggiato il display?
-Hai altre idee?
Ciao e grazie lcua31989
purtroppo sono librerie chiuse sono di proprietà mikroc... quello che è strano è che se simulo il programma con proteus funziona correttamente riesco a vedere le scritte che compaiono sull'lcd. Se invece lo testo in hw, l'lcd resta come in fotografia postata nel thread precedente. L'unica che mi viene a pensare è che l'lcd non è compatibile con la libreria e che non abbia come decoder l'hitachi HD44780.
- come posso verificarlo?
- nel frattempo ho messo il trimmer in v0 e una resistenza da 380 ohm sull'anodo della retroilluminazione. Non è che omettendola ho danneggiato il display?
-Hai altre idee?
Ciao e grazie lcua31989
1
voti
metti anche il trimmer per il contrasto, poi prova a regolarlo.
Potresti essere in saturazione di contrasto, avendo messo il pin giù a massa di brutto.
E' possibile che tu abbia danneggiato il display, ma solo per la retroilluminazione, però prima prova a fare quel che ti ho detto.
Per la storia delle librerie chiuse, è davvero improponibile che per quattro righe di codice che servono per fare l'inizializzazione di un display e le poche altre funzioni di controllo ci facciano già un qualcosa di chiuso.
Mah, prova così, altrimenti ti passo quelle che ho scritto io, a patto che tu chiuda un occhio su come programmo in C
proteus è abbastanza affidabile come simulatore (previo che per usare un simulatore bisogna sapere più elettronica di lui, mi ha detto un gatto)
l'HD44780 è il controller universale per quel tipo di display. Non li fa solo la HITACHI, ma tutti devono essere compatibili. C'è qualche paranoia sulla lettura di registri che normalmente non potrebbero essere letti, sull'HITACHI funziona e su altri no, ma non è certamente il tuo caso. Tu vuoi farlo funzionare, non usare funzioni avanzate quali definire il tuo set di caratteri, per esempio.
Ciao,
Pietro.
Potresti essere in saturazione di contrasto, avendo messo il pin giù a massa di brutto.
E' possibile che tu abbia danneggiato il display, ma solo per la retroilluminazione, però prima prova a fare quel che ti ho detto.
Per la storia delle librerie chiuse, è davvero improponibile che per quattro righe di codice che servono per fare l'inizializzazione di un display e le poche altre funzioni di controllo ci facciano già un qualcosa di chiuso.
Mah, prova così, altrimenti ti passo quelle che ho scritto io, a patto che tu chiuda un occhio su come programmo in C
proteus è abbastanza affidabile come simulatore (previo che per usare un simulatore bisogna sapere più elettronica di lui, mi ha detto un gatto)
l'HD44780 è il controller universale per quel tipo di display. Non li fa solo la HITACHI, ma tutti devono essere compatibili. C'è qualche paranoia sulla lettura di registri che normalmente non potrebbero essere letti, sull'HITACHI funziona e su altri no, ma non è certamente il tuo caso. Tu vuoi farlo funzionare, non usare funzioni avanzate quali definire il tuo set di caratteri, per esempio.
Ciao,
Pietro.
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
23 messaggi
• Pagina 1 di 3 • 1, 2, 3
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



pigreco]=π