Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Tout ce qui n'a pas de catégorie !
test d' un affichage a max7219
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#1 Message par ducran lapoigne » mer. 13 juin 2018 21:20

bonsoir tous

vous avez surement déja vu ceci sur la bay ou chez ali qui_court_vite
max7219dsp.jpg


l' afficheur s' interface avec 3 signaux : data / clock / load

Code : Tout sélectionner

;**********************************************************************
;
;
    NOM:      max7219 / 16F84
;    Date:     25/11/2017
;    Version:  1.0
;    Circuit:
;
    Auteur:
;
;**********************************************************************
;
                                                                     
;    Fichier requis: P16F84.inc                                       
;                                                                     
;**********************************************************************
;
                                                                     
;    Notes: affiche 76543210 sur un afficheur 8 digits à MAX7219 
;           
;           
;                                                                     
;
;
;
;
;
    
;                                                    
;                                                    
;             ________________________                _______________
;            |                        |              |               |
;
            |1 RA2            RA1 18 |              |               |
;
            |                        |              |               |
;
            |2 RA3            RAO 17 |              |               |
;
            |                        |              |               |
;
            |3 RA4/TOCKI     OSC1 16 |              |               |
;
            |                        |              |               |
;
            |/MCLR         OSC2 15 |              |               |
;
            |                        |              |               |
;
            |5 Vss            VDD 14 |              |               |
;
            |                        |              |               |
;
            |6 RBO/INT        RB7 13 |------------- | D_in          |
;
            |                        |              |               |
;
            |7 RB1            RB6 12 |------------- | Clk           |
;
            |                        |              |               |
;
            |8 RB2            RB5 11 |------------- | LOAD          |
;
            |                        |              |               |
;
            |9 RB3            RB4 10 |              |               |
;
            |_______________________ |              |_______________|
;
;
                PIC16F84                                 MAX7219
;
;
;
;
;


    LIST      p=16F84            ; Définition de processeur
    
#include <p16F84.inc>        ; Définitions de variables

 __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC


;*********************************************************************
;
                              ASSIGNATIONS                          *
;*********************************************************************

OPTIONVAL    EQU    H'0008'    ; Valeur registre option
                        
; Résistance pull-up ON
                        
; Pas de préscaler

;*********************************************************************
;
                             DEFINE                                 
;*********************************************************************

#DEFINE PAGE0 bcf STATUS,RP0
#DEFINE PAGE1 bsf STATUS,RP0
#define    CLK_Pin        PORTB, 6
#define    DATA_Pin    PORTB, 7
#define    LATCH_Pin    PORTB, 5

;*********************************************************************
;
                             CONSTANTES                              
;*********************************************************************
MAX_Digit_0        equ 0x01
MAX_Digit_1        equ 0x02
MAX_Digit_2        equ 0x03
MAX_Digit_3        equ 0x04
MAX_Digit_4        equ 0x05
MAX_Digit_5        equ 0x06
MAX_Digit_6        equ 0x07
MAX_Digit_7        equ 0x08
MAX_decode_mode        equ 0x09
MAX_Intensity        equ 0x0A
MAX_Scan_Limit        equ 0x0B
MAX_Shutdown        equ 0x0C
MAX_display_Test    equ 0x0F

;*********************************************************************
;
                             MACRO                                  
;*********************************************************************



;*********************************************************************
;
                   DECLARATIONS DE VARIABLES                        
;*********************************************************************

    CBLOCK 0x00C        ; début de la zone variables
    rien        
: 4     ;
    Ones        : 8    ;
    bit_counter    : 1    ;
    gp_loc0        : 1     ;
    gp_loc1     : 1    ;
    maxim_hi    : 1    ;
    maxim_lo    : 1    ;

    ENDC                ; Fin de la zone 
  


;*********************************************************************
;
                      DEMARRAGE SUR RESET                           
;*********************************************************************

    org     0x000         ; Adresse de départ après reset
    call    initports
    movlw    D
'0'        ; sera affiché sur digit le + a droite
    movwf    Ones
    movlw    D
'1'
    movwf    Ones +1    
    movlw    D
'2'
    movwf    Ones +2    
    movlw    D
'3'
    movwf    Ones +3    
    movlw    D
'4'
    movwf    Ones +4    
    movlw    D
'5'
    movwf    Ones +5    
    movlw    D
'6'
    movwf    Ones +6    
    movlw    D
'7'
    movwf    Ones +7    
    call    init_MAXIM    
; initialiser le max7219
    call    disp_32     
; afficher   
forever      
      nop
      goto forever

;*********************************************************************
;
           INITIALISATION DES PORTS ET DES VARIABLES                             
;*********************************************************************
initports
    CLRF    PORTA                
;
    CLRF    PORTB                ;
    PAGE1                    ;page 1
    MOVLW    B
'00000001'            ;tout le port en sortie sauf b0
    MOVWF    TRISB                
;configuration port B
    MOVLW    B
'00011111'            ;pour l' exemple
    MOVWF    TRISA                ;configuration port A
    MOVLW    OPTIONVAL            ;B'
00000000'            ;
    MOVWF    OPTION_REG            ;configuration OPTION
    PAGE0                    ;page 0
    CLRF    PORTB                ;
    return
;*************************************************************************
;                        initialisation du MAX7219
;**************************************************************************
init_MAXIM
    movlw   00
    movwf   PORTB


shutdown
    movlw   MAX_Shutdown
    movwf   maxim_hi
    movlw   0x01            ; turn on display
    movwf   maxim_lo
    call    disp_write
decode_mode
    movlw   MAX_decode_mode    ; adresse registre '
Decode mode'du MAX7219
    movwf   maxim_hi
    movlw   0xFF            ; code pour decode for all digits
    movwf   maxim_lo
    call   disp_write
intensity
    movlw   MAX_Intensity    ; adresse registre '
Intensity 'du MAX7219
    movwf   maxim_hi
    movlw   0x0B            ; max intensity (min 01  max 0F )
    movwf   maxim_lo
    call    disp_write
scan_limit
    movlw   MAX_Scan_Limit    ; adresse registre '
scan limit 'du MAX7219
    movwf   maxim_hi
    movlw   H'
07'            ; 8 digits
    movwf   maxim_lo
    call    disp_write
disp_test
    movlw   MAX_display_Test    ; adresse registre '
Display test'du MAX7219
    movwf   maxim_hi
    movlw   H'
00'                ; test
    movwf   maxim_lo
    call    disp_write
    return
;*************************************************************************
;  sous routine envoi de commandes ou data vers le max7219
;  sous la forme d'
 un mot de 16 bits
;  Le MSB (bit15) est envoyé le premier                      
;**************************************************************************
disp_write:
    movlw   h'00'
    movwf   PORTB
    movlw   h
'08'            ; counter
    movwf   bit_counter
    bcf     STATUS 
,C        ; clear carry
loop_hi
    rlf     maxim_hi
,f
    btfss   STATUS 
,C
    goto    toggle_clock_hi
    bsf     DATA_Pin
toggle_clock_hi
    bsf     CLK_Pin
    bcf     CLK_Pin
    bcf     DATA_Pin        
; if set,reset it.
    decfsz  bit_counter,f
    goto    loop_hi
    movlw   h
'08'            ; counter
    movwf   bit_counter
    bcf     STATUS 
,C        ; clear carry
loop_lo
    rlf     maxim_lo
,f
    btfss   STATUS 
,C
    goto    toggle_clock_lo
    bsf     DATA_Pin
toggle_clock_lo
    bsf     CLK_Pin
    bcf     CLK_Pin
    bcf     DATA_Pin        
; if set,reset it.
    decfsz  bit_counter,f
    goto    loop_lo
toggle_load
    bsf     LATCH_Pin
    bcf     LATCH_Pin

    return                    
;
;**************************************************************************
       
; affiche le contenu de Ones sur le digit de droite, puis Ones+1 Ones+2.....
;
 jusque Ones +
; Ones +7 affiché sur le digit le + a gauche
;**************************************************************************  
disp_32
    movlw   Ones                
; address for "ONES"
    movwf   FSR                    ; data-pointer
    movlw   h
'08'                ; counter : number digits to display
    movwf   gp_loc0                
; to var 'gp_loc0'
    movlw   h'01'                ; first digit reg addr
    movwf   gp_loc1                
; to var 'gp_loc1'
    
next_digit
    movf    gp_loc1
,w            ; addr digit -> W
    movwf   maxim_hi            
;
    movf    INDF,w                ; data to display -> W
    movwf   maxim_lo            
;
    call    disp_write            ;
    incf    FSR,f                ; pointer to next data
    incf    gp_loc1
,f            ; addr digit = addr digit+
    decfsz  gp_loc0
,f            ; 
    goto    next_digit            
; done ???
    return

    end
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

test d' un affichage a max7219
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » mer. 13 juin 2018 22:47

Bonjour,
Ici, une discussion sur les matrices de LED en 8*8. Au message 52, j'ai posté une vidéo avec un message défilant.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

test d' un affichage a max7219
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#3 Message par ducran lapoigne » jeu. 14 juin 2018 10:36

like_it.jpg


Merci pour le lien,
du coup je viens de commander 4 matrices au chinois de service
pour ne pas recopier bêtement, ce sera en asm
++ sur le forum
Antoine
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

test d' un affichage a max7219
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » jeu. 14 juin 2018 17:23

Attention, il y a avec MAX CMS et MAX traversant.

Tu as acheté quel modèle?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

test d' un affichage a max7219
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#5 Message par ducran lapoigne » jeu. 14 juin 2018 23:58

des MAX CMS mais pas assemblés cad 4 pièces séparées

d' après les photos ce devrait être un jeu d' enfant de les assembler

il y a une différence dans la programmation ?

test d' un affichage a max7219
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#6 Message par Gérard » ven. 15 juin 2018 07:02

Oui, c'est facile de les assembler, il y a 5 cavaliers à mettre pour l'alim et le bus SPI. (+ 2 pour le maintien)
La programmation est un peu différente parce que la matrice de LED est tournée de 90°.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

test d' un affichage a max7219
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#7 Message par paulfjujo » ven. 15 juin 2018 09:00

bonjour à vous,

N'y at-il pas confusion d'afficheur ?

en debut de post, c'est un max7219 pour 8 afficheurs 7 segments

les afficheurs matriciel 8x8 , c'est autre chose ..
1 max7219 par afficheur

:-D on aura donc les 3 versions !
Basic , ASM
et C
la version 8x 7segm. 16F887 en C

ou version C 8x 7segm. avec 18F45K22
avec le point decimal inclus dans le meme afficheur ( OU logique avec 2 fontes caracteres)
via une procedure specifique d'affichage Degres celcius
Aide toi, le ciel ou FantasPic t'aidera

test d' un affichage a max7219
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#8 Message par F6FCO » ven. 15 juin 2018 15:41

Ah oui, ce serait bien pour afficher les déplacement des chariots CNC (oui je sais, j'ai un Toc !!! :mur: )
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 49 invités