Vai al contenuto
PLC Forum


Orologio A Display - sette segmenti... e vai!!!


aleda5859

Messaggi consigliati

Ciao a tutti.

Io sono un ignorante assoluto e mi sono iscritto a questo forum soltanto (per adesso) perchè ho la necessità di costruirmi un tale orologio.

Lo schema che ho adottato l'ho copiato da qui: http://spazioinwind.libero.it/nferrarese/e...er/pictimer.htm

Con buona pace di quelli che pensano che le cose bisogna inventarle! :)

Link al commento
Condividi su altri siti


  • Risposte 157
  • Created
  • Ultima risposta

Top Posters In This Topic

  • aleda5859

    82

  • bit

    38

  • dlgcom

    13

  • Claudio F

    11

Top Posters In This Topic

Bhè vedi,il fatto era che partendo da zero potevo imparare meglio il percorso,difficoltà e soddisfazioni di un progetto.. stessa cosa per i componenti scelti..utilizzando decodifiche ecc sarebbe stato più facile fare il sw ma avrei appreso meno.. ecco tutto.

Grazie però per l'intervento potrebbe essere d'aiuto.. e benvenuto tr anoi!

Link al commento
Condividi su altri siti

Il fatto è che programmare da zero e progettare una cosa così va molto aldilà delle mie competenze, mentre questo oggetto mi serve con una certa urgenza.

Comunque poi le cose si imparano con pazienza.

Link al commento
Condividi su altri siti

Capisco l'urgenza. Se il progetto descritto nelle pagine che citi è quello che ti serve non hai che da realizzarlo. Non l'ho guardato attentamente, ma mi sembra che sia fornita tutta la documentazione per realizzarlo senza problemi.

Quello descritto è un timer (mi pare) qua invece stiamo realizzando un orologio, un po' differente. Se ti interessa piano piano lo realizzaremo.

Comunque benvenuto!

Ciao!

Per Aleda5859: A che punto è la realizzazione?

Link al commento
Condividi su altri siti

Sto collegando tutti i cavetti.. senti non sò come ho fatto ma ho perso i led(s) .. e indovina.. mi è venuta la febbre.. vorrei continuare quindi ho deciso di collegare il tutto per il momento senza i diodi.. va bene? così da provare per adesso interruttori e display..

Link al commento
Condividi su altri siti

Ta tara ta ta ta-tara-tata tataraaaa-taaaaaaaaaaaa!

Ecco la bread finita... wow..che casino!

Ma in linea di massima riesco a capirci.. che ne dite?

Cominciamo col software?

Link al commento
Condividi su altri siti

Mancano i led.. i diodi per la programmazione dei pulsanti sono in fondo a destra.. alto.

Programmazione? a zero.. non avevamo detto di fare prima la bread? ;):blink:

Link al commento
Condividi su altri siti

Non vedo l'immagine, ma è lo stesso...

Si, beh, non mi riferivo a questo progetto in particolare, intendevo se avevi mai fatto programmini per pic, anche semplici, o almeno letto qualcosa sull'argomento, tanto per conoscere almeno le istruzioni, o come impostare un programma.

Se non hai letto mai nulla ti consiglio il corso pubblicato su http://www.tanzilli.com/?id=207 è fatto molto bene e parte davvero da zero.

Poi cominceremo con i primi programmini.

Beh, appena ti sei documentato un po' prova a fare un programma che faccia le seguenti funzioni:

Programma 1:

Configurare i bit della porta A come uscite.

Configurare i primi 7 bit della porta B come uscite (quelli che vanno ai display).

Configurare l'ultimo bit della porta B come ingresso (quello con i pulsanti collegati)

Mettere a 1 il bit della porta A che pilota il primo display (lascia a 0 gli altri)

Mettere a 1 tutti i bit di uscita della porta B.

Si dovrebbero accentere tutti i segmenti del primo display.

Fine del primo programma di test.

Buon lavoro.

Link al commento
Condividi su altri siti

Si ho letto qualcosa..(direi più di qualcosa..) provo a postare il programmino allora..tento di rimandare l'immagine.. non la vedo neanche io.. :-(

Link al commento
Condividi su altri siti

ecco lo schema..

______________________________________________________________________________________________

PROCESSOR 16F84

RADIX DEC

INCLUDE "P16F84.INC"

ORG 0CH

count RES 2

ORG 00H

bsf STATUS,RP0

movlw 00000000

movwf TRISA

movlw 10000000

movwf TRISB

bsf PORTA,00001000

bsf PORTB,11111111

END

Link al commento
Condividi su altri siti

Non c'è male per essere tra i primi programmi, ti faccio solo alcune osservazioni.

Ecco il tuo programma con le correzioni:

PROCESSOR 16F84  ;intestazione corretta

RADIX DEC

INCLUDE "P16F84.INC"

;per ora questa parte non serve

; ORG 0CH

; count RES 2

ORG 00H ;inizio programma, per ora va bene così, poi vedremo

    ;di spostarlo più avanti, dobbiamo lasciare spazio

    ;al vettore di interruzione

bsf STATUS,RP0  ;corretto, i registri tris sono nel bank 1

movlw B'00000000'

movwf TRISA

movlw B'10000000'

movwf TRISB

bcf STATUS,RP0  ;alla fine però è necessario reimpostare il bank 0

    ;dove si trovano tutti i registri usati solitamente

;qua hai fatto un po' di confusione tra due istruzioni diverse:

; bsf PORTA,B'00001000'

; bsf PORTB,B'11111111'

;la sintassi corretta è questa (volendo impostare tutti i bit di una porta in un colpo solo):

movlw B'00001000'

movwf PORTA

movlw B'11111111'

movwf PORTB

;inoltre secondo la direttiva RADIX messa in alto i numeri sono espressi in decimale.

;se vuoi introdurli in binario devi metterli tra apici e farli precedere dalla lettera B

;come ti ho corretto

;l'istruzione bsf (e bcf) impostano invece un solo bit per volta

;quello che abbiamo fatto sopra con 4 istruzioni lo faremmo così:

bcf PORTA,0  ;bcf porta il bit a zero

bcf PORTA,1

bcf PORTA,2

bcf PORTA,3

bsf PORTA,4

bsf PORTB,0  ;bsf invece lo porta a uno

bsf PORTB,1

bsf PORTB,2

bsf PORTB,3

bsf PORTB,4

bsf PORTB,5

bsf PORTB,6

END

Link al commento
Condividi su altri siti

Ah! Le parti scritte dopo il punto e virgola sono tutti commenti. Il compilatore ignora ciò che si trova dopo di essi, quindi non fanno parte del programma.

Possiamo usare questo trucco anche per bloccare l'esecuzione di una istruzione durante un test, senza doverla cancellare.

Link al commento
Condividi su altri siti

Scusate ragazzi..

ma mi hanno fatto saltare il compu un altra volta..e come se non bastasse la donna delle pulizie ha decisamente annientato il programmatore...

I lavori saranno ritardati di un pochetto...

bit non hai qualche altra direttiva da farmi provare a scrivere..così che intanto faccio esercizio e ampliamo il codice?

Scusate... ;):(

Link al commento
Condividi su altri siti

Beh, se hai già testato questo programma e tutti i display puoi procedere con questi semplici programmini:

1-Far lampeggiare tutti i segmenti di un display alla cadenza di 1 lampeggio al secondo.

2-Realizzare l'effetto supercar (avanti e indietro) con i 7 led.

Ciao.

Modificato: da bit
Link al commento
Condividi su altri siti

ok..allora..lampeggio di tutti i display ad un secondo e supercar.. intanto provo pe ril primo!

Grazie ancora bit.

Questo è un progetto che vorrei portare alla maturità..credete che faremo in tempo per i primi di Giugno?

Ancora mile grazie!

Link al commento
Condividi su altri siti

Ok grazie per la fiducia..

Per fare il lampeggio ad un sec di distanza ( temporale ) devo impostare un ritardo nella istruzione di RETURN

o mettere un clock?

Link al commento
Condividi su altri siti

Non capisco la domanda.

Ti do un suggerimento. Poichè il programma dovrà solo accendere e spengere il display puoi crearti una subroutine di ritardo da 0,5 secondi; Il programma principale dovra quindi accendere il display, eseguire il ritardo, spengere il display, eseguire di nuovo il ritardo e ricominciare dall'accensione.

Ciao!

Link al commento
Condividi su altri siti

Aleda,

Non vorrei essere insistente , ma penso che dovresti studiarti le istruzioni base e l'uso del timer a bordo del pic .

Senza queste nozioni , non potrai fare molto.

Per esempio una istruzione base come BSF si usa per un bit e non un byte .

Leggi nella documentazione come funziona il TMR 0 che e' il principale , quali sono i registri associati e come funziona il prescaler.

Con questo strumento ti sara' facilissimo fare un ritardo.

Se non hai bisogno di precisione puoi anche usare un lool con un numero fisso di cicli che ti daranno un ritardo, ma devi sapere come associare un valora ad una variabile , come fare un salto condizionato ecc.

Quello che dice Bit e' giustissimo , ma come avevamo consigliato, questa fase avresti duvuto gia' passarla se avessi letto il corso di Tanzilli .

In questo corso ci sono gia' questi esempi per chiarire le basi della programmazione PIC.

E' normale che per il grande entusiasmo si voglia saltare delle fasi , ma e' come cercare di risolvere i sistemi senza sapere la tabellina del 9 o cosa significa il simbolo "+". ;)

Ora passiamo ai fatti :)

Il primo passo quindi e' creare una routine di ritardo per far lampeggiare il tuo led.

Ti faccio una domanda : come faresti tu una routine di ritardo?

Anche senza entrare in dettagli con le istruzioni , ma prova a costruire una logica su un pezzo di carta ...

Link al commento
Condividi su altri siti

Riciao a tutti!

Sono riuscito a completare il mio conto alla rovescia e per questo sono molto fiero.

A questo punto sto studiando il corso di Tanzilli per poter progettare qualcosa da solo.

Però ho una domanda pertinente: se volessi realizzare un orologio con display molto più grandi e visibili in pieno sole, come potrei fare?

Ho pensato a due cose: o fare dei display mettendo 5-6 led per ogni segmento (i d7s grandi costano un putiferio), oppure farli elettromeccanici.

Se volessi mettere tanti led in parallelo su ogni singola linea, mantenendo una luminosità accettabile, come farei a calcolare la resistenza da mettere in serie a monte di questi?

Qualcuno sa inoltre se esistono in commercio display 7s elettromeccanici? (ci sono in alcuni distributori di benzina).

Grazie ancora.

P.S. per Aleda: non ti scoraggiare; sono riuscito a fare un circuito stampato a doppia faccia senza bromografo, senza pennarelli, se vuoi ti scrivo come ho fatto via IM!

Link al commento
Condividi su altri siti

Salve a tutti,mi scuso per i ritardi ma essendo in vacanza non ho trovato un attimo per rispondere..

Il corso di tanzilli l'avevo studiato.. solo che passato un pò di tempo,essendomi dovuto concentrare sulla bread bord,ho un pò rimosso.. avevo anche scritto qualche programmino per conto mio.. e sommariamente credo tornassero.

In effetti poi,quando ho ricontrollato avrei potuto correggermi il prog da solo..

darò una riguardata e poi posterò qualche idea..

GRAZIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

Link al commento
Condividi su altri siti

Va bene una cosa del genere?

PER ADESSO HO SOLO COMPILATO LA FUNZIONE RITARDO..poi dovrei fare controllare al pic quando TMR0 è a zero e reimpostarlo (inizializzarlo giusto?) un altra volta a 125 .. è corretto?

Poi controllare che Count non sia a zero.. quando questo arriva a quel valore allora è passato un secondo e faccio spegnere i led per un altro secondo..e così via...

una domanda: Nella compilazione dei valori OPTION_REG a che corrispondono i vari bit?

bit0 : PS0

1: PS1

2:PS2

3:PSA

4:TOCS

E POI????? Quelli che ho scritto prima sono corretti??????aiuto... :P

PROCESSOR 16F84a

RADIX DEC

INCLUDE “P16F84.INC”

ORG 0CH

COUNT RES 2

ORG 00H

bsf STATUS,RP0

movlw ‘1000 0000’

movwf TRISB

movlw ‘1111 0000’

movwf TRISA

bcf STATUS,RP0

movlw ‘0111 1111’

movwf PORTB

movlw ‘00001111’

movwf PORTA

;subroutine Delay

Delay

movlw ‘00000110B’

movwf OPTION_REG

movlw 125

movwf TMR0

movlw 131

movwf COUNT

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...