Vai al contenuto
PLC Forum


Come Funziona Il Multiplex Su 16f84


battiesguscia

Messaggi consigliati

battiesguscia

Ciao a tutti!!

Mi sto esercitando un po in assembler!!

Voglio comandare due dispaly 7 segmenti con un pic 16f84.

Mi spiego:io cliccando un pulsante incremento di uno il numero sul display, con un altro pulsante scendo!!

Voglio contare fino a 99!!

Non riesco a capire la rountime del multiplex per i segmenti.

due uscite le uso per abilitazione display

altre sette per i segmenti.

Ciao e mille grazie..

Link al commento
Condividi su altri siti


Scusa ma la routine per pilotare i displies chi la fatta? Poi come li piloti i displaies? direttamente? c'è un hw di interfaccia?

Perchè le informazioni bisogna estorcerle e non le dai spontaneamente? :angry:

Link al commento
Condividi su altri siti

battiesguscia

Scusami per la descrizione spilorcia!!

Volevo comandare i due display direttamente dal pic!!

Ho scaricato qualche programma simile, ma non riesco a capire come facciano a funzionare!!

Mi spiego:ne ho visto uno che aveva una rountime con una specie di tabella dove c'era la corrispondenza del numero con le uscite da mandare alte!!, mentre un altro scaricava solo il valore dell'accumulatore sulll'uscite!!

Scusa ma non sono molto capace!!

Non riesco a capire i cicli che devo fare!!

Grazie mille se mi dai una mano a capire!!

Link al commento
Condividi su altri siti

Giorgio Demurtas

La procedura è la seguente:

-abilito la prima cifra

-sulle sette linee mando il numero che deve comparire nella prima cifra

-spengo al prima e accendo la seconda

-mando il numero per la seconda

-spengo la seconda e rincomincio

per gestire questa temporizzazione devi usare l'interrupt.

Un consiglio: non cimentarti in sw ancora troppo difficili per te. Non copiare il listato degli altri.

Studia bene il corso pic by example e comincia con i programmi più seplici (lampeggiare un led...). Vedrai che dopo ti sarà più facile far funzionare il tuo circuito.

ciao

Link al commento
Condividi su altri siti

  • 6 months later...

Ciao a tutti ; La cosa che vuole fare battiesguscia interessa anche a me .

Il corso "pic by example" ,molto utile e spiega anche come pilotare un display intelligente 16x2 non spiega come pilotare i display 7 segmenti ! :angry:

Pilotare più di un display 7 a mio parere è un po' complesso e il corso in questione non aiuta per niente a capire come si fa .

Se gentilissimamente qualcuno può farci un po' di scuola grasssie millleee !!!!! :P

Allora avendo un pic 16f84 collegato in questo modo :

- le uscite RB0,1,2,3,4,5,6,7 rispettivamente per i segmenti a,b,c,d,e,f,.

- le uscite RA0,1, per i 2 Display di tipo a k comune quindi devo mettere a zero un uscita di RAX per accendere il display interessato (ovvamente ci vuole un transistor per pilotare...)e mettere a uno i vari RBX per accendere i segmenti interessati .

- RA2 e RA3 rimangono liberi per collegare due pulsanti per fare incrementare e decrementare il valore sul display .

Link al commento
Condividi su altri siti

Allora mi sono messo di impegno e ho creato questo file.asm che purtroppo non funziona , dove ho sbagliato ? <_<

PROCESSOR 16F84

RADIX DEC

INCLUDE "P16F84.INC"

ERRORLEVEL -302

__CONFIG 3FF1H

SW1 EQU 0 ; incrementa

SW2 EQU 1 ; decrementa

DISP1 EQU 2 ; display unità

DISP2 EQU 3 ; display decine

ORG 0CH

tmp RES 1

unita RES 1

decine RES 1

ORG 00H

bsf STATUS,RP0

movlw 00000100B

movwf OPTION_REG

movlw 00000000B

movwf TRISB

movlw 00000011B

movwf TRISA

bcf STATUS,RP0

clrf unita

clrf decine

clrf PORTB

clrf PORTA

;***********************************************************************

; CONTROLLO PULSANTI

;***********************************************************************

Main

call Delay

btfss PORTA,SW1

goto inc

btfss PORTA,SW2

goto dec

goto contr1

;***********************************************************************

; COMANDI INCREMENTO E DECREMENTO

;***********************************************************************

inc incf unita,W

goto contr1

dec decf unita,W

goto contr1

;***********************************************************************

; COMANDI CONTROLLO UNITA' E DECINE

;***********************************************************************

contr1

sublw 10

btfss STATUS,Z

goto contr2

clrf unita

incf decine,f

contr2

sublw 255

btfss STATUS,Z

goto finecontr

clrf unita

decf decine,f

goto visualizza

finecontr

goto Main

;

;***********************************************************************

; COMANDI CONTROLLO DISPLAY

;***********************************************************************

visualizza

bsf PORTA,DISP1

movwf unita

call Tabella

movwf PORTB

bcf PORTA,DISP1

bsf PORTA,DISP2

movwf decine

call Tabella

movwf PORTB

goto Main

Tabella

addwf PCL,F

; .gfedcba

retlw B'00111111' ; 0

retlw B'00000110' ; 1

retlw B'01011011' ; 2

retlw B'01001111' ; 3

retlw B'01100110' ; 4

retlw B'01101101' ; 5

retlw B'01111101' ; 6

retlw B'00000111' ; 7

retlw B'01111111' ; 8

retlw B'01101111' ; 9

return

;***********************************************************************

; CHIAMATA RITARDO

;***********************************************************************

Delay

movlw 6

movwf TMR0

movlw 30

movwf tmp

DelayLoop

movf TMR0,W

btfss STATUS,Z

goto DelayLoop ;No, aspetta...

movlw 6 ;Si, reimposta TMR0 e controlla se

movwf TMR0 ;e' passato per 125 volte per lo zero

decfsz tmp,1

goto DelayLoop

return

;I pulsanti SW1 ed SW2 quando non sono premuti gli ingressi RA0 ed RA1

;sono normalmente a 5V e vanno a 0V quando si agisce su di essi .

;

;Il display è di tipo Katodo comune .

END

Modificato: da S.D.R.
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...