Ora colleghiamo il display LCD al nostro microcontrollore, i chip dei driver del display Hitachi originali sono stati
progettati decenni fa quando le linee di controllo a microprocessore erano ad un livello premium.
Da qui il motivo per cui sono in grado di modalità forbit.
E ora con l'avvento dei microcontrollori, dove l'attenzione si è concentrata sulla riduzione delle dimensioni e
quindi sul numero di pin, questi display LCD sono perfettamente adatti per microcontrollori sul nostro microcontrollore avremo bisogno di
quattro pin per linee dati e due pin per la linea arest e l'Elive legherà semplicemente la
linea RW a terra poiché scriveremo solo sul display.
Ora Port C ha 6 pin possiamo usare la porta A ha 5 avvisi non ce
ne sono due Tuttavia c'è un altro
avvertimento con il design specifico di questa scelta a causa delle capacità USP.
Ci sono limitazioni su ciò che la penna potrebbe fare.
Fondamentalmente hanno scambiato funzionalità minori per una capacità enorme di avere comunicazioni native USPO.
Quando leggiamo sulla descrizione della porta un registro nel foglio dati Pick a pagina 131.
Notate che cosa
dice che port è una porta bidirezionale a cinque bit. L'eccezione è 0 o 1 e sono 3 che sono solo input e il bit tristate sarà sempre letto
come uno ora per essere sincero mi manca questo che stavo costruendo su questo circuito successivo e mi ha fatto perplesso
per il tempo più lungo perché stavo cercando di usare i nostri 0 sono un
1 e un 3 come uscite.
Quindi tienilo d'occhio in futuro perché ti rovinerà.
Quindi possiamo usare rigorosamente la porta S. per tutto.
Poiché questi pin possono essere tutti output e abbiamo abbastanza pin disponibili per il display LCD.
Ma invece quello che ho fatto nel mio codice puoi scriverlo in modo diverso, ovviamente.
Ho usato la porta 80 per le linee di controllo e la porta C per le linee dati.
Lo schema si trova nei download in basso e diversi esempi di codice.
Puoi usare.
Ho una grandissima fiducia nelle tue capacità a questo punto.
Quindi, se desideri modificare il modo in cui è guidato il display, puoi collegare tutte le linee alla porta C
e puoi semplicemente modificare il codice di conseguenza.
Ci sono alcune cose che dobbiamo rendere conto prima di costruire il nostro codice, il nostro codice è troppo veloce
per il display LCD.
Ora dobbiamo prendere in considerazione una parte abbastanza importante dell'elettronica digitale chiamata timing.
Spesso dovremo prendere provvedimenti speciali con l'elettronica digitale soprattutto per cose come la conversione da analogico
a digitale o per pilotare i carichi esterni al processore ecc.
Il display LCD non è diverso ora.
Questo è tutto sepolto nella scheda tecnica del display LCD in modo da poterlo leggere.
Ma ti risparmierò un po 'di tempo.
Ci sono tre tempi critici che dobbiamo fare attenzione.
Il primo è il più veloce che possiamo scrivere o leggere sui chip.
Fondamentalmente, prima che la linea Enable diventi alta, i dati sulle linee dati devono essere presenti
e stabili, ovvero qualsiasi errore nel segnale deve essere livellato per almeno 200 nanosecondi, ricordate che questo è
un circuito digitale.
È così veloce da poter leggere i bounces sugli switch.
Quindi se c'è qualche rumore sul tuo segnale può effettivamente contare quel rumore una volta che la linea del cavo diventa alta.
Deve rimanere alto per almeno 450 nanosecondi per caricare il registro.
Poi, come hai visto quando hai costruito il circuito di controllo manuale, ha
registrato i dati sullo schermo quando hai rilasciato il pulsante quando hai rilasciato il pulsante.
La linea E è andata bassa.
Deve rimanere basso per almeno 500 nanosecondi prima della prossima volta che la linea può salire.
Questo significa solo inviare un morso di dati.
Dobbiamo prendere il nostro tempo un minimo di quattrocentocinquanta e cinquecento nanosecondi o arrotondato
di un microsecondo.
Ora è molto veloce.
Tuttavia sul microcontrollore che era più veloce da calcolare in base alla frequenza, invertiamo il tempo in cui uno
diviso per un microsecondo equivale a un milione di hertz.
Quindi, per consentire alla nostra scelta di essere in grado di comunicare con il nostro display LCD, abbiamo
dovuto rallentarlo perché al momento funziona a 16 milioni di hertz.
Quindi abbiamo un paio di opzioni qui.
La prima opzione è mettere i ritardi nel nostro programma ogni volta che scriviamo qualcosa sul display.
Possiamo inserire i dati sulle linee dati, quindi inviare un high sulla linea, quindi eseguire una subroutine che ritarda semplicemente
il processore per un microsecondo, quindi torna indietro e invia un minimo su ogni riga.
Ora eseguiamo nuovamente la subroutine per ritardare il processore di un altro microsecondo prima di caricare le linee dati
o fare qualsiasi altra cosa.
Può essere noioso ma questo funziona per mantenere le cose più semplici.
Andremo con l'opzione numero due perché abbiamo il pieno controllo sul microcontrollore.
Ricorderai che possiamo impostare la sua velocità di clock.
Abbiamo già impostato la nostra velocità di clock con il registro di controllo OSC.
E se si passa a pagina 75 nei dati e la scheda tecnica selezionata è possibile visualizzare tutte le opzioni disponibili per le
linee dell'orologio e come impostare l'OSC sul registro di conseguenza.
Ora, ciò che faremo sarà impostare la velocità a 1
megahertz. Ciò garantisce che la nostra linea di controllo Tempi soddisferà il tempo minimo per il display LCD e ci
farà risparmiare un mucchio di programmazione.
Questo è particolarmente vero quando si considera che non si otterranno mai uscite sulle linee dati
in meno di due cicli di clock per istruzione.
Quindi potresti probabilmente eseguirlo su megahertz e non avere problemi perché le istruzioni potrebbero essere eseguite solo
ad un massimo di 1 milione di istruzioni al secondo.
Quindi se vuoi far girare il processore a una velocità più alta puoi farlo.
Ricorda che devi tenere conto delle velocità massime per il display.
Quindi tutto pronto.
Imposta la mia velocità di clock a 1 megahertz.
Quindi quando guardo pagina 75, vedo che per ottenere un mega Hertz sull'orologio interno sul mio plettro.
Ho impostato l'OSC su un bit di selezione della frequenza dell'oscillatore interno 2 1 0 1 1.
Ora il bit 6 e 7 sono i moltiplicatori di clock.
Quindi puoi davvero aumentare la velocità della tua scelta fino a 48 megahertz se vuoi, ma ovviamente vogliamo andare
nella direzione opposta.
Vogliamo rallentarlo non accelerarlo.
Quindi disattiviamo i moltiplicatori inserendo zeri sui bit 6 e 7 bit zero e uno.
Scegli il tipo di orologio che vogliamo utilizzare e vogliamo l'orologio interno dell'oscillatore.
Quindi, abbiamo bisogno di un po 'per far sì che uno sia alto e lo zero dell'offerta non ha più importanza.
Quindi da tutto ciò possiamo dedurre che dobbiamo
impostare la chiamata a 0 0 1 0 1 1 1 0.
Quindi il mio set di codice sarà lo stesso di prima tranne che cambierò questa linea proprio qui.
E cambieremo il byte in 0 0 1 0 1 1 1 0 per impostare il nostro oscillatore su 1 megahertz.
Il secondo problema di temporizzazione critico riguarda i comandi inviati al display LCD.
Ricorda di impostare il display accendendolo o spostando il cursore.
Ogni comando richiede tempo.
Ora la maggior parte di essi richiede circa 40 microsecondi, ma alcuni come cancellare il display
o spostare il cursore perché questi implicano diversi passaggi che possono richiedere da 40 microsecondi a quasi 2 millisecondi.
Di nuovo non molto tempo ma nel mondo digitale è sicuramente un sacco di tempo.
Quindi ogni volta che si invia un comando LCD, è necessario posticipare la foto.
Mantieni le cose semplici, pianifichiamo con un ritardo di due millisecondi.
Ora ricorda che abbiamo già costruito questi sottomarini di utilità ritardata, eccetto che ora abbiamo cambiato la nostra velocità di clock da
16 megahertz a 1 megahertz. Quindi i nostri ritardi saranno 16 volte più lunghi dell'ultima volta che
li useremo.
Non c'è bisogno di ricordare che il terzo intervallo critico sul display LCD è il tempo di
inizializzazione.
Ora succede solo una volta, ma dobbiamo renderne conto.
Ancora una volta questa informazione è nella scheda tecnica ma è molto tempo.
Quando accendi il display LCD per la prima volta, i chip del driver passano attraverso una serie di passaggi per mettere
tutto a posto.
Ora questo ci vuole per sempre nel tempo digitale.
Un minimo di 15 millisecondi.
È quasi un quinto di secondo che è come start stop lì.
È stato circa un quinto di secondo, anche quando hai rallentato la tua immagine fino a un misero milione di
volte al secondo.
Ovviamente dovrai far riposare la tua foto per non fare nulla per un po 'ad aspettare
che il display LCD finisca di avviarsi quindi con questo in mente diamo un'occhiata al nostro codice di esempio sul
download del codice LCD che ho inserito in alcuni commenti qui riguardo la griglia.
Quelle posizioni di memoria RAM generiche che stavamo usando per il nostro programma di utilità ritardano i loop in questo codice.
Useremo per le 16 marce disponibili.
Quindi ho appena fatto alcune note nei commenti su quale GPS è usato per cosa.
Questo è in parte anche il motivo per cui non utilizzare inavvertitamente lo stesso registro per due diversi lavori.
Quindi passiamo attraverso il setup di setup ed ecco il nostro OSKAY su cui impostare l'orologio a 1 megahertz.
Ora ci mettiamo al lavoro.
Impostiamo la porta a come uscite.
E anche se i bit da 0 a tre o solo gli input non danneggiano
nulla per provare a configurarli come output e ci salva alcune righe di codice perché non tutto ciò che faccio è cancellare il
Tristate un registro invece di caricare il trasferimento del registro W finita per tristare un ecc.
Abbiamo creato la banca per Lache.
E non dimenticare che dimenticare di cambiare banca è uno degli errori più comuni che farai.
Cancelliamo tutte le uscite sulla porta a.
Abbiamo solo due linee di controllo cablate nella porta.
La linea di selezione Registra e la riga Abilita.
Ora li impostiamo entrambi a zero per dargli il via.
Ora a questo punto del programma abbiamo appena acceso.
Quindi, mentre il plettro ha completato tutte queste attività, il display LCD continua a funzionare in
questa vita che dura 15 millisecondi se si ricorda.
Quindi abbiamo bisogno di aspettare almeno 15 millisecondi che chiamiamo la nostra subroutine di utilità ritardata
che avete già familiarizzato con quaggiù.
È la stessa subroutine che abbiamo usato prima.
Ma tieni presente che ora utilizziamo 1 megahertz e non 16 megahertz.
Quindi questo intero ritardo richiede circa zero punti per otto secondi.
Ora puoi cambiare questi numeri se vuoi.
Ero solo pigro, avevamo solo bisogno di ritardare un massimo di 50 millisecondi se si ritardasse di più.
Va perfettamente bene
Quindi ho appena copiato e incollato l'utilità originale per posarlo e lasciarlo così com'è.
Supera il minimo ritardo di cui avevamo bisogno.
Questo è stato tutto ciò che mi importava perché non avevo fretta di mettere questo monitor LCD
in funzione o in qualche modo così ritardiamo il punto zero di otto secondi e poi torniamo indietro al punto da cui eravamo partiti.
Ora configuriamo la porta C come uscite e quindi impostiamo il display per la modalità forbit e quindi per la modalità di visualizzazione della
linea.
Ora questo è stato fatto esattamente nello stesso modo in cui hai guidato manualmente il display.
Questo potrebbe essere un po 'confuso all'inizio.
Basta ricordare cosa abbiamo fatto con il cablaggio.
Abbiamo bit da zero a tre su Portsea collegato alle nostre linee dati.
Da D a D 7 sul display LCD.
Quindi quando inviamo un byte nella porta C questi quattro bit non fanno nulla.
Non vanno da nessuna parte.
Non sono collegati a nulla ma dobbiamo mettere il nibble superiore lì per il bene del compilatore.
Questi bit qui sono strettamente segnaposto per quando carichiamo la porta C per garantire che questi quattro bit, che sono quelli importanti,
vengano inviati ai bit da 0 a 3 sulla porta.
Altrimenti il compilatore potrebbe confondersi e sputare errori come tu sai hey ho bisogno di 8 bit mi hai
dato solo quattro parole qui.
Quindi, se ricordi di configurare lo schermo LCD per la modalità di forbit, abbiamo inviato 0 0 1 0 al display LCD.
Questo è stato il nibble superiore di un comando di set di funzioni esattamente come quello che abbiamo fatto con i fili nell'ultima
sezione, solo che questa volta lo stiamo inviando usando la foto.
Quindi inviamo 0 0 1 0 sulla porta C e quel numero è ora seduto lì.
Quindi cos'altro dobbiamo fare per rendere effettiva la funzione.
Dobbiamo avere la linea zero zero che dice al LCD che si tratta di un comando e quindi controlliamo la linea.
Bene, abbiamo già la linea S a 0 che sta uscendo dal Porto A che abbiamo già cancellato.
Destra.
Quindi ora dobbiamo solo dare un impulso alla linea.
Ho fatto questo con una subroutine breve un impulso freddo che è quaggiù.
L'impulso la subroutine cambia banca per L. UN. per LaChaise molto importante.
Fissiamo cinque in alto sulla porta otto che è la linea E.
Quindi lancio due istruzioni chiamate Nessuna operazione.
Questa è letteralmente un'istruzione che non fa nulla.
Quindi, perché metterlo lì dentro.
È perché ogni singola di queste linee richiede tempo perché il contatore del programma deve
contare almeno un impulso di clock.
Ho inserito queste op in rigorosamente per ritardare il processore.
Solo pochi cicli di clock solo per assicurarsi che la linea Enable sia alta abbastanza a lungo da permettere
la registrazione dei dati.
Quindi cancelliamo un bit 5 su lache a port un registro che imposta la linea troppo bassa.
Aspettiamo ancora un paio di cicli di clock solo per essere assolutamente sicuri che la linea rimanga bassa abbastanza a lungo da consentire ai chip
del driver LCD di essere pronti per i dati successivi.
Ora torniamo da dove eravamo rimasti.
Ora abbiamo inviato il comando per la modalità forbit e pulsato la linea.
Quindi ora il display è in modalità forbit ogni singolo bit di dati che inviamo ora deve andare in nibbles al livello
superiore prima in basso e in secondo.
Quindi siamo ancora in modalità di comando e ora invieremo i due livelli precedenti nel nostro circuito di azionamento manuale.
Quindi partiamo in modalità forbit e impostiamo il display su due linee.
Ora ricorda che non c'è niente collegato a questi bit, quindi prima mandiamo un impulso 0 0 1 0
alla linea, quindi inviamo 1 1 0 0 e poi riattiviamo la linea.
Quindi vogliamo attivare il set e accendere il display e impostare il cursore su sottolineatura
e lampeggiare nuovamente, proprio come facevamo prima che il comando fosse byte binario 0 0 0 0 1 1 1 1.
Quindi lo inviamo in due doppi.
Ecco il primo nobile.
Quindi diamo un impulso alla linea poi al secondo nibble e ripetiamo di nuovo la linea.
Ora abbiamo il display acceso su un cursore lampeggiante e sottolineato e ora siamo pronti per scrivere informazioni
sul display.