Gestione display grafico e realizzazioni ..... |
Lo scopo di questa pagina è di chiarire un pò la gestione e quindi l'utililizzo del display grafico impresa non proprio facile . Iniziamo con lo scaricare il datasheet del display Hitachi HDM64GS12 oppure AGM1264F od altri equivalenti purchè con matrice di 128 x 64 . Vediamo che sono riportate oltre alle dimensioni , le caratteristiche elettriche ed altre informazioni il seguente prospetto che dovrebbe chiarire come viene gestito ogni singolo pixel del display . Quindi in possesso del display , la PIC e le cognizioni necessarie , si tratta di scrivere un pò di codice per la gestione del display ... ebbene io ci ho rinunciato !! Se proviamo a disegnare alcune righe verticali con qualche ciclo FOR ce la caviamo ma se poi vogliamo aggiungere delle righe orizzontali ( senza cancellare le verticali ) il problema diventa molto complesso . Per fortuna esiste una scappatoia e si chiama GLCD.C : si tratta di una libreria scritta in C che si prende carico di interfacciare la PIC con il display . Purtroppo detto file è coperto da copyright quindi non open source , ma andando a giro per Internet .... anzi se ne trovano più versioni e qui sotto ne riporto due versioni , la prima con matrice dei caratteri 5 x 7 piu 'eleganti' e a matrice 3 x 5 con caratteri più piccoli:
Vediamo un pò come funziona la libreria : innanzi tutto le ho rinominate GLCD_35.C e GLCD_57.C per utilizzarle a piacere . Si possono quindi richiamere le varie routine per le seguenti funzioni : glcd_init(mode) : inizializza il display mode ON OFF glcd_pixel(x,y,color) x posizione or. y pos. vert. color ON OFF ON accende pixel OFF lo spenge glcd_line(x1,y1,x2,y2,color) disegna una linea con le coordinate x1,y1 inizia ed x2,y2 termina line ON ed OFF scrive o cancella glcd_text35(x,y,textptr,color) scrive o cancella testo x ed y coordinate di inizio scrittura textptr stringa da scrivere color ON OFF scrive o cancella . Come si può notare ogni funzione prevede l'opzione ON ed OFF assolutamente indispensabile perchè ogni variazione di scrittura o altro sul display richiede prima di essere cancellato il vecchio valore altrimenti le scritte si sovrappongono glcd_fillScreen(color) accende o spegne tutti i pixel dello schermo glcd_circle(x,y,radius,fill,color), glcd _bar(x1,y1,x2,y2,width,color), glcd_rect(x1,y1,x2,y2,fill,color) meno utilizzate Passiamo quindi alle realizzazioni pratiche . Le due realizzazioni proposte si riferiscono ad un ADC_Tester e ad uno oscilloscopio digitale. Ambedue utilizzano lo stesso schema elettrico, quindi gli stessi componenti cambia solo il software da scaricare nella PIC. A tal proposito se qualcuno è interessato si possono scaricare i file sorgente ed .hex nella sezione download .. |
ADC_Tester come si può vedere visualizza lo stato delle linee di uscita dall' ADC0820 e il valore della tensione in ingresso.Si tratta di una realizzazione principalmente didattica comunque si potrebbe aggiungere altri otto ingressi delle porte RA0-7 inutilizzate . |
Oscilloscapio digitale . Questo è il progetto finale per cui è finalizzato lo studio del display . Progetto perfettamente funzionante , ma ancora in cantiere per cercare di aumentare la banda passante ( per ora limitata a qualche KHz nonostante l'utilizzo dell'ADC0820 esterno alla PIC notoriamente lento ) inoltre deve essere migliorata la sincronizzazione con il segnale di ingresso , nonchè appunto un circuito d'ingresso per portare almeno a 50 Volt la massima tensione d'ingresso . |
Oscilloscapio digitale . Progetto tratto dal sito www.semifluid.com/?p=16 da cui è possibile scaricare , progetto e software incluso la librera da modificare . |