Discussione:
PIC-LCD e MIKROBASIC
(troppo vecchio per rispondere)
Celsius
2006-02-10 16:32:25 UTC
Permalink
Credevo d'aver risolto il problema dell'accesso all'LCD in Basic usando il
Mikrobasic ma, dopo l'entusiasmo iniziale dato che le due prime righe
funzionano a dovere, mi sono dovuto ricredere quando ho tentato d'accedere
alla terza ed alla quarta riga.

Non c'e' verso di far scrivere sulle prime quattro caselle delle 2 righe e
non trattasi di difetto hardware dato che lo stesso comportamento e'
riscontrabile anche sul simulatore.
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.

Prima avevo sbattuto piu' volte la testa con il Picbasicpro che mi scriveva
tutto sulla prima riga, pensavo d'aver risolto con il Mikrobasic, ma nada!
Mi scoccerebbe dover andare nel file .asm generato per correggere tutti i
punti dove ci sono dei caratteri da scrivere su queste due righe, operazione
poi da ripetere parecchie volte se si deve mettere a punto un programma con
output complicato.

Ciao
Celso

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
Luigi C.
2006-02-10 22:51:59 UTC
Permalink
Post by Celsius
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Prima avevo sbattuto piu' volte la testa con il Picbasicpro che mi scriveva
tutto sulla prima riga, pensavo d'aver risolto con il Mikrobasic, ma nada!
Dopo una breve esperienza con un paio di compilatori, sono tornato
all'assembler e ne sono contento. Parere personale, ovviamente.
Ste
2006-02-11 20:24:08 UTC
Permalink
Il giorno Fri, 10 Feb 2006 17:32:25 +0100, "Celsius"
Post by Celsius
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Prima avevo sbattuto piu' volte la testa con il Picbasicpro che mi
scriveva tutto sulla prima riga, pensavo d'aver risolto con il
Mikrobasic, ma nada!
Dopo una breve esperienza con un paio di compilatori, sono tornato
all'assembler e ne sono contento. Parere personale, ovviamente.
Utilizzo i picbasicpro (2.46 ma anche sulle precedenti funzionava e
sinceramente non ho mai avuto particolari problemi con la scrittura sugli
lcd!

provato su display da 16x4

lcdout $fe,1
lcdout $fe,$80,"inizio 1 riga"
lcdout $fe,$c0,"inizio 2 riga"
lcdout $fe,$94,"inizio 3 riga"
lcdout $fe,$d4,"inizio 4 riga"

Ste
pozz
2006-02-11 09:26:46 UTC
Permalink
Post by Celsius
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Ma esistono tante di quelle routine già scritte... non devi invertarti
la ruota ogni volta.
Roby
2006-02-11 11:00:34 UTC
Permalink
Non ho capito dov'è la difficoltà.
Io uso picbasicpro e faccio così:

LCDOUT $fe,$01,"Prima riga"
LCDOUT $fe,$c0,"Seconda riga"
LCDOUT $fe,$94,"Terza riga"
LCDOUT $fe,$d4,"Quarta riga"

Ciao
Post by Celsius
Credevo d'aver risolto il problema dell'accesso all'LCD in Basic usando il
Mikrobasic ma, dopo l'entusiasmo iniziale dato che le due prime righe
funzionano a dovere, mi sono dovuto ricredere quando ho tentato d'accedere
alla terza ed alla quarta riga.
Non c'e' verso di far scrivere sulle prime quattro caselle delle 2 righe e
non trattasi di difetto hardware dato che lo stesso comportamento e'
riscontrabile anche sul simulatore.
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Prima avevo sbattuto piu' volte la testa con il Picbasicpro che mi
scriveva tutto sulla prima riga, pensavo d'aver risolto con il Mikrobasic,
ma nada!
Mi scoccerebbe dover andare nel file .asm generato per correggere tutti i
punti dove ci sono dei caratteri da scrivere su queste due righe,
operazione poi da ripetere parecchie volte se si deve mettere a punto un
programma con output complicato.
Ciao
Celso
.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
http://web.ticino.com/aisi/elettronica/
.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
Celsius
2006-02-11 21:45:35 UTC
Permalink
Post by Roby
Non ho capito dov'è la difficoltà.
LCDOUT $fe,$01,"Prima riga"
LCDOUT $fe,$c0,"Seconda riga"
LCDOUT $fe,$94,"Terza riga"
LCDOUT $fe,$d4,"Quarta riga"
Vedro' di riprovare magari rifacendo anche l'hardware, ma ho notato
un'incongruenza tra i codici della prima riga tua e quelli forniti da Ste,
qual'e' quello giusto
Ste: lcdout $fe,$80,"inizio 1 riga"

Ciao
Celso

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
Roby
2006-02-12 15:26:38 UTC
Permalink
Post by Celsius
Post by Roby
Non ho capito dov'è la difficoltà.
LCDOUT $fe,$01,"Prima riga"
LCDOUT $fe,$c0,"Seconda riga"
LCDOUT $fe,$94,"Terza riga"
LCDOUT $fe,$d4,"Quarta riga"
Vedro' di riprovare magari rifacendo anche l'hardware, ma ho notato
un'incongruenza tra i codici della prima riga tua e quelli forniti da Ste,
qual'e' quello giusto
Ste: lcdout $fe,$80,"inizio 1 riga"
In effetti $fe,$01 è il comando per cancellare tutto il contenuto del
display e il puntatore ritorna in posizione "home", quindi primo carattere
della prima riga.
L'indirizzo che dice Ste non l'ho mai provato perchè c'è anche il comando
$fe,$02 che ritorna in posizione "home" senza cancellare il display.

Cmq se ti posso dare un consiglio scaricati "Microcode studio", è l'editor
gratuito della melabs che ti consente di scrivere il programma, evidenziare
le parole chiavi, etc... Ha anche una guida simile ai prodotti microsoft, se
premi F1 su una parola chiave ti da l'help della funzione uguale a quella
che leggi nel manuale di picbasicpro.

Ciao
Roby
Roby
2006-02-12 15:27:32 UTC
Permalink
Dimenticavo il link:
http://www.melabs.com/resources/win_ide.htm

Ciao
Post by Roby
Cmq se ti posso dare un consiglio scaricati "Microcode studio", è l'editor
gratuito della melabs che ti consente di scrivere il programma,
evidenziare le parole chiavi, etc... Ha anche una guida simile ai prodotti
microsoft, se premi F1 su una parola chiave ti da l'help della funzione
uguale a quella che leggi nel manuale di picbasicpro.
Celsius
2006-02-14 15:55:24 UTC
Permalink
Post by Roby
Cmq se ti posso dare un consiglio scaricati "Microcode studio", è l'editor
gratuito della melabs che ti consente di scrivere il programma,
evidenziare le parole chiavi, etc... Ha anche una guida simile ai prodotti
microsoft, se premi F1 su una parola chiave ti da l'help della funzione
uguale a quella che leggi nel manuale di picbasicpro.
Scaricato, grazie e' veramente comodo!

Ciao
Celso

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
Luigi C.
2006-02-11 15:25:54 UTC
Permalink
Post by Celsius
Credevo d'aver risolto il problema dell'accesso all'LCD in Basic usando il
Mikrobasic ma, dopo l'entusiasmo iniziale dato che le due prime righe
funzionano a dovere, mi sono dovuto ricredere quando ho tentato d'accedere
alla terza ed alla quarta riga.
Tieni presente che:
- molti lcd 16x1 indirizzano i primi otto caratteri da 0 a 7, e i successivi 8
da $40 a $47
- gli lcd 16x2 indirizzano la prima riga da 0 a $0F, la seconda da $40 a $4F
- gli lcd 16x4 indirizzano la prima riga da 0 a $0F, la seconda da $40 a $4F,
la terza da $10 a $1F, la quarta da $50 a $5F.

Sembra una filosofia di indirizzamento un po' bislacca, ma è così.
Post by Celsius
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Io mi trovo bene a programmare in assembler, ho il controllo totale del micro,
comunque in rete si trovano molte routine aritmetiche e di gestione lcd già
fatte.
Celsius
2006-02-11 22:06:06 UTC
Permalink
Post by Luigi C.
- molti lcd 16x1 indirizzano i primi otto caratteri da 0 a 7, e i successivi 8
da $40 a $47
- gli lcd 16x2 indirizzano la prima riga da 0 a $0F, la seconda da $40 a $4F
- gli lcd 16x4 indirizzano la prima riga da 0 a $0F, la seconda da $40 a $4F,
la terza da $10 a $1F, la quarta da $50 a $5F.
Me ne sono accorto purtroppo, ma non e' questo il caso.
A quel modo bislacco e' possibile rimediare con qualche acrobazia.
Post by Luigi C.
Io mi trovo bene a programmare in assembler, ho il controllo totale del micro,
comunque in rete si trovano molte routine aritmetiche e di gestione lcd già
fatte.
Probabilmente tu lo usi spesso e ti ricordi tutto, io invece lo uso solo
saltuariamente ed ogni volta dovrei ripassarmi tutto, con il Mikrobasic le
cose sono piu' semplici e si ricordano piu' facilmente, per esempio si puo'
scrivere sulla prima riga usando questo comando: lcd_out (1, 1,"prima
riga").

Ciao
Celso

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
ro37bis
2006-02-11 22:32:03 UTC
Permalink
Post by Celsius
Credevo d'aver risolto il problema dell'accesso all'LCD in Basic usando il
Mikrobasic ma, dopo l'entusiasmo iniziale dato che le due prime righe
funzionano a dovere, mi sono dovuto ricredere quando ho tentato d'accedere
alla terza ed alla quarta riga.
Non c'e' verso di far scrivere sulle prime quattro caselle delle 2 righe e
non trattasi di difetto hardware dato che lo stesso comportamento e'
riscontrabile anche sul simulatore.
Ma sono proprio cosi' scadenti questi Basic per PIC? Poi proprio nelle
funzione piu' utile perche' gestire in assembler l'LCD e' parecchio noioso.
Prima avevo sbattuto piu' volte la testa con il Picbasicpro che mi scriveva
tutto sulla prima riga, pensavo d'aver risolto con il Mikrobasic, ma nada!
Mi scoccerebbe dover andare nel file .asm generato per correggere tutti i
punti dove ci sono dei caratteri da scrivere su queste due righe, operazione
poi da ripetere parecchie volte se si deve mettere a punto un programma con
output complicato.
Ciao
Celso
Ciao Celso,
io uso normalmente il PicBasicPro con display a 4 righe senza il minimo
problema.
Lo sai che le righe hanno un indirizzo?
Ad esempio:

Line1 CON $80 ' Indirizzo della linea 1
Line2 CON $C0 ' Indirizzo della linea 2
Line3 CON $94 ' Indirizzo della linea 3
Line4 CON $D4 ' Indirizzo della linea 4
ComLCD CON $FE ' Indicatore di comando

lcdout comlcd,line2, " Scrivo su linea 2"
lcdout comlcd,line3, " Scrivo su linea 3"
lcdout comlcd,line4, " Scrivo su linea 4"

ciao
Roberto
Celsius
2006-02-12 14:10:58 UTC
Permalink
Post by ro37bis
io uso normalmente il PicBasicPro con display a 4 righe senza il minimo
problema.
Lo sai che le righe hanno un indirizzo?
Si certo e lo usavo anche, probabilmente mi sfugge qualche altra cosa da
mettere prima (come include ecc., uso un PIC 16F84A)
Mi manderesti in email p.f. un file completo e testato di tutti i parametri,
che scriva su 4 righe? aisiri chiocciola freesurf punto ch
Cosi' posso verificare se trattasi di qualche mia omissione.
Sul Mikrobasic invece non ho dubbi: trattasi proprio di un bug del
compilatore.

Ciao e grazie
Celso

.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.·?¯`·.??.
MazE
2006-02-14 19:53:44 UTC
Permalink
Post by Celsius
Si certo e lo usavo anche, probabilmente mi sfugge qualche altra cosa da
mettere prima (come include ecc., uso un PIC 16F84A)
Mi manderesti in email p.f. un file completo e testato di tutti i parametri,
che scriva su 4 righe? aisiri chiocciola freesurf punto ch
Cosi' posso verificare se trattasi di qualche mia omissione.
Sul Mikrobasic invece non ho dubbi: trattasi proprio di un bug del
compilatore.
Ciao e grazie
Celso
Non sono sicurissimo Celso, ma mi pare che i display alfanumerici in
standard HD44780 possano differire nell'indirizzo delle diverse righe a
seconda di come vengono utilizzati appunti gli hd44780 (o equivalenti), in
quanto uno di questi ic non può da solo pilotare oltre 80 caratteri.
Consiglio la consultazione dei seguenti:

http://www.epemag.wimborne.co.uk/lcd1.pdf

in particolare la figura 4 ed il testo sulla quinta pagina (la 88) prima
del paragrafo "experiment 4"

A chi interessa poi c'è anche la seconda parte:
http://www.epemag.wimborne.co.uk/lcd2.pdf

MazE
--
per rispondere raddoppiate z & t - double z & t to reply

http://www.bccmp.com/mazzetti/pagine/sottoscala.html
Celsius
2006-02-14 21:41:09 UTC
Permalink
Post by MazE
Non sono sicurissimo Celso, ma mi pare che i display alfanumerici in
standard HD44780 possano differire nell'indirizzo delle diverse righe a
seconda di come vengono utilizzati appunti gli hd44780 (o equivalenti), in
quanto uno di questi ic non può da solo pilotare oltre 80 caratteri.
Per quanto ne so se riesco a scrivere sulle 4 righe in assembler dovrei
riuscirci anche in Basic dato che il codice Basic e' prima tradotto in
assembler poi viene compilato.
Se mi dicono che con il Picbasicpro si riesce a scrivere su tutte le 4
righe, probabilmente faccio io qualche errore e/o omissione e mi piacerebbe
scoprire qual'e' confrontando il sorgente di chi c'e' riuscito con il mio.
Comunque il mio LCD e' un 4x16 quindi non supera gli 80 caratteri.
Per il Mikrobasic ho segnalato il bug al distributore italiano, spero che
possano correggerlo perche' trovo veramente comodo usare il Basic quando non
ci sono esigenze d'occupazione di memoria o di velocita'.
Con il Mikcrobasic ho fatto un cronometro che conta anche i giorni (usando
solo le 2 prime righe) ed il codice non riusciva a stare sul PIC 16f84, e'
bastato togliere una riga di codice che faceva la cancellazione di una riga
prima della riscrittura per farcelo entrare tutto.

Ciao e grazie per i link
Celso

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.

pagina d'elettronica:
http://web.ticino.com/aisi/elettronica/

.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.·Ž¯`·.žž.
Loading...