ultimo aggiornamento 29 aprile 2011 |
|
Si tratta di un modulo di visualizzazione
alfanumerica a cristalli liquidi, in grado di rappresentare 2 linee di 16
caratteri ognuna prodotto dalla
WINTECK.
Inserendo i codici necessari, č possibile creare diversi effetti di
visualizzazione come lampeggio, scroll, attivazione di un cursore, ecc.
Č possibile anche la creazione di caratteri
differenti, definiti dall'utente.
Da un lato, le 8 linee dei dati D0-D7 sono connesse con le 8 linee della
porta B (RB0-RB7).
Tale porta, a volte, funziona come uscita del PIC e come entrata verso
il modulo. Attraverso essa vengono inseriti i diversi codici di controllo per la
realizzazione di differenti effetti di visualizzazione e anche i codici ASCII
dei caratteri da visualizzare. Altre volte, la porta B deve funzionare come
entrata verso il PIC, dato che suo tramite il modulo LCD mostra i codici che
indicano il suo stato interno, il contenuto del buffer di memoria interna, ecc.
Dall'altro lato, il modulo č connesso alle linee RAO, RA1 e RA2 della
porta A del PIC. Queste linee funzionano come uscita e sono utilizzate per
inviare al modulo i seguenti segnali di controllo
RS=0 Selezione del registro delle istruzioni
RS=1 Selezione del registro dei dati
R/W=0 Ciclo di scrittura sul modulo LCD
R/W=1 Ciclo di lettura del modulo LCD
E=0 Modulo LCD disattivato
E=1 Modulo LCD attivato
Bisogna sottolineare che quest'ultimo segnale E č connesso a RA2
mediante il jumper J6. Se tale jumper č chiuso, RA2 controllerā
l'attivazione o meno del modulo LCD. AI contrario, se č aperto, il
segnale E resta connesso a terra (livello "0") attraverso R16. In questo
modo, il modulo č sempre sconnesso e le linee sia della porta A
(RAO-RA2) che della B (RB0-RB7) possono essere usate per altre
periferiche, siano esse quelle disponibili nel pPIC Trainer, oppure
qualsiasi altra connessa al connettere di espansione PIC-BUS.
Per concludere, si sottolinea come il modulo LCD sia una periferica di
visualizzazione molto usata nelle applicazioni reali. Si tratta di una
forma di visualizzazione alfanumerica, ma anche grafica, comoda,
piacevole e versatile.
program lcd ' Declarations section ' Lcd module connections dim LCD_RS as sbit at RA0_bit LCD_EN as sbit at RA2_bit LCD_D4 as sbit at RB4_bit LCD_D5 as sbit at RB5_bit LCD_D6 as sbit at RB6_bit LCD_D7 as sbit at RB7_bit LCD_RS_Direction as sbit at TRISA0_bit LCD_EN_Direction as sbit at TRISA2_bit LCD_D4_Direction as sbit at TRISB4_bit LCD_D5_Direction as sbit at TRISB5_bit LCD_D6_Direction as sbit at TRISB6_bit LCD_D7_Direction as sbit at TRISB7_bit ' End Lcd module connections dim txt1 as char[16] txt2 as char[12] txt3 as char[7] txt4 as char[16] i as byte ' Loop variable sub procedure Move_Delay() ' Function used for text moving Delay_ms(500) ' You can change the moving speed here end sub main: CMCON = 7 TRISA = %00000000 ' set direction to be output TRISB = %11110000 ' set direction to be output txt1 = "www-adrirobot.it" txt2 = "uPIC TRAINER" txt3 = "ESEMPIO" txt4 = "Comando Lcd 4bit" Lcd_Init() ' Initialize Lcd Lcd_Cmd(_LCD_CLEAR) ' Clear display Lcd_Cmd(_LCD_CURSOR_OFF) ' Cursor off Lcd_Out(1,5,txt3) ' Write text in first row Lcd_Out(2,1,txt4) ' Write text in second row Delay_ms(3000) Lcd_Cmd(_LCD_CLEAR) ' Clear display Lcd_Out(1,1,txt1) ' Write text in first row Lcd_Out(2,3,txt2) ' Write text in second row Delay_ms(500) ' Moving text for i=0 to 3 ' Move text to the right 4 times Lcd_Cmd(_LCD_SHIFT_RIGHT) Move_Delay() next i while TRUE ' Endless loop for i=0 to 7 ' Move text to the left 8 times Lcd_Cmd(_LCD_SHIFT_LEFT) Move_Delay() next i for i=0 to 7 ' Move text to the right 8 times Lcd_Cmd(_LCD_SHIFT_RIGHT) Move_Delay() next i wend end. |
Elenco revisioni: | |
29/04/2011 | Emissione preliminare |