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 ---
- 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 ---
test d' un affichage a max7219
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
bonsoir tous
vous avez surement déja vu ceci sur la bay ou chez ali qui_court_vite
l' afficheur s' interface avec 3 signaux : data / clock / load
vous avez surement déja vu ceci sur la bay ou chez ali qui_court_vite
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 | | |
; | | | |
; |4 /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 +7
; 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+1
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
test d' un affichage a max7219
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
test d' un affichage a max7219
test d' un affichage a max7219
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
test d' un affichage a max7219
test d' un affichage a max7219
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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
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
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
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
test d' un affichage a max7219
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 52 invités