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