Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Questo proggetto scrive a scopo illustrativo tutte le lettere dell'alfabeto alcuni caratteri speciali e tutti i numeri su display modello displaytech LCD MODULE 64128K COG SERIES, che utilizza un 65 x 128 Dot Matrix LCD Controller/Driver Sitronix ST7565R; per il controllo ho utilizzato un PIC16F876A e, la modalita di comunicazione PIC - DISPLAY avviene in modalit seriale non parallela.
Descrizione
Tempo fa comprai questo modulo LCD 64128K COG SERIES della Displaytech Ltd, mi spinse all'acquisto il prezzo veramente basso ma, una volta acquistato cominciai a navigare in internet alla ricerca di qualche esempio di utilizzo, risultato: il buio completo; Allora munitomi di documentazione ufficiale del display (scaricabile qui) e del Controller/Driver ST7565R (scaricabile qui) cominciai a studiare per la realizzazione di un software per la scrittura sul sopracitato display utilizzando mikroC con un PIC16F876A (datasheet del controller scaricabile qui). La descrizione del progetto e suddivisa in due sezioni, la parte circuitale (Hardware) e la parte software:
IL CIRCUITO
Il circuito molto semplice, sostanzialmente composto dal display LCD MODULE 64128K COG SERIES, comandato dal microcontrollore Microchip PIC16F876A, per l'adattamento dei segnali da 5V (del microcontrollore) a 3,3V (del display) ho utilizzato un integrato HCF4050BE hex buffer/converter non inverting (datasheet scaricabile qui). Per l'alimentazione sia del display che del microcontrollore ho utilizzato un alimentatore da pc dove ho trovato entrambi i voltaggi utili 3,3V per display (fili arancioni) e 5V per microcontrollore (fili rossi). Per quanto riguarda la descrizione dei pin del display, sono riportati in lingua inglese sulla documentazione del Controller/Driver Sitronix ST7565R ma di sequito ne dar
una breve descrizione, i pin sono riferiti alla modalit di comunicazione seriale e i voltaggi sono 3,3V (stato logico "H") e 0V (stato logico "L" ):
Pin 1: CS1 abilita - Disabilita la ricezione dei comandi, se lo stato logico "H"
collegati a massa ciascuno con un condensatore la cui capacit varia in base alla grandezza del display, nel nostro caso 1uF come da schema;
Pin 27: C86 seleziona l'interfaccia: stato logico "H" = interfaccia 6800, stato
nel mio caso ho scelto la modalit seriale "L", ha il vantaggi di richiedere meno pin del PIC ma lo svantaggio di comunicare in sola scrittura quindi non possibile leggere ne lo stato ne i dati scritti su display; Lo schema in formato PDF scaricabile qui, mentre in formato KiCad per chi volesse fare modifiche o creare PCB scaricabile qui. Posto anche delle immagini del prototipo costruito su BreadBoard, poich non sono un buon fotografo sono venute con un po di fastidiosi riflessi, ma penso che rendano l'idea:
IL SOFTWARE
Il software un p pi complesso, composto da diverse funzioni che verranno descritte di seguito ed ha una main function che le richiama, qualora si volesse scrivere qualcosa di diverso basta lasciare le funzioni invariate ed andara a lavorare sulla main function che rimane molto intuitiva. il risultato finale del mio esempio di software uno scurimento graduale del display ed un successivo schiarimento con scrittura dell'alfabeto, dei caratteri speciali e dei numeri scritti in nero su bianco (come da foto2), attesa di qualche secondo riscurimento del display e scrittura dell'alfabeto, caratteri speciali e numeri scritti bianco su nero (come da foto3).
Il software stato scritto in MikroC ed scaricabile da QUI dove possibile trovare sia il progetto MikroC completo, sia il file .hex da caricare nella PIC16F876A. Descrizione delle Funzioni
In questo documento verranno descritte le funzioni che vengono utilizzate per settare il display cancellarlo completamente e scrivere tutti i principali carattei (Lettere, Numeri e principali caratteri speciali);
Nome funzione
Display_Init
Descrizione:
Display_Init()
Prototipo Funzione
Inizializza le porte di comunicazione del PIC e i principali parametri di configurazione del display, prima di richiamare questa funzione deve essere aggiunta la libreria SPI e devono essere dichiarate ed assegnate con l'istruzione (sbit) come globali le seguenti variabili ai relativi pin del PIC: sbit LCD_SCL at RXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_SI at RXx_bit; (Dove Xx il pin del PIC che si vuole usare);
sbit LCD_CS1 at RXx_bit; (Dove Xx il pin del PIC che si vuole usare);
sbit LCD_A0 at RXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_RES at RXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_SCL_Direction at TRISXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_SI_Direction at TRISXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_CS1_Direction at TRISXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_A0_Direction at TRISXx_bit; (Dove Xx il pin del PIC che si vuole usare); sbit LCD_RES_Direction at TRISXx_bit; (Dove Xx il pin del PIC che si vuole usare).
1. Imposta la direzione delle sopra citate porte come uscite del pic (esempio: LCD_RES_Direction = 0); 2. Inizializza le porte al valore logico 0 esempio (LCD_RES = 0); 3. Setta le impostazioni iniziali del display nel seguente modo:
Bias Select = 1/65 duty 1/9 bias; ADC SELECT: SEG0 TO SEG131; SHL SELECT: COM63 TO COM0; SET V0 VOLTAGE; ELECTRONIC VOLUME MODE SET; ELECTRONIC VOLUME REGISTER SET; SET BOOSTER RATIO = 4X; BOOSTER RATIO REGISTER SET; POWER SETTING (VF = ON; VR = ON; VC = ON;); NORMAL REVERSE DISPLAY; DISPLAY ON ;
per informazioni sulle sopra citate impostazioni consultare il datasheet del controller display ST7565R di cui dotato il modulo display, oltre a questa sommaria descrizione possibile usufruire dei commenti riportati sul software.
void InviaComando
Serve per inviare comandi al modulo LCD, come ad esempio tutte le sopracitate impostazioni, la selezione di una riga, di una colonna o pi semplicemente di una pagina, il parametro identifica il comando. Per ulteriori informazioni sui comandi si rimanda al datasheet del controller display ST7565R
void InviaDato
Serve per inviare gli 8 bit di scrittura al modulo LCD, ad esempio se siamo nella posizione riga 0 colonna 0 inviando come parametro di questa funzione 0B11111111 noteremo nel punto pi in alto a sinistra una riga larga un pixel e lunga 8 verso il basso, inviandolo per una seconda volta la colonna verra incrementata di uno e cos via.
Display_Clear
Serve per resettare il display tutto bianco o tutto nero a seconda se il parametro :
0 = Bianco; 1 = Nero;
Attenzione con questo comando vengono resettati tutti i pixel allo stato bianco o nero cancellando tutto ci che vi sotto.
void Display_All_Point
Serve per impostare il display allo stato attuale o tutto nero a seconda se il parametro :
0 = Immagine preesistente; 1 = tutto nero; A differenza del precedente non cancella la ram preesistente ma con parametro 0 reimposta l'immagine precedente.
void Display_Char
void Display_Char(unsigned short x, unsigned short y, char carattere, unsigned short colore)
Serve per scrivere il carattere contenuto nel parametro "carattere", nella posizione contenuta nei parametri (x,y) corrispondenti alle coordinate del display, con colore nero se il parametro colore >= 1 altrimenti bianco. I caratteri sono stati disegnati con un editor bitmap con grandezza 8 * 8 pixel e sono contenuti nei seguenti array all'interno del software:
Qualora si volessero aggiungere caratteri diversi da quelli da me creati, si possono disegnare con un editor bitmap con grandezza 8 * 8 pixel, ed aggiungerli ai vettori gia creati facendo per attenzione a cambiare la grandezza dei vettori stessi nell'istruzione di dichiarazione.
Siamo giunti alla fine di questo articolo, mi scuso con tutti i lettori per la mia incapacit di espressione, spero che tutto vi rimanga chiaro ma se cos non fosse mi metto a disposizione per rispondere alle vostre richieste;