Problema con LCD Displaytech 162B

Ciao!

Ho fatto un programmino di prova (in verità scopiazzato in parte) per un display Displaytech 162B che mi ha regalato un mio amico. L'ho collegato (ma perché non usano una interfaccia standard??) e..... non funge nulla! Ho naturalmente già collegato il pot da 1K per il contrasto ed infatti riesco a regolarlo in maniera corretta, ma secondo me non si inizializza nemmeno, infatti rimane la sola prima riga e la seconda non c'è verso che si accenda!!

Posto anche il sorgente, anche se qualsiasi modifica gli viene fatta non sortisce a nessun risultato "visivo".

PROCESSOR 16F84A RADIX DEC ERRORLEVEL -302 INCLUDE "P16F84A.INC" __CONFIG _XT_OSC & _CP_OFF & _WDT_OFF

;LCD Control lines

LCD_RS equ 2 ;Register Select LCD_E equ 3 ;Enable

;LCD data line bus

LCD_DB4 equ 4 ;LCD data line DB4 LCD_DB5 equ 5 ;LCD data line DB5 LCD_DB6 equ 6 ;LCD data line DB6 LCD_DB7 equ 7 ;LCD data line DB7

ORG 0CH

tmpLcdRegister res 2 msDelayCounter res 2

;Reset Vector

ORG 00H Start bsf STATUS,RP0 ;Commuta su bank 1

movlw 00011111B ;Imposta le linee I/O della PORTA movwf TRISA

movlw 00000011B ;Imposta le linee I/O della PORTB movwf TRISB ;impostando come uscite solo le ;linee connesse al display

bcf STATUS,RP0 ;Commuta sul bank 0 clrf PORTA clrf PORTB

;Inizializzazione del display call LcdInit

; Cursor home movlw B'00000010' call LcdSendCommand

movlw 'C' call LcdSendData

Loop goto Loop

;********************************************************************** ; Delay subroutine ; ; W = ritardo in ms (clock = 4MHz) ;**********************************************************************

msDelay movwf msDelayCounter+1 clrf msDelayCounter+0

; 1 ms (about) internal loop msDelayLoop nop decfsz msDelayCounter+0,F goto msDelayLoop nop

decfsz msDelayCounter+1,F goto msDelayLoop

return

;********************************************************************** ; Init LCD ; Routine di inizializzazione del display LCD ;**********************************************************************

LcdInit ; Wait for more than 15ms after Vdd rises to 4.5V movlw D'050' call msDelay bsf PORTB, LCD_DB4 bsf PORTB, LCD_DB5 bcf PORTB, LCD_DB6 bcf PORTB, LCD_DB7 call Enable ; Wait for more than 4,1ms movlw D'006' call msDelay call Enable

; Wait for more than 100us movlw D'001' call msDelay call Enable ; Interfaccia a 4 bit, display a 2 linee, caratteri 5X7 movlw B'00101000' call LcdSendCommand ; Increment, no shift movlw B'00000110' call LcdSendCommand ; Display on, Cursor on, blinking on movlw B'00001111' call LcdSendCommand ; Clearing display ;call LcdClear

; We have finished!! return

;********************************************************************** ; Clear LCD ;**********************************************************************

LcdClear movlw B'00000001' call LcdSendCommand ; Wait for more than 1,64ms movlw D'003' call msDelay

;DD RAM address set 1st digit movlw B'10000000' call LcdSendCommand

return

;********************************************************************** ; Invio di un dato al display ;**********************************************************************

LcdSendData

bsf PORTB,LCD_RS call LcdSendByte return

;********************************************************************** ;Invio di un comando al display ;**********************************************************************

LcdSendCommand bcf PORTB,LCD_RS call LcdSendByte return

;********************************************************************** ; Invio di un byte al display su bus a 4 bit ;**********************************************************************

LcdSendByte ;Salva il byte da inviare movwf tmpLcdRegister

;invio dei 4 bit più significativi clrf PORTB btfsc tmpLcdRegister,4 bsf PORTB,LCD_DB4 btfsc tmpLcdRegister,5 bsf PORTB,LCD_DB5 btfsc tmpLcdRegister,6 bsf PORTB,LCD_DB6 btfsc tmpLcdRegister,7 bsf PORTB,LCD_DB7 call Enable

;Invio dei 4 bit meno significativi clrf PORTB btfsc tmpLcdRegister,0 bsf PORTB,LCD_DB4 btfsc tmpLcdRegister,1 bsf PORTB,LCD_DB5 btfsc tmpLcdRegister,2 bsf PORTB,LCD_DB6 btfsc tmpLcdRegister,3 bsf PORTB,LCD_DB7 call Enable return

Enable bsf PORTB, LCD_E movlw D'002' call msDelay bcf PORTB, LCD_E movlw D'002' call msDelay return

END

Ciao, grazie!!

--
Stefano (Lemming)
Reply to
Stefano Martini
Loading thread data ...

"Stefano Martini" ha scritto nel messaggio news:f02g5u$953$ snipped-for-privacy@nnrp.ngi.it...

ci sono migliaia di esempi di gestione dei display LCD alfanumerici dotati di interfaccia Hitachi HD44780, che è di fatto uno standard da alcuni lustri.

saluti, simone.bern

Reply to
simone.bern

simone.bern ha scritto:

Prima di tutto grazie per la tua risposta! Vero, ci sono parecchi esempi, quello che ho usato io, infatti, è (in parte) una scopiazzatura del lavoro di Tanzilli

formatting link
ma nulla, no va niente! :( Alimentandolo risulta visibile la prima riga di celle di carattere e tutto si ferma li! :(

Ciao!

--
Stefano (Lemming)
Reply to
Stefano Martini

Stefano Martini ha scritto:

... e tra le altre cose l'interfaccia non è del tutto uguale al HD44780, la disposizione dei contatti è diversa

formatting link

Ciao!

--
Stefano (Lemming)
Reply to
Stefano Martini

"Stefano Martini" ha scritto nel messaggio news:f02r0r$e3s$ snipped-for-privacy@nnrp.ngi.it...

l'HD44780 è il chip interno bondato. Confermo che il protocollo è standard e la piadinatura la solita dei display alfanumerici. In alcuni display sono invertiti il primo e l'ultimo pin, in altri la posizione del led di retroilluminazione, in altri lo strip è doppio per cavi piatti. Sempre i soliti pin sono....

--
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking 
at it (Robert A. Pease)

zsimonez.zbernz@zliberoz.it (Rimuovere i caratteri di zorro per rispondere 
via mail)
Reply to
simone.bern

simone.bern ha scritto:

Hai ragione, non avevo notato che erano semplicemente "shiftati" di due posizioni..... Allora cambio la domanda così: è possibile che il display si sia guastato: cioè è possibile che, seppur mostrando le celle di carattere (solo prima riga) nel display non funga nient'altro? Ti/Vi è mai capitato?

Grazie ancora Simone!

Stefano

--
Stefano (Lemming)
Reply to
Stefano Martini

Domanda,ma sulla prima riga i caratteri sono esatti?o ti escono solo delle ombre? poi non capisco ,stampi solo "C" e poi vai in loop ?e quanti caratteri vorresti vedere?hai provato a chiamare esplicitamente la seconda riga?mi pare che il comando da mandare valga C0H

però io non ricordo perchè in un codice che avevo scritto e funziona ( 4 bit su un 8X2) prima mando 28h

quindi 28H e mandi comando

C0H e mandi comando

in ogni caso Tanzilli ha voluto fare un esempio semplice,no testa il bit 7 per vedere se il HD44780 è busy,per fare le cose per bene andrebbe fatto,ne guadagneresti in velocità tra l'altro

Reply to
blisca

blisca ha scritto:

Mi escono i "rettangoli" completamente scuri, nessun carattere :((((

Almeno la C, ma purtroppo nulla!

hai provato a chiamare esplicitamente la seconda riga?mi

Ho provato proprio ora ma nulla da fare!

E' il set function per 4bit, 2 linee, 5X7, praticamente corrisponde al mio: movlw B'00101000' call LcdSendCommand

Ho provato, ma tutto come prima...... :( Rimangono solo i "quadratini neri" della prima riga e nient'altro :((((

Si, infatti non piace nemmeno a me il R/W a massa direttamente, mi pare una roba messa li alla C....o. Però prima di quello vorrei che funzionasse il programmino come parte essenziale, tieni presente che il tutto è montato, al momento, su una breadboard.

Ti ringrazio!

Stefano

--
Stefano (Lemming)
Reply to
Stefano Martini

Stefano Martini wrote in news:f05gdh$ksf$ snipped-for-privacy@nnrp.ngi.it:

Potrebbe essere il contrasto regolato male. Io ho usato l'interfaccia a 8 bit. Nella sequenza di reset devi mandare 3 volte il comando 0x30 e poi 0x38 per impostare il funzionamento su due righe. I tempi e gli altri comandi della sequenza di inizializzazione sono documentati nel datasheet.

--
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)
Reply to
Valter Minute

"Stefano Martini" ha scritto nel messaggio news:f05gdh$ksf$ snipped-for-privacy@nnrp.ngi.it...

Se rispetti le specifiche di scrittura puoi connetterlo a massa. Controlla con un oscilloscopio (oppure fai una stima sull'asm) i ritardi tra le varie fasi di inizializzazione.

simone.bern

Reply to
simone.bern

delle

ah beh,il problema non è la 2nda riga,semplicemente,non si è mai inizializzato,devi risolvere questo,quando non inizializza ha proprio quell'aspetto

bit

mio:

certo,non essendo inizializzato ,prova a rallentare enormemente i tempi di ritardo

i segnali all'oscilloscopio sono belli puliti ???con che clock/quarzo stai andando?

Reply to
blisca

simone.bern ha scritto:

Infatti, ma IMHO usare anche la linea R/W è molto meglio, viene un lavoro più "pulito", anche se spreco una porta del PIC.

RIgrazie, Simone! ;)

--
Stefano (Lemming)
Reply to
Stefano Martini

Valter Minute ha scritto:

Ho provato a regolarlo, sia in modo che si vedano i "rettangoli neri" appena appena, sia che si vedano molto contrastati, ma purtroppo niente da fare....

Uhm... Questo non l'ho provato, vedo di farlo

Grazie! Provo a ricontrollare di non avere fatto qualche stupidata, anche se ho già controllato più volte....

Grazie Valter! Stefano

>
--
Stefano (Lemming)
Reply to
Stefano Martini

blisca ha scritto:

Purtroppo temo che l'LCD sia proprio morto :(( Provo a seguire i consigli di Valter, ma temo che posso seppellirlo!

Purtroppo non ho (ancora) un oscilloscopio! Spero di prenderlo a breve (a pro posito che tipo mi consigliate? 50MHz 2 traccie a 150 euro com'è?) Per il quarzo uso 4MHz con due condensatori da 22p.

Ciao!

--
Stefano (Lemming)
Reply to
Stefano Martini

((

non è assolutamente inizializzato

aspetta .0x38 vale se usi interfaccia a 8 bit,per 4 bit ci vuole 0x28,questo per i comandi successivi, i primi comandi ignorano il nibble alto comunque,il trattato + completo che io conosca sull hd44780

è questo
formatting link
dell'ottimo Giorgio Ober,è un piacere leggerlo ed è completissimo
Reply to
blisca

stai

se è nuovo è un prezzaccio,se è usato conosco chi ha di meglio da vendere,National serie VP 100 MHz stesso prezzo,vecchio ma funzionantissimo e si insospettiscono per il prezzo basso,non lo vendo io e non mi viene in tasca niente,è in zona Monza

avevo anche visto un annuncio di un Hung Chang su questio NG ,è una ditta che è in giro che io sappia da almeno 23 anni,ma nella fattispecie non so niente del modello,era sempre su sto prezzo mi pare

Reply to
blisca

blisca ha scritto:

Lo temevo.... Ma mi sa che è proprio kaputt :( Ho provato anche a triplicare i tempi, ma resta tutto come prima!

per i comandi successivi, i primi comandi ignorano il nibble alto comunque,il trattato + completo che io conosca sull hd44780

Ober,è un piacere leggerlo ed è completissimo Sto leggendolo, grazie, è veramente interessantissimo e completo!

--
Stefano (Lemming)
Reply to
Stefano Martini

0x28,questo per i comandi successivi, i primi comandi ignorano il nibble alto comunque,il trattato + completo che io conosca sull hd44780

Giorgio Ober,è un piacere leggerlo ed è completissimo

Reply to
blisca

blisca ha scritto:

Sì, nuovo! Però ora ho visto su ebay un 100MHz 4 tracce (usato) a 159 euro..... Uhm.... Vediamo, in generale preferisco acquistare il nuovo, ma vediamo un po....

Grazie Blisca!

Stefano

--
Stefano (Lemming)
Reply to
Stefano Martini

blisca ha scritto:

Varese :) Se ti riferisci al Kaputt, è solo una abitudine che ho! ;)

Tu sei vicino a me?

--
Stefano (Lemming)
Reply to
Stefano Martini

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.