home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca
 
SEMPLICE UP-DN CON LCD 7 SEGMENTI, 2 PULSANTI E PIC tipo: livello:
Conteggio su e giu' da 0-9 con semplici pulsanti e display a 7 segmenti, possibilita' di sostituzione pulsanti con fotocellule quindi possibilita' di creare un conta pezzi
 
 




Conteggio a pulsanti

Semplicissimo up-down con pulsanti, conteggio da 0 a 9 più lettere

clicca per ingrandire

dalla A-F, bello nel conteggio di giochi di societa' come segna punti, possibilita' di sostituire i pulsanti con delle fotocellule (norlmalmente aperto) in modo da usarlo come conta pezzi,possibilita' di ampliare il progetto con 2 o piu' display. 

Descrizione


Nulla di particolare, con un pulsante si incrementa il conteggio, con l'altro si decrementa

7 resistenze da 330 ohm, il resto si vede dall'immagine, di seguito il filesorgente in assembler per la programmazione del PIC.


;-----------------------------------------------------
; Prog. conteggio esa con pulsanti up/down e antirimbalzo
;-----------------------------------------------------
            PROCESSOR  16F84A
            RADIX      DEC
            INCLUDE    "P16F84.INC"
            __CONFIG   11110100010000B
;-----------------------------------------------------
            ORG        32
VALORE      RES        1
H_CONT       RES        1
L_CONT      RES        1
#DEFINE     PULS_UP    PORTA,0
#DEFINE     PULS_DN    PORTA,1

;-----------------------------------------------------
            ORG        0
                     CALL       INIT         ;Chiama subr.inizializzazione
MAINLOOP    BTFSS      PULS_UP      ;Se non premuto PULS_UP skip
                     CALL       GESTUP       ;altrimenti chiama GESTUP
                     BTFSS      PULS_DN      ;Se non premuto PULS_DN skip
                     CALL       GESTDN       ;altrimenti chiama GESTDN
                     GOTO       MAINLOOP     ;Nuovo ciclo del programma
;-----------------------------------------------------
INIT        BSF        STATUS,RP0   ;Attiva banco 1
            CLRF       TRISB        ;Rende PORTB un'uscita
            BCF        STATUS,RP0   ;Ritorna al banco 0
            MOVLW      7
            MOVWF      CMCON        ;PORTA = I/O digitali
            CLRF       VALORE       ;Azzera valore
            CLRW
            CALL       DISPLAY      ;Chiama subroutine display
            RETURN
;-----------------------------------------------------
GESTUP      CALL       DELAY        ;Ritardo antirimbalzo
            BTFSC      PULS_UP          ;Se ancora premuto skip
            RETURN                            ;altrimenti ritorna
            MOVLW      15
            SUBWF      VALORE,W     ;W=VALORE-15
            BTFSS      STATUS,C        ;Se VALORE >= 15 skip
            INCF       VALORE,F          ;altrimenti incrementa VALORE
            MOVF       VALORE,W     ;W=VALORE
            CALL       DISPLAY           ;Chiama subroutine display
GESTUP2     BTFSS      PULS_UP      ;Se non premuto PULS_UP skip
            GOTO       GESTUP2         ;altrimenti attendi
            CALL       DELAY             ;Ritardo antirimbalzo
            BTFSS      PULS_UP      ;Se non premuto skip
            GOTO       GESTUP2      ;Altrimenti attendi
            RETURN
;-----------------------------------------------------
GESTDN      CALL       DELAY        ;Ritardo antirimbalzo
            BTFSC      PULS_DN      ;Se ancora premuto skip
            RETURN                        ;Altrimenti ritorna
            MOVF       VALORE,W
            SUBLW      0                    ;W=0-VALORE
            BTFSS      STATUS,C     ;Se VALORE <=0 skip
            DECF       VALORE,F     ;altrimenti decrementa VALORE
            MOVF       VALORE,W     ;W=VALORE
            CALL       DISPLAY         ;Chiama subroutine display
GESTDN2     BTFSS      PULS_DN      ;Se non premuto PULS_DN skip
            GOTO       GESTDN2      ;altrimenti attendi
            CALL       DELAY            ;Ritardo antirimbalzo
            BTFSS      PULS_DN      ;Se non premuto skip
            GOTO       GESTDN2      ;Altrimenti attendi
            RETURN
;-----------------------------------------------------
DELAY       MOVLW      15
            MOVWF      H_CONT
            CLRF       L_CONT
DELAY2      DECF       L_CONT,F     ;Decrementa parte bassa CONT
            CMCON      L_CONT,W     ;Inverte i bit
            BTFSC      STATUS,Z     ;Se tutti zero c'è stato rollover
            DECF       H_CONT,F     ;allora decrementa parte alta
            MOVF       L_CONT,W     ;Carica in W la parte bassa
            IORWF      H_CONT,W     ;Mettila in OR con la parte alta
            BTFSS      STATUS,Z     ;Se tutto zero skip (fine ciclo)
            GOTO       DELAY2       ;Altrimenti ritorna a DELAY2
            RETURN
;-----------------------------------------------------
DISPLAY     CALL       TABDISP      ;Chiama subroutine conversione
            MOVWF      PORTB        ;Scrive valore dei LED su PORTB
            RETURN
;-----------------------------------------------------
TABDISP     ADDWF      PCL,F        ;Conversione esa->display
            RETLW      00111111B    ;0
            RETLW      00000110B    ;1
            RETLW      01011011B    ;2          -0-
            RETLW      01001111B    ;3        5|   |1
            RETLW      01100110B    ;4          -6-
            RETLW      01101101B    ;5        4|   |2
            RETLW      01111101B    ;6          -3- .7
            RETLW      00000111B    ;7
            RETLW      01111111B    ;8
            RETLW      01101111B    ;9
            RETLW      01110111B    ;A
            RETLW      01111100B    ;B
            RETLW      00111001B    ;C
            RETLW      01011110B    ;D
            RETLW      01111001B    ;E
            RETLW      01110001B    ;F
;-----------------------------------------------------
            END








 





  il parere della community
esprimi il tuo voto approvi questa pagina? promo


  non sei autenticato, per questo non puoi visualizzare i commenti sulla pagina. Se sei registrato accedi oppure registrati.


difficoltà
costo
informazioni
Questa pagina è stata creata da giangy21
il 11/01/2008 ore 16:31
ultima modifica del 16/01/2008 ore 20:42
la pagina è stata visitata 4756 volte




Lo staff di www.grix.it non si assume responsabilità sul contenuto di questa pagina.
Se tu sei l'autore originale degli schemi o progetti proposti in questo articolo, e ritieni che siano stati violati i tuoi diritti, contatta lo staff di www.grix.it per segnalarlo.

   
 

 
 
indietro | homepage | torna su copyright © 2004/2020 GRIX.IT - La community dell'elettronica Amatoriale