Ciao,
Il trimmer su v0 è quello per la regolazione del contrasto :) io l'ho messo da 10k
È per questo motivo che vorrei cambiare compilatore passando a quello dela microchip, ma purtroppo è troppo complesso.
Onestamente regolando il contrasto non cambia nulla. Le tue librerie sono a 4 o 8 bit? Se vuoi passamela per me non ci sono problemi.
Ciao
Lcua31989
problema con lcd 1602 blu
Moderatore:
Paolino
23 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
ok, io però lo avevo fatte per un AVR della Atmel.
Poco male, dovrai cambiare l'HAL, non è per nulla difficile, leggi il codice che ho scritto e scrivi il corrispondente codice per il PIC.
Come compilatore C uso il GCC.
Appena ho un attimo te le cerco, magari stasera.
Ciao,
Pietro.
Poco male, dovrai cambiare l'HAL, non è per nulla difficile, leggi il codice che ho scritto e scrivi il corrispondente codice per il PIC.
Come compilatore C uso il GCC.
Appena ho un attimo te le cerco, magari stasera.
Ciao,
Pietro.
-

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

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
0
voti
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
TardoFreak ha scritto:lcua31989 prendi il datasheet, leggi la sigla del controller e postala, ti dico io con cosa è compatibile.
Ciao TardoFreak il controller è ST7066U-0A, che credo che non sia compatibile però se tu potessi darmi una conferma è meglio.
Ciao
Lucua31989
1
voti
E' compatibile con HD44780.
Però tu qui hai fatto una serie di errori che è bene che tu tenga in mente per non farli più.
Prima di comprare una qualsiasi componente o modulo bisogna conoscerlo bene ed a fondo. Il fatto che tu non sappia che il controllore è compatibile e fino a che punto lo è (può esserlo solo in parte, le specifiche potrebbero variare), è indice di un acquisto avventato fatto alla "spera in Dio". La prossima volta per prima cosa ti studi, non leggi, ti studi bene il datasheet, e poi compri.
Se il datasheet dice che ci devi mettere un trimmer tu ci metti il trimmer. L' errore che hai fatto è quello di "pensare", di supporre. Hai sbagliato in pieno. Non devi pensare, devi fare quello che c'è scritto nel datasheet. A maggior ragione se è la prima volta che usi un componente.
Prima si ottiene qualcosa di funzionante poi, eventualmente, si apportano modifiche.
Se si usano delle librerie bisogna assicurarsi di avere un oggetto provato con quelle librerie. Per essere sicuri, visto che usi le librerie MikroC, avresti dovuto fare uno sforzo e comprare un display da loro, collegarlo come dicono loro e fare quello che fanno loro (gli esempi servono per questo).
A meno che tu non sia in grado di scriverti qualsiasi driver per qualsiasi dispositivo, a quel punto (anche se non è mai consigliabile) potresti acquistare "al buio". Però bisogna essere davvero capaci e, con tutto il rispetto, mi sembra che tu non rientri in questa categoria di persone.
Perdona la franchezza ma la situazione è questa in qualunque modo la giri. Siamo tecnici ed andiamo al punto senza giri di parole.
Con spirito costruttivo
TF
Però tu qui hai fatto una serie di errori che è bene che tu tenga in mente per non farli più.
Prima di comprare una qualsiasi componente o modulo bisogna conoscerlo bene ed a fondo. Il fatto che tu non sappia che il controllore è compatibile e fino a che punto lo è (può esserlo solo in parte, le specifiche potrebbero variare), è indice di un acquisto avventato fatto alla "spera in Dio". La prossima volta per prima cosa ti studi, non leggi, ti studi bene il datasheet, e poi compri.
Se il datasheet dice che ci devi mettere un trimmer tu ci metti il trimmer. L' errore che hai fatto è quello di "pensare", di supporre. Hai sbagliato in pieno. Non devi pensare, devi fare quello che c'è scritto nel datasheet. A maggior ragione se è la prima volta che usi un componente.
Prima si ottiene qualcosa di funzionante poi, eventualmente, si apportano modifiche.
Se si usano delle librerie bisogna assicurarsi di avere un oggetto provato con quelle librerie. Per essere sicuri, visto che usi le librerie MikroC, avresti dovuto fare uno sforzo e comprare un display da loro, collegarlo come dicono loro e fare quello che fanno loro (gli esempi servono per questo).
A meno che tu non sia in grado di scriverti qualsiasi driver per qualsiasi dispositivo, a quel punto (anche se non è mai consigliabile) potresti acquistare "al buio". Però bisogna essere davvero capaci e, con tutto il rispetto, mi sembra che tu non rientri in questa categoria di persone.
Perdona la franchezza ma la situazione è questa in qualunque modo la giri. Siamo tecnici ed andiamo al punto senza giri di parole.
Con spirito costruttivo
TF
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
1
voti
Ciao,
nono c'hai perfettamente azzeccato, visto che non funziona l'lcd in alcun modo... Credo che sia andato non so più come fare a provare di farlo andare... non c'è verso e il programma è corretto. Che questo mi faccia da lezione
Ciao
Lcua31989
nono c'hai perfettamente azzeccato, visto che non funziona l'lcd in alcun modo... Credo che sia andato non so più come fare a provare di farlo andare... non c'è verso e il programma è corretto. Che questo mi faccia da lezione
Ciao
Lcua31989
0
voti
Ciao,
ma visto che mi hai dato il consiglio di prenderlo su mikreolettronica... Riesci a capire che razza di modello sia?
https://www.mikroe.com/carts/share/NRNzHHe9me0ovgv3/
ma visto che mi hai dato il consiglio di prenderlo su mikreolettronica... Riesci a capire che razza di modello sia?
https://www.mikroe.com/carts/share/NRNzHHe9me0ovgv3/
1
voti
'scolta, fai una cosa: compra quello e segui alla lettera sia i collegamenti che il software.
Poi potrai individuarne uno compatibile, che magari costa meno, e provare ad utilizzarlo.
Per carità, il mio è un approccio molto conservativo. A volte ho speso centinaia di euro solo per essere sicuro di avere una base di sicuro funzionamento.
Magari è un sistema da manovale ma ha sempre funzionato.
Poi potrai individuarne uno compatibile, che magari costa meno, e provare ad utilizzarlo.
Per carità, il mio è un approccio molto conservativo. A volte ho speso centinaia di euro solo per essere sicuro di avere una base di sicuro funzionamento.
Magari è un sistema da manovale ma ha sempre funzionato.

"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
1
voti
TardoFreak ha scritto:Prima si ottiene qualcosa di funzionante poi, eventualmente, si apportano modifiche.
Questo consiglio è ORO PURO.
-

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

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
1
voti
E' uno dei moduli più semplici che ho scritto, però contiene già diverse funzioni.
- Codice: Seleziona tutto
// AlfanDisp.c
/* These lines are here to allow display customization */
//PORT BIT (E.G.-> DISPLAYPORT A , DISPLAYDATA4 0 means D4=PA0)
#define DISPLAYOUT PORTA
#define DISPLAYDATA4 0
#define DISPLAYDATA5 1
#define DISPLAYDATA6 2
#define DISPLAYDATA7 3
#define DISPLAYRS 4
#define DISPLAYENABLE 5
#define DISPLAYBACKLIGHT 6
/* end of customization */
#include <avr/io.h>
#define ClrBit(x,y) x&=~(1<<y) //clear the bit y to the port x
#define SetBit(x,y) x|=(1<<y) //set the bit y to the port x
#define ON 1
#define OFF 0
#define UpperMask 0xf0 //strip off lower bits
#define LowerMask 0x0f //strip off upper bits
#define DELPI 169 //delay K to achieve 1ms per loop. 169=4MHz.
//prototypes //
static void strobe(void);
static void LCDCmd(unsigned char cmd);
static void SetDisplayPort(unsigned char w);
//core //
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* backl(ON/-OFF) configures LCD backlight */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void backl (char c)
{
if (c)
DISPLAYOUT|=(1<<DISPLAYBACKLIGHT);
else
DISPLAYOUT&=(~(1<<DISPLAYBACKLIGHT));
} //end backl(c)
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* delay(milliseconds) delay routine */
/* * * * * * * * * * * * * * * * * * * * * * * * */
static void delay(int ms)
{
unsigned int ritardo;
for (ritardo=0;ritardo<DELPI*ms;ritardo++);
}//end delay(ms)
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* cls() clear display screen */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void cls(void)
{
LCDCmd(1);
}//end cls()
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* cur(ON/-OFF) configures LCD cursor */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void cur(char c)
{
(c==ON)?LCDCmd(0xE):LCDCmd(0xC);
}//end cur()
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* LCDCmd(command) send commands to LCD port */
/* * * * * * * * * * * * * * * * * * * * * * * * */
static void LCDCmd(unsigned char cmd)
{
ClrBit(DISPLAYOUT,DISPLAYRS); //High to select display data
delay(1);
SetDisplayPort ((cmd&UpperMask)>>4);
delay(2);
strobe();
SetDisplayPort (cmd&LowerMask);
delay(0);
strobe();
}//end LCDCmd(cmd)
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* init_LCD() configures LCD for 4 bit mode and */
/* multi line display */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void init_LCD(void)
{
unsigned char loop;
ClrBit(DISPLAYOUT,DISPLAYRS); //enable Instruction/Command registers
delay(4);
for(loop=0;loop<3;loop++)
{
DISPLAYOUT=0x03; //place data in D4-D7 PORTD bits
delay(4);
strobe();
}
DISPLAYOUT=0x02; //send 0x02 only one time!
delay(1); //don't use LCDCmd() for this write
strobe(); //it handles a byte in two operations
LCDCmd(0x28);
LCDCmd(0x08);
LCDCmd(0x01);
LCDCmd(0x0e);
}//end init_LCD()
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* strobe() pulses the ENABLE bit */
/* * * * * * * * * * * * * * * * * * * * * * * * */
static void strobe(void)
{
SetBit(DISPLAYOUT,DISPLAYENABLE); //E goes high
delay(1);
ClrBit(DISPLAYOUT,DISPLAYENABLE);
delay(1);
}//end strobe()
/* * * * * * * * * * * * * * * * * * * * * * * * */
/* SetDisplayPort(w) low level display port write */
/* * * * * * * * * * * * * * * * * * * * * * * * */
static void SetDisplayPort(unsigned char w)
{
char inport;
const char zeropos=~((1<<DISPLAYDATA4)|(1<<DISPLAYDATA5)|(1<<DISPLAYDATA6)|(1<<DISPLAYDATA7));
inport=DISPLAYOUT; //reading portout
inport&=zeropos; //nulling zeropos bits
//setting bits
inport|=((w&1)<<DISPLAYDATA4);
inport|=(((w&2)>>1)<<DISPLAYDATA5);
inport|=(((w&4)>>2)<<DISPLAYDATA6);
inport|=(((w&8)>>3)<<DISPLAYDATA7);
DISPLAYOUT=inport; //write
} //end SetDisplayPort(w)
/* * * * * * * * * * * * * * * * * * * * * * * * */
/*LCDdataWrite(unsigned char dta) */
/* Writes data to display */
/* * * * * * * * * * * * * * * * * * * * * * * * */
static void LCDdataWrite(unsigned char dta)
{
DISPLAYOUT&=0xF0;
SetBit(DISPLAYOUT,DISPLAYRS); //High to select display data
delay(1);
SetDisplayPort ((dta&UpperMask)>>4);
delay(1);
strobe();
SetDisplayPort (dta&LowerMask);
delay(1);
strobe();
}//end LCDdataWrite()
/* * * * * * * * * * * * * * * * * * * * * * * * */
/*PosCur(line,pos) : move the cursor to line,pos */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void PosCur(int line, int pos)
{
int offset;
switch (line)
{
case 2:
offset=0x40;
break;
case 3:
offset=0x14;
break;
case 4:
offset=0x54;
break;
default:
offset=0;
}
LCDCmd(offset + pos + 0x80);
}//end PosCur(line, pos);
/* * * * * * * * * * * * * * * * * * * * * * * * */
/*LCDPrint(char *s) write a string to the screen */
/* * * * * * * * * * * * * * * * * * * * * * * * */
void LCDPrint(char *s)
{
while (*s)
LCDdataWrite (*s++);
}//end LCDPrint(*s)
/* * * * * * * * * * * * * * * * * * * * * * * * * */
/*BarInit(char choice) Initialize the bar generator*/
/*Choice=0 dot bar Choice=1 solid bar */
/* * * * * * * * * * * * * * * * * * * * * * * * * */
void BarInit(char choice)
{
char n,m,number;
for (m=0;m<6;m++)
{
LCDCmd(0x80+m); //set DDRAM address 0
LCDCmd(0x40+(m<<3)); //set CGRAM address 0
LCDdataWrite(0b00000001);
(m==0)?(number=0):(number+=1<<(5-m));
for (n=0;n<7;n++)
LCDdataWrite(((m!=5)&&(n&0x1)&&choice)?(number|1):number);
}
LCDCmd(0x80); //set DDRAM address 0
}//end BarInit(char choice)
/* * * * * * * * * * * * * * * * * * * * * * * * * */
/*LCDBar(char line,char a) bar gauge */
/*line=line to show the bar, a= value from 0 to 100*/
/* * * * * * * * * * * * * * * * * * * * * * * * * */
void LCDBar(char line,char a)
{
char n;
char b;
PosCur(line,0);
for (n=0;n<(a/5);n++)
LCDdataWrite(5);
if (a<100)
{
LCDdataWrite(a%5);
b=19-(a/5);
for (n=0;n<b;n++)
LCDdataWrite(0);
}
}//end LCDBar(char line,char a)
-

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

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
23 messaggi
• Pagina 2 di 3 • 1, 2, 3
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 5 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]=π