aleda5859 Inserito: 13 dicembre 2003 Segnala Share Inserito: 13 dicembre 2003 Come avrete potuto notare dall'ultimo mio post.. (son venute fuori 3 pagine!!!dovremmo esserne orgogliosi no?)sto iniziando a programmare pic...Mentre approfondisco la mie conoscenze in materia vorrei avvantaggiarmi partendo con la realizzazione di ciò per cui poi il pic mi servirebbe..vorrei pilotare 4 display a 7 segmenti e farne un orologio... tipo hh,mm Suggerimenti?ringrazio in anticipo! Link al commento Condividi su altri siti More sharing options...
bit Inserita: 14 dicembre 2003 Segnala Share Inserita: 14 dicembre 2003 Suggerimenti per pilotare i display a 7 segmenti?Per pilotarne 4 potresti usare un integrato MM5450, lo piloti serialemente e ha 34 uscite per comando led, quindi adatte per display a led.Oppure se hai tante linee libere da usare, (per 4 display te ne servono 11) potresti implementare via software un pilotaggio in multiplexing.Dipende da cosa vuoi fare, dal costo che vuoi avere, dalla complessità del tuo software, dalle tue capacità di programmazione, ecc...Ciao! Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 14 dicembre 2003 Segnala Share Inserita: 14 dicembre 2003 e se volessi pilotare 6 cifre a 7 segmenti e due barre di led con 15-20 led l'una?con il 16F84 posso leggere temperature?per daniele:io userei un 555 per generare un clock di 1s e poi un integrato contattore con reset a 60 per i min e a 24 per le ore.non sò però dopo quanto tempo questo "orologio" andrà fuori tempo.ciaoGiorgio Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 14 dicembre 2003 Segnala Share Inserita: 14 dicembre 2003 e se volessi pilotare 6 cifre a 7 segmenti e due barre di led con 15-20 led l'una Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 15 dicembre 2003 Autore Segnala Share Inserita: 15 dicembre 2003 Quali sono le mie capacità di programmazione? conosco abbastanza bene VB.6 e qualcosa del .NET ma molto poco dell'assembler... L'idea era questa... l'orologio dovrebbe contare 4 display a sette segmenti... hh:mm ore e minuti.Per controllarli avevo pensato:Collego dei combinatori ad altrettanti cd74190 che poi dovrò collegare a decodifiche(cd4511) per azionare i display...I collegamenti ai display (a,b,c,d,e,f,g) saranno in parallelo con uno (probabilmente 2 perchè vorrei utilizzare i 16f84) Pic.Per il primo display,imposterei un clock fisso di un minuto..per il cd74190 che poi quando torna a zero dovrebbe dare un impulso per far aumentare di +1 il successivo display.Controllando le uscite con il Pic una volta che i due display segnano hh:59 farei scattare +1 per le ore o azzerare i due..Stesso ragionemento per le ore...può funzionare? Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 Quali sono le mie capacità di programmazione? Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 15 dicembre 2003 Autore Segnala Share Inserita: 15 dicembre 2003 se non uso decodifiche necessito di 7uscite per ogni display...(una per segmento) e come faccio con 4 display?Io ho 13 I/O...ma per impostare l'ora sull'orologio ho bisogno anche dei combinatori...(4 entrate del pic +1 piedino da collegare a Vcc)4 combinatori = 8 entrate del pic da utilizzare per controllare il numero ...non me ne restano molte per poterlo variare e mandarle ad una decodifica...( in formato 12 ore avrei bisogno di 2 uscite per h1,4per h2;3per m1,4per m2 ...perchè alcune resterebbero sempre a massa..)come posso con il solo pic a fare tutto il lavoro?ringrazio per le risposte precedenti!!!!!!1 Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 Il grande vantaggio del pic che tutti i pin sono come entrata e uscita.Quindi si possono cambiare anche durante il funzionamento.Io userei le uscite dei 7 segmenti in entrate per i pulsanti per modificare l'orario .quindi avrai 7 pin per uscite display 4 di queste uscite , trasformarle in entrate , per i pulsanti.4 uscite per collegare gli strobe dei cd 4511 Evenualmente ti rimangono 2 bit che puoi usare per far lampeggiare i display durante la programmazione dell'ora.Si puo' fare tutto con un solo PIC.Saluti Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 15 dicembre 2003 Autore Segnala Share Inserita: 15 dicembre 2003 ok...quindi ricapitolando potrei connettere le uscite per display alli stessi piedini a cui connetto i combinatori...perfetto...Ma perchè dici che me ne servirebbero 7 per i display?(4+4+3+2 =13..stecchiti )dite che sarà l'ungo e complicato il programma da scrivere?C'è un istruzione (magari tramite decodifche o altri integrati..) per cui dal pic possa comandare : aggingi +1 numero che c'è sul display e quindi visualizzalo...? Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 Ma perchè dici che me ne servirebbero 7 per i display Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 15 dicembre 2003 Autore Segnala Share Inserita: 15 dicembre 2003 Per decidere su quale display devo scrivere devo collegare singolarmente i diversi anodi..o catodi ( a seconda del tipo di display scelto A/K comune)... ma selezionando così ogni volta un display da illuminare mi trovo costretto a far ripetere l'operazione migliaia di volte al secondo perchè siano visibili display che non lampeggino..Avrei quindi bisogno di un clock per il minutaggio ed uno per l'illuminazione e la decisione dei numeri... dico bene?in effetti il problema è che non conosco completamente le istruzioni dell'assembler...dovessi farlo in VB.6 non ci metterei molto... proverò a buttar giù qualcosa e poi posterò... :-)grazie ancora per le pronte risposte! Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 No non serve ,Se usi i cd4511 devi solo mandare il dato in BCD e mandare un impulso di strobe , sul display rimarra il numero fisso fino al prossimo strobe .Quindi devi solo aggiornare il dato BCD 4 olte per cambiare i 4 numeri sui display.Quello che dici tu ( multiplex ) serve se non vuoi usare elettronica esterna , allora devi fare un ciclo abbastanza rapido per non vedere lampeggiare i led .Per questo che usando i 4511 il programma sara piu' semplice.In internet trovi il data sheet del 4511 , vedrai che e' semplice da usare .saluti Link al commento Condividi su altri siti More sharing options...
bit Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 Vuoi una soluzione veramente elegante?Si può fare tutto con un solo integrato (il PIC16F84), 4 transistor di bassa potenza e 7 resistenze, oltre naturalmente ai 4 display e il quarzo per il pic. E ti lascio 7 ingressi per pulsanti vari (set minuto, set ora, ecc...) e la funzione lampeggio per i due led centrali.Il software si complicherà un pochino, ma sarebbe una buona occasione per imparare ad usare le varie funzioni dei micro e sperimentare la potenza di elaborazione che hanno.Se vuoi ti posso dare una mano.Ciao! Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 ciao bit, mi sembra che ti stia dimenticando le 4 uscite per mandare il numero in codice BCD.oppure non ho capito cosa proponi.(vuoi multiplexare i display giusto?)ciao Link al commento Condividi su altri siti More sharing options...
bit Inserita: 15 dicembre 2003 Segnala Share Inserita: 15 dicembre 2003 Niente integrati esterni al pic, decodifico via software.Certo che multiplexo i display....Per la precisione:7 linee per comandare i segmenti di tutti i display o altri led5 linee per comandare i transistor pilota degli anodi dei display (4) e dei led (1 gruppo di massimo 7)1 linea in ingresso per eventuali 7 pulsanti collegati sui pin di pilotaggio dei displayTotale 13 linee.Ah, i transistor quindi sono 5, e serve 1 diodo per ogni pulsante.Carino no?Ciao a tutti! Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 15 dicembre 2003 Autore Segnala Share Inserita: 15 dicembre 2003 in effetti mi sembra una soluzione ottimale... Però dlgcom ha ragione..complicherei il programma..certo che se poi ti và anche di darmi una mano con questo che chiedere di più? (il lucano non mi piace.. )provo a fare uno schema e te lo posto ok?grazie a tutti,come farei senza di voi? Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 16 dicembre 2003 Autore Segnala Share Inserita: 16 dicembre 2003 (...ricordando 7 line O per i display,5 per i rispettivi catodi,però di line di ingresso per pulsanti me ne servirebbero almeno 2..per impostare minutaggio e ora,meglio 4? Non posso più usare i combinatori perchè avrei bisogno di 4*4 = 16 entrate... sig sig..)io procederei così...deto in parole molto povere...Faccio memorizzare al pic delle variabili che siano rispettivamente i numeri da illuminare...(ogni variabile corrisponderà in vero all'insieme dello stadio delle porte O per comandare i display)dopodichè,dovrei insegnare al Pic la matematica... cioè che "var 1" + "var 2" = "var 3" e così fino a nove poi.."var 9" + "var 1" = "var 0" questo funziona però solo per il primo dispay..Adesso dovrei fargli capire che ad ogni zero...del primo display deve corrispondere un + "var 1" del secondo...fatto ciò il display2 dopo 5 deve tornare zero...ed a quel punto sarà il terzo display ad aumentare.. come idea torna?Per poter selezionare esternamente l'ora giusta dovrei mettere come dicevo prima 2 o 4 pulsanti... (anche qui ad ogni contatto deve corrispondere un +"var 1".... devo definirli come interrupt vero?ringrazio ancora tutti quanti.. Link al commento Condividi su altri siti More sharing options...
bit Inserita: 16 dicembre 2003 Segnala Share Inserita: 16 dicembre 2003 Con la mia idea puoi mettere fino a 4 display, 7 led singoli (o un quinto display), e fino a 7 pulsanti.Ti dovrebbero bastare no?Vedo che hai le idee un po' confuse, ma non preoccuparti, appena avrai fatto un pochino di esperienza scoprirai che è più semplice di quello che pensi.Il Pic la conosce bene la matematica, basta sapergli chiedere le cose giuste.Non ho problemi ad aiutarti, passo dopo passo posso spiegarti tutto quello di cui hai bisogno.Ciao! Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 16 dicembre 2003 Autore Segnala Share Inserita: 16 dicembre 2003 ok..torno nuovamente a ringraziare... appena ho qualcosa di scritto lo posto... Non ho capito però come faccio a collegare tutte quelle cose al pic.. con solo..(si fà per dire) 13I/O...per i display ne servono 4 (in multiplex) e 4 per i transistor degli anodi no? non sono già ad 8 Out? Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 17 dicembre 2003 Segnala Share Inserita: 17 dicembre 2003 Bit ..... penso che stiamo solo confondendo le idee .... Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 17 dicembre 2003 Autore Segnala Share Inserita: 17 dicembre 2003 ho riflettuto e credo che si risparmierebbe molta fatica utilizzando una decodifica oltre al pic ma mantenendo in multiplex i display.. (così da dover comandare col pic solo 4 uscite e non 7..)ho abbozzato un idea in fidocad... se vi andasse di correggermela... :[FIDOCAD]MC 75 45 0 0 650TY 80 45 5 3 0 0 0 * 1TY 90 45 5 3 0 0 0 * 18TY 80 80 5 3 0 0 0 * 9TY 90 80 5 3 0 0 0 * 10LI 100 85 120 85LI 100 80 120 80LI 100 75 120 75LI 100 70 120 70LI 75 70 60 70LI 75 75 60 75LI 75 80 60 80LI 75 85 60 85LI 100 45 135 45LI 135 45 135 30MC 135 10 3 0 010LI 100 65 160 65MC 160 65 0 0 010TY 165 60 5 3 0 0 0 * 5VLI 75 65 45 65MC 45 65 1 0 040LI 100 55 110 55MC 110 55 1 1 980LI 100 60 125 60LI 125 60 125 55LI 125 55 120 55LI 75 45 65 45LI 65 45 65 30LI 75 50 55 50LI 55 50 55 35LI 75 55 50 55LI 50 55 45 55LI 45 55 45 45LI 80 60 35 60LI 35 60 35 55MC 135 15 0 0 750LI 135 15 135 10MC 65 20 0 0 860MC 55 25 0 0 860MC 45 35 0 0 860MC 35 45 0 0 860MC 65 20 3 0 010MC 55 25 3 0 010MC 45 35 3 0 010MC 35 45 3 0 010TY 55 5 5 2 0 0 0 * PULSANTE 1 regola le unità di minutiTY 25 15 5 2 0 0 0 * decine di minutiTY 25 30 5 2 0 0 0 * unità oreTY 10 40 5 2 0 0 0 * decine oreTY 105 90 5 2 0 0 0 * Linee Out che regoleranno gli anodi dei displayTY 10 90 5 2 0 0 0 * linee out che comandano la decodifica 4511 Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 17 dicembre 2003 Autore Segnala Share Inserita: 17 dicembre 2003 L'intenzione era di fare in modo che i valori di minutaggio ed ora fossero modificabili dall'esterno solo quando un particolare interruttore fosse messo su "ON".L'interruttore è quello collegato ad RA1... mi serve per evitare che urtando i pulsanti si possa modificare l'ora del tutto involontariamente...Altro dilemma..può il mio orologio preservare i valori di tempo anche se viene staccato dalla presa..cioè se viene a manacare la tensione?O conviene "dire" al micro che ad ogni accensione imposti i valori su 00,00? Sceta dei display..conviene prendere quelli a catodo comune? Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 17 dicembre 2003 Autore Segnala Share Inserita: 17 dicembre 2003 ho deciso che come lo accendo deve settarsi su 00;00... e poi si dovrà regolare l'ora... Ho cominciato a buttar giù qualche riga...che ne pensate? ho scritto proprio grosse cavolate? per adesso siamo al primo passo.. se l'interruttore resta su off e si accendo il tutto si dovrebbe vedere 00;00...per il ritardo necessario per comandare i differenti catodi dei display (tramite rispettivi transistor) ho usato un programma trovato su www.roboitalia.com che ha fatto tutto da solo..(ho solo impostato il tempo...mi ha chiesto quale quarzo usassi ho scritto uno da 4Mz va bene?) ecco il codice... PROCESSOR 16F84RADIX DECINCLUDE "P16F84.INC"ORG 0CH count RES 2ORG 00Hbsf STATUS,RP0movlw 00000010movwf TRISAbtsfc PORTA,1goto Label (dovrò mettere le istruzioni per modificare il valore dei numeri illuminati sul display)movlw 00000000movwf TRISBbcf PORTB,0bcf PORTB,1bcf PORTB,2bcf PORTB,3bsf PORTB,4bcf PORTB,5bcf PORTB,6bcf PORTB,7call Delaybcf PORTB,0bcf PORTB,1bcf PORTB,2bcf PORTB,3bcf PORTB,4bsf PORTB,5bcf PORTB,6bcf PORTB,7call Delaybcf PORTB,0bcf PORTB,1bcf PORTB,2bcf PORTB,3bcf PORTB,4bcf PORTB,5bsf PORTB,6bcf PORTB,7call Delaybcf PORTB,0bcf PORTB,1bcf PORTB,2bcf PORTB,3bcf PORTB,4bcf PORTB,5bcf PORTB,6bsf PORTB,7call Delay; subroutinesDelay;questo Delay l'ho realizzato grazie al programma picLoop disponibile su www.roboitalia.com alla sezione ;downloads ma non ho idea di cosa faccia di preciso...potreste spiegarmelo?Cosa sono i cicli macchina?;PIC Time Delay = 0,0000200 s with Osc = 4 MHz movlw D'1' movwf CounterD movlw D'1' movwf CounterC movlw D'1' movwf CounterB movlw D'1' movwf CounterAloop decfsz CounterA,1 goto loop decfsz CounterB,1 goto loop decfsz CounterC,1 goto loop decfsz CounterD,1 goto loop return Link al commento Condividi su altri siti More sharing options...
bit Inserita: 18 dicembre 2003 Segnala Share Inserita: 18 dicembre 2003 Se vuoi che il pic continui a contare il tempo anche senza alimentazione devi mettere una pila che lo mantiene alimentato. Puoi lasciare spenti i display per risparmiare sull'assorbimento.Quanto alla decodifica penso sia molto più conveniente farla via software. Le 13 linee sono sufficienti per le funzioni che ti ho detto, e la decodifica software si fa semplicemente tramite la eeprom interna.Praticamente se vuoi decodificare le cifre da 0 a 9, quando programmi scrivi il pic nelle locazioni di memoria da 0 a 9 il codice che fa apparire il numero corretto sui segmenti. Praticamente, essendo ogni locazione di memoria composta da 8 bit, ne usi 7 per i segmenti e uno lo lasci stare.Quando devi visualizzare un numero, punti la memoria col numero che vuoi visualizzare, leggi il contenuto e trasferisci su display.Ripeto la configurazione degli ingressi/uscite:7 uscite pilotano tutti i segmenti di 4 display e di un gruppo eventuale di massimo 7 led (o meno).5 uscite pilotano i transistor che accendono uno alla volta i 5 gruppi (4 display + 7 led)7 pulsanti sono collegati alle stesse 7 uscite che comandano i display.L'altro capo dei pulsanti, con un diodo in serie, arriva all'ultimo pin rimasto libero, configurato come ingresso.Il ciclo lettura/scrittura si comporrà quindi nel seguente modo:Visualizzazione:Si scrive sulla porta di uscita il valore del primo display (i 7 segmenti)Si abilita il primo displaySi aspetta il ciclo di ritardo corrispondente.Si ripete il tutto per tutti i 5 gruppi (così abbiamo acceso anche eventuali 7 led)Lettura:Si disabilitano tutti i gruppi (display e led)Si pone ad 1 il primo dei 7 bit della porta di comando display e pulsanti.Si controlla il pin di ingresso comune dei pulsanti, se è a 1 il primo pulsante è premuto.Si sposta l'1 sul secondo pin dell porta di comando.Si ricontrolla il pin di ingresso comune, se è a 1 il secondo pulsante è premuto....e così via fino al settimo pulsante.Sempre a disposizione... ciao a tutti! Link al commento Condividi su altri siti More sharing options...
aleda5859 Inserita: 19 dicembre 2003 Autore Segnala Share Inserita: 19 dicembre 2003 ok..credo di aver capito come realizzare il tutto... (programma a parte s'intende ) ho postato l'immagine che ho relaizzato con eagle sul forum principale..dovrebbe spostarla..Altrimenti la discussione è l'unica mia sul forum generale PLC.. nel frattempo riprovo col programma...ah..cosa sono i cicli macchina? e in base a cosa scelgo il quarzo? come memorizzo i valori delle sette uscite per i numeri sui display nella eprom?e come li richiamo...?ok...intanto ringrazio !!! poi,delle troppe domande basta rispondere ad una alla volta... scusatemi se assillo.. (vai biiiiit) Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora