LCD StopWatch with MIcrocontroller PIC16F628A

Transcript

LCD StopWatch with MIcrocontroller PIC16F628A
LCD 1/1000 Stopwatch
PIC16F628A microcontroller
LCD Module Epson mod. EA-D16015 PR-1
with
and
(foto del secondo prototipo, con un nuovo firmware ed un Modulo LCD 16x2) CRONOMETRO MILLESIMALE
MANUALE TECNICO e ISTRUZIONI
©2014 by Valter Narcisi – San Benedetto del Tronto (AP) ‐ ITALY http://www.narcisivalter.it/progetti/cronometro-LCD.html
VCC
C1
0.1u
D
R7
10k
R6
10k
R5
10k
D
R4
10k
M1
+V
1N4148
M2
12 Vcc
Power Supply
9 Vcc
Battery
R8
22k
D2
+
IN
1N4001
+
RX* 1k
C5
47u - 25V
U4
78L05
4
VCC
OUT
3
+
COM
D3
M3
C6
10u - 16V
+
10
4,95 Vcc
(Only with
12v Power Supply)
11
1N4001
C
1
2
3 ICSP
4
5
14
D1
8
RA5/MCLR
RA4
RB4
U1
PIC16F628A
RB5
13
RB7
12
RB6
16
RA7
15
RA6
2
RA3
1
RA2
18
RA1
17
RA0
RB2
C
RX* only if use a 9V rechargeable battery
Stop/
Interm.
RB3
Reset
6
VCC
RB1
7
T1
10k
Contr.
5
C2
RB0/INT
9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Start
S3
GND
VCC
ADJ
RS
RW
EN
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
LED+ (A)
LED- (K)
R9
15k
S2
GND
S1
0.1u
R2
47
Epson EA-D16015 PR-1
16
24MHz
VCC
9
B
XTAL
24 MHz
Q4
Q5
U2
M74HC4060B1 Q6
Q7
10
Rext
Q8
Q9
Q10
Q12
11
Rs
Q13
Q14
R3
4M7
C4
47p
CV
15-70p
Cext
GND
Reset
8
12
7
5
4 375 kHz
6
14
13
15
1
1
2
2
3
12
VCC
C3
LCD
LCD Module 16x1
0.1u
1000 Hz
24
R1
VCC
Input
Output
U3
CD4059B
EL
23
Q1
BC237
10k
B
Ka
14
Kb
13
Kc
11
GND
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16
3
4
5
6 22 21 20 19 18 17 16 15 10
9
8
7
Author:
Valter Narcisi - San Benedetto del Tronto (AP)
Project:
Cronometro Millesimale LCD a Microcontrollore
Year:
2014
A
A
Size:
Note:
—
DWG no.
1
Rev.:
1
Scale:
1:1
Sheet:
http://www.narcisivalter.it/progetti/cronometro-LCD.html
1 of 1
LCD Stopwatch Component list
Designator
Component
C1
C2
C3
C4
C5
C6
R1
R2
R3
R4
R5
R6
R7
R8
R9
RX*
T1
CV
D1
D2
D3
XTAL
Q1
U1
U2
U3
U4
LCD
S1
S2
S3
M1
M2
M3
0.1u
0.1u
0.1u
47p
47u - 25V
10u - 16V
10k
47
4M7
10k
10k
10k
10k
22k
15k
1k
10k Trimmer
15-70p
1N4148 or equivalent
1N4001 or equivalent
1N4001 or equivalent
24 MHz Xtal
BC237
PIC16F628A
M74HC4060B1
HEF4059BP (CD4059)
78L05 (100mA)
LCD Module Epson EA-D16015 PR-1
N.A. switch
N.A. switch
N.A. switch
5 way (for ICSP)
2 way terminal
2 way terminal
http://www.narcisivalter.it/progetti/cronometro-LCD.html
http://www.narcisivalter.it/progetti/cronometro-LCD.html
http://www.narcisivalter.it/progetti/cronometro-LCD.html
http://www.narcisivalter.it/progetti/cronometro-LCD.html
WIRING
Power Supply
12 Vcc
ON-OFF
Double Switch
1
16
1
Ni-Cd
Ni-MH
TP
24 MHz
T1
LCD Contrast
CV
24 Mhz adj.
START
RESET
1/1000 LCD Stopwatch with MCU - ©2014 by Valter Narcisi [email protected]
STOP / Intermediate
- http://www.narcisivalter.it/progetti/cronometro-LCD.html
EXTERNAL SWITCHES
PCB Stopwatch
+Vcc
2x
1N4148
470
470
2x
1N4148
1/1000 LCD Stopwatch with MCU - ©2014 by Valter Narcisi [email protected]
- http://www.narcisivalter.it/progetti/cronometro-LCD.html
COMANDI e USO (per Moduli LCD 16x1)
All'accensione, dopo le classiche scritte di copyright, il display visualizza il seguente valore:
La retroilluminazione è sempre accesa quando il cronometro è alimentato dalla rete: al contrario,
quando il cronometro è alimentato solo dalla batteria da 9V, la retroilluminazione del display si spegne
durante il conteggio (in questo modo è possibile "allungare" l'autonomia della batteria stessa).
START Quando si preme il pulsante START, il cronometro avvia il conteggio "mascherando" le
ultime 3 cifre (quelle dei millisecondi) al posto delle quali sono visualizzati 3 trattini come visibile
nell'immagine seguente:
STOP Quando si preme il pulsante STOP, il valore istantaneo viene "congelato" sul display (tempo
parziale), compresi i millisecondi: questo è il tempo intermedio nel formato HH:MM:SS.mmm
Per indicare che il cronometro sta visulizzando un tempo intermedio, sul display, a sinistra, appare
anche la lettera "P" (Pause).
Dopo la pressione del pulsante STOP, il conteggio non si ferma giacché il Microcontrollore continua a
ricevere gli impulsi da 1 millisecondo sulla Porta RB0/INT e, di conseguenza, continua ad aggiornare
le variabili anche se sul display il conteggio appare fermo.
START Premendo di nuovo il pulsante START, il display ricomincia a visualizzare Ore, Minuti,
Secondi in tempo reale (con i trattini al posto dei millisecondi e senza la lettra "P") come se il
conteggio non si fosse mai arrestato:
RESET Per azzerare il display, è necessario prima fermare il conteggio premendo il pulsante STOP e
poi premere il pulsante RESET: in questo modo, il display torna a visualizzare nuovamente la
schermata iniziale con tutti zeri:
Con il trimmer T1 (4,7K oppure 10K logaritmico) si regola il contrasto del display. Questo trimmer
(oppure un mini-potenziometro) va collegato con 3 spezzoni di filo sull'apposito connettore e
posizionato in maniera tale che possa essere sempre accessibile anche quando il contenitore è chiuso.
http://www.narcisivalter.it/progetti/cronometro-LCD.html
LA NUOVA VERSIONE (per Moduli LCD 16x2)
Nel sito (alla pagina www.narcisivalter.it/progetti/cronometro-LCD.html) è possibile scaricare una
nuova versione firmware per Moduli LCD a due righe (16 caratteri per 2 righe).
Per questa versione ho utilizzato il display della Fordata siglato FDCC-1602D (sostituibile con il
modulo della Wintek siglato WM-C1602N)
I comandi, ovviamente, sono gli stessi, ma il funzionamento è leggermente diverso dal momento che
in questo caso è possibile sfruttare 2 righe anzichè una sola. Inoltre ho potuto inserire anche la
Modalità di conteggio.
„ All'accensione il display appare come visualizzato nella seguente immagine:
(Tin = Tempo Istantaneo, Ptl = Tempo Parziale)
„ Premendo START , il cronometro avvia il conteggio è
visualizzato sulla prima riga.
„ Premendo STOP , il tempo intermedio è visualizzato e memorizzato sulla seconda linea (compresi i
millisecondi) mentre sulla prima riga il conteggio continua senza fermarsi.
Ad ogni STOP , sulla seconda linea appare sempre il nuovo tempo intermedio. Per fermare il
cronometro è sufficente premere il pulsante RESET il quale azzera anche i tempi riportandoli
entrambi al valore 00:00:00.000 (come all'accensione).
Avendo a disposizione 2 righe sul display, ho inserito anche la modalità di conteggio (MODE) per
selezionare la quale è sufficiente tenere premuto il pulsante RESET e contemporaneamente premere
il pulsante STOP .
Ad ogni combinazione, sul display saranno visualizzati (alternativamente) i seguenti messaggi per circa
1 secondo:
„ Continuos count after 1st START - Il cronometro funzionerà come descritto sopra: il tempo
istantaneo non si ferma mai a meno che non si prema il pulsante RESET .
http://www.narcisivalter.it/progetti/cronometro-LCD.html
„ Reset count to 0 after each STOP - Con questa modalità, il tempo istantaneo sulla prima riga
viene ri-azzerato ogni volta che si preme il pulsante STOP : sulla seconda riga, appare sempre il
tempo intermedio. In questa modalità, le scritte sul display sono differenti, come mostrato nella
successiva immagine:
(Str = Start, Stp = Stop)
La modalità di funzionamento MODE viene memorizzata automaticamente sulla Eprom del
microcontrollore: così facendo, ad ogni accensione, il cronometro funzionerà con l'ultima modalità
impostata dall'utente.
Quando il cronometro funziona SOLO con la batteria da 9V è possibile spegnere (e accendere) la
retroilluminazione del display semplicemente premendo il pulsante START.
ERRATA CORRIGE e
AGGIORNAMENTI
Per evitare danni al microcontrollore, consiglio di
applicare un diodo 1N4148 tra il piedino 3 (RA4) e la
VCC (vedi immagine a destra): questo diodo ha
funzione di cortocircuitare al positivo qualsiasi
potenziale superiore ai +5V che dovessero presentarsi
sul piedino 3 del microcontrollore.
http://www.narcisivalter.it/progetti/cronometro-LCD.html
23-08-16