La visualizzazione
Home

 

Il segnale DCF.77
Significato dei bit
La Ricezione
La Decodifica
Il microcontrollore
La visualizzazione
La modulazione ASK
Foto DCF.77

Le informazioni ricevute sono state visualizzate su 8 display a 7 segmenti a catodo comune, collegati con la tecnica di multiplazione delle linee.

Il display è un componente discreto che permette di visualizzare in forma numerica e letterale i dati disponibili in binario. Ce ne sono di vari tipi, quelli attualmente più diffusi sono quelli a LED (Light Emitting Diode) e quelli a cristalli liquidi (LCD).

Le differenze sostanziali si possono riassumere in: maggior visibilità ma elevati consumi del LED, minore consumo ma allo stesso tempo maggiore complessità nel pilotaggio del LCD.

La struttura più economica e diffusa di un display è quella a sette segmenti, con i quali (denominati con le lettere a, b, c, d, e, f, g) si possono visualizzare tutte le cifre numeriche (0 ¸ 9) ed alfanumeriche adoperate per la codifica in esadecimale (A, b, C, d, E, F). La visualizzazione delle cifre esadecimali "B"e "D" è in minuscolo per non confonderle con le cifre numeriche "8" e "0". E' inoltre presente un punto decimale in basso a destra, che è in grado di soddisfare particolari esigenze.

Un'ulteriore distinzione dei display a LED viene effettuata in base al collegamento interno dei vari LED, e si possono allora display ad anodo comune o a catodo comune. Se è l'anodo collegato comunemente a tutti i LED, il display avrà gli ingressi attivi allo stato logico basso, mentre se è il catodo comune, gli ingressi saranno attivi alti.

Un modo per poter collegare un display a un microcontrollore potrebbe essere quello di affidare i 7 segmenti a 7 pin di una porta del mC, e collegare il catodo comune a massa.

Questa soluzione va bene se si deve collegare al massimo un paio di display al mC, mentre se il numero di display è più elevato si ricorre alla tecnica di multiplazione, che prevede il collegamento di tutti i piedini dei segmenti uguali ad un singolo pin di una porta, con l'utilizzo quindi di 7 pin + 1 pin se si vuole collegare anche il decimal point, e i vari catodi dei display comandati da altrettanti pin del mC. Sfruttando la permanenza dell'immagine dentro la retina di un occhio umano si possono far vedere i display sempre accesi, nonostante il continuo accendi - spegni, fatto ad una frequenza sufficientemente alta.

Il tempo di permanenza di un display acceso è stato messo a 12 ms; la frequenza quindi risulta .

Tale routine viene svolta dalla seguente parte di software (il DPTR è stato caricato con l'indirizzo di memoria della tabella di conversione):

visual_disp:	mov r7,#8	; Serve per fare 8 volte la spazzolata di P0
	mov P0,#10000000b	; Inizializza P0
	mov r0, #060H 		; Metti in R0 il valore 51, l'ind. di memoria del primo display
vai:	mov a, @r0		; Metti in A il valore del display
	movc a,@a+dptr		; Converti in valore da BCD a 7seg
	mov p1,a		; Carica la porta P1 con il valore 7seg
	acall att		; Attendi 12 ms
	mov a,p0 		; Shifta P0 a destra
	rr a
	mov p0,a
	inc r0			; Incrementa l'indirizzo del valore del display
	djnz r7, vai		; Ho fatto 8 volte la spazzolata di P0?
	mov p1,#000h		; Spegni i display 
	ret

La funzione "att", invocata per l'attesa di 12ms è la seguente:

att:	mov r3,#01h 		; Attende 12 ms
	mov r2,#015h
	mov r1,#00fh
ciclo0: 	Nop
	djnz r1,ciclo0
	mov r1,#00fh
	djnz r2,ciclo0
	mov r2, #01h
	djnz r3,ciclo0
	ret

La conversione da numero binario a numero per il display a 7 segmenti, è stata fatta con l'utilizzo di una tabella di conversione, posta in memoria dopo programma principale e routine varie.

tabella:    db  063	; 0
            db  006	; 1
            db  091	; 2
            db  079	; 3
            db  102	; 4
            db  109	; 5            
            db  125	; 6
            db  007	; 7
            db  127	; 8
            db  111	; 9
            db  119	; A=10
            db  124	; b=11
            db  088	; c=12
            db  094	; D=13
            db  121	; E=14
            db  113	; F=15
            db  057	; C=16
            db  056	; L=17
            db  062	; U=18
            db  118	; H=20
            db  00      ; spegnimento disp

Ritorna all'inizio