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 ---
Modérateur : mazertoc
Matrice et afficheur avec MAX7219
Bonjour tout le forum,
J'ai acheté un module de 8 afficheurs qui sont commandé par un Max7219 au prix de 1,25 euro voici son datasheet
Module de 8 afficheurs avec MAX7219
Le module à une dimension de 83mm X 15mm, on peut connecter un autre module derrière celui ci sur la sortie Dout
Mise en fonction du Max7219 avec 8 afficheurs
J'ai utilisé pour la mise en fonction du Max7219 un microcontrôleur Pic18F26K22, voici son datasheet
Schéma
... une fois branché comme sur le schéma, les afficheurs indique n'importe quoi.
La cause, c'est qu'il faut faire une fonction pour remettre les afficheurs à zéro... chose que j'ai faite, et là.....ça fonctionne.
https://youtu.be/T9EC2h9OmNs
Le code
Le code ASM a été écrit avec jens file Editor 3.95, dans ce code vous allez trouver
Conversion 24 bits binaire vers ASCII, écriture en eeprom et lecture, Initiation du Max7219, suppression des zéros qui sont à gauches.
Fichier code : Max7219(Code).zip
Fichier à mettre dans le Pic : Max7219(Hex).zip
******************************************************************************** Deuxième code ********************************************************************************
Mise en fonction du Max7219 avec 12 matrices
Malheureusement comme j'ai pas les 12 matrices, je ne peux pas vous le montrer en réelle,
Schéma
Le clavier est stocké en mémoire programme, comme on n'est plus gêné par la taille des données, j'ai mi les 255 caractères du clavier ASCII.
Avertissement je tiens à vous signaler qu'il soit possible que vos matrices acheté dans le commerce ne corresponde pas au branchement que j'ai effectué dans le simulateur, dans ce cas vous devrait réorganiser l'ordre des branchements dans le simulateur.
Fichier à mettre dans le Pic : Matrice-12(Hex).zip
Fichier code : Matrice-12(Code).zip
Bon maintenant, il me reste à faire tourner un message en boucle, d'une longueur maximum de 255 caractères
Pour l'instant je n'ai pas trouvé de solution satisfaisante, ... à suivre
J'ai acheté un module de 8 afficheurs qui sont commandé par un Max7219 au prix de 1,25 euro voici son datasheet
Module de 8 afficheurs avec MAX7219
Le module à une dimension de 83mm X 15mm, on peut connecter un autre module derrière celui ci sur la sortie Dout
Mise en fonction du Max7219 avec 8 afficheurs
J'ai utilisé pour la mise en fonction du Max7219 un microcontrôleur Pic18F26K22, voici son datasheet
Schéma
... une fois branché comme sur le schéma, les afficheurs indique n'importe quoi.
La cause, c'est qu'il faut faire une fonction pour remettre les afficheurs à zéro... chose que j'ai faite, et là.....ça fonctionne.
https://youtu.be/T9EC2h9OmNs
Le code
Le code ASM a été écrit avec jens file Editor 3.95, dans ce code vous allez trouver
Conversion 24 bits binaire vers ASCII, écriture en eeprom et lecture, Initiation du Max7219, suppression des zéros qui sont à gauches.
Code : Tout sélectionner
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
radix dec ; par defaut en mode décimal
list p=18f26K22 ; processeur utilisé
#include <p18f26K22.inc> ; Définitions des constantes
;***********************************************************************************************
; CONFIG11H
CONFIG FOSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
; CONFIG2L
CONFIG PWRTEN = OFF
CONFIG BOREN = OFF
CONFIG BORV = 190
; CONFIG2H
CONFIG WDTEN = OFF
CONFIG WDTPS = 1
; CONFIG3H
CONFIG CCP2MX = PORTC1
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTC6
CONFIG HFOFST = OFF
CONFIG T3CMX = PORTC0
CONFIG P2BMX = PORTC0
CONFIG MCLRE = INTMCLR
; CONFIG4L
CONFIG STVREN = OFF
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
; CONFIG5L
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
; CONFIG5H
CONFIG CPB = OFF
CONFIG CPD = OFF
; CONFIG6L
CONFIG EBTR0 = OFF
; CONFIG6H
CONFIG EBTR1 = OFF
; CONFIG7L
CONFIG EBTR2 = OFF
; CONFIG7H
CONFIG EBTR3 = OFF
;*************************************** assignations *****************************************
#DEFINE cs_1 LATC,0 ; RC0 activer ou désactiver la transmission
#DEFINE led1 LATA,0 ; RA0 led verte, témoin de mise en fonction de l'appareil
;********************************* "déclaration des variables" *********************************
CBLOCK H'0' ; zone de la sdram en bank 0
loop1 :1
loop2 :1
loop3 :1
loop4 :1
loop5 :1
afficheur :1
lettre ;1
temps :1
tmps :1
res24 :1
res16 :1
res8 :1
unité :1
dizaine :1
centaine :1
millième :1
dix_millième :1
cent_millième :1
un_millionième :1
dix_millionième :1
cent_millionième :1
adresse_hi :1
adresse_low :1
donner :1
ENDC
;********************************** "déclaration des macros" ***********************************
;
;************************** Macro pour écrit dans l'eeprom ************************************
ecriture_eeprom MACRO valeur1,valeur2,valeur3
movlw valeur1
movwf adresse_hi
movlw valeur2
movwf adresse_low
movf valeur3,W
movwf donner
call eeprom_ecriture
ENDM
;*************************** Macro pour lire dans l'eeprom ************************************
lecture_eeprom MACRO valeur1,valeur2
movlw valeur1
movwf adresse_hi
movlw valeur2
movwf adresse_low
call eeprom_lecture
ENDM
;******************************* "adresse de depart après reset" *******************************
ORG H'0'
bra debut
ORG H'8'
retfie
ORG H'18'
retfie
debut
;***************** "configuration de la bank sélectionné du microcontrôleur" *******************
movlw B'00000000'
movwf BSR
;******************** "configuration de l'oscillateur du microcontrôleur" **********************
movlw B'01110100' ; oscillateur à 16 Mhz, fréquence stable si PLL (16 * 4)= 64 Mhz
; movlw B'01100100' ; oscillateur à 8 Mhz, fréquence stable si PLL (8 * 4) = 32 Mhz
; movlw B'01010010' ; oscillateur à 4 Mhz, fréquence stable
; movlw B'01000010' ; oscillateur à 2 Mhz, fréquence stable
; movlw B'00110010' ; oscillateur à 1 Mhz, fréquence stable
movwf OSCCON
;**************************** configuration du registre OSCTUNE ********************************
movlw B'00000000' ; bit 6 à 1 : PLL * 4
movwf OSCTUNE ; bit 6 à 0 : PLL désactivé
;*************************** configuration du registre ANSELA **********************************
movlw B'00000000' ; en mode numérique :
movwf ANSELA ; en mode E/S : 2(RA0), 3(RA1), 4(RA2), 5(RA3), 7(RA5)
;**************************** configuration du registre ANSELB *********************************
movlw B'00000000' ; en mode numérique :
movwf ANSELB ; en mode E/S : 21(RB0), 22(RB1) 23(RB2), 24(RB3), 25(RB4), 26(RB5)
;**************************** configuration du registre ANSELC *********************************
movlw B'00000000' ; en mode numérique :
movwf ANSELC ; en mode E/S : 13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)
;*************************** configuration du registre ADCON0 **********************************
movlw B'00000000' ; b0 = ADON mise en service le convertiseur 0 = arrêt : 1 = marche
movwf ADCON0 ; b1 = GO/DONE indique la fin de la conversion analogique, et permet de lancer la conversion
; b2 à b6 = réglage de la sélection du canal
;*************************** configuration du registre ADCON1 **********************************
movlw B'00000000' ; b2 à b3 = 00 : sélection de la tension de reférence, Vref+ = Vss
movwf ADCON1 ; b0 à b1 = 00 : sélection de la tension de reférence, Vref- = Vdd
;***************** configuration des registres TRISA & TRISB & TRISC & TRISE *******************
movlw B'00000000' ; RA0(2), RA1(3), RA2(4), RA3(5), RA4(6), RA5(7), RA6(10), RA7(9)
movwf TRISA ;
movlw B'11111111' ; RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
movwf TRISB ;
movlw B'01010000' ; RC0(11), RC1(12), RC2(13), RC3(14), RC4(15), RC5(16), RC6(17), RC7(18)
movwf TRISC ;
movlw B'00001000' ; RE3(1)
movwf TRISE ;
; VSS(8), VSS(19), VDD(20)
;**************************** configuration du registre SSP1CON1 *******************************
movlw B'01000000' ; B7 = 0 : lecture des données au milieu
movwf SSP1STAT ; B'01000000'
movlw B'00100001' ; B0 ...B3 = spi en mode Maître, clock = FOSC/16, B5 = polarité négative
movwf SSP1CON1 ; 16 /16(quartz) = 1 Mbps
;**************************** configuration du registre INTCON2 ********************************
movlw B'00000000' ; B7 = 0 résistances en service
movwf INTCON2 ;
;**************************** configuration du registre WPUB ***********************************
movlw B'11111111' ; tirage de résistance sur : RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
movwf WPUB ; pas de tirage de résistance sur :
;**************************** configuration du registre INTCON *********************************
movlw B'00000000' ;
movwf INTCON ; interruption hors service
;************************************ départ du programme **************************************
clrf PORTA
clrf PORTB
clrf PORTC
clrf LATA
clrf LATB
clrf LATC
;**********************************************************************************************
bsf cs_1 ; désactivé l'émision du port spi
;***********************************************************************************************
bsf led1 ; led verte, témoin de mise en fonction de l'appareil
rcall _1s
bcf led1
rcall _1s
bsf led1
;********************************* "configuration du max 7219" *********************************
call max7219_ini ; initiation du max 7219
;***********************************************************************************************
lecture_eeprom 0,0 ; macro pour lecture de l'eeprom à l'adresse 0x00
movf donner,W
movwf res16 ;
;
lecture_eeprom 0,1 ; macro pour lecture de l'eeprom à l'adresse 0x01
movf donner,W ;
movwf res8 ;
;
clrf res24 ; n'est pas utilisé
;************************* "convertion de op3h & op3l pour afficheur" **************************
call conversion ; conversion 24 bits, 9 nombres pour 8 afficheurs
;***********************************************************************************************
rcall affiche_donner ; affiche 511
rcall _1s
rcall _1s
rcall _1s
movlw H'FF'
movwf res16
movlw H'FF'
movwf res8
call conversion ; conversion 24 bits, 9 nombres pour 8 afficheurs
rcall affiche_donner ; affiche 65535
rcall _1s
rcall _1s
rcall _1s
movlw H'13'
movwf res16
movlw H'E5'
movwf res8
call conversion ; conversion 24 bits, 9 nombres pour 8 afficheurs
rcall affiche_donner ; affiche 5093
rcall _1s
rcall _1s
rcall _1s
movlw H'E4'
movwf res24
movlw H'E7'
movwf res16
movlw H'25'
movwf res8
call conversion ; conversion 24 bits, 9 nombres pour 8 afficheurs
rcall affiche_donner ; affiche 15001381
boucle
goto boucle
;**************** "suprime les zéros qui sont à gauches et affiche les données" ****************
affiche_donner
movlw D'8' ; 8 nombres
movwf afficheur
lfsr FSR0,dix_millionième
supprimer_zero
movf INDF0,W
xorlw D'0'
btfss STATUS,Z
bra imprime_digits
bcf cs_1
movf afficheur,W
rcall spi
movlw B'00000000' ; éteindre les afficheurs qui affiche zéro
rcall spi
bsf cs_1
decf FSR0L,F ;
decfsz afficheur,F
bra supprimer_zero
return
;***********************************************************************************************
imprime_digits
movf INDF0,W
movwf lettre
rcall ecrit_digit
decf FSR0L,F
decfsz afficheur,F
bra imprime_digits
return
;***************************** "écrit les données sur le digit" ********************************
ecrit_digit
bcf cs_1
movf afficheur,W
rcall spi
movlw D'9' ; tableaux de nombre et de lettre
movwf PCLATH ; incrémenter PCLATH
movf lettre,W
call deco_bcd
rcall spi
bsf cs_1
return
;********************************* "configuration du max 7219" *********************************
max7219_ini
bcf cs_1
decodage
movlw 0x09 ; adresse 0x09, décodage du code B,
rcall spi
movlw 0x00 ; décodage du code B désactivé
rcall spi
bsf cs_1
nop
bcf cs_1
intensite
movlw 0x0A ; adresse 0x0A, réglage d'intensité
rcall spi
movlw 0x0A ; posibilité de réglage de 0xX0 à 0xXF
rcall spi ; sur la MAX7219 ne pas oublier de mettre une
bsf cs_1
nop
bcf cs_1
scan
movlw 0x0B ; adresse 0x0B, définir le nombre de digits
rcall spi ; que l'on souhaite exploiter de digit0 à digit8
movlw 0x07 ; ici, on explote les huits digits de 0 à 7
rcall spi
bsf cs_1
nop
bcf cs_1
eteint
movlw 0x0C ; adresse 0x0C, permet d'allumer ou d’éteindre l'afficheur
rcall spi
movlw 0x01 ; ici, afficheur allumé
rcall spi
bsf cs_1
nop
bcf cs_1
test
movlw 0xFF ; adresse 0xFF, test
rcall spi
movlw 0x00 ; ici, pas de test
rcall spi
bsf cs_1
effacer_digit ; éteint tous les afficheurs
movlw D'8' ; 8 afficheurs à traiter
movwf afficheur
eteindre
bcf cs_1
movf afficheur,W
rcall spi
movlw B'00000000'
rcall spi
bsf cs_1
decfsz afficheur,F
bra eteindre
return
;******************************* "gestion d'envoie du mode spi" ********************************
spi
movwf SSPBUF
attends
btfss SSPSTAT,BF ;
goto attends
movf SSPBUF,W ; clean SSPBUF
return
;************************* "pause de 1 seconde pour horloge de 16 Mhz" *************************
_1s
movlw D'190'
movwf loop1
movlw D'75'
movwf loop2
movlw D'21'
movwf loop3
decfsz loop1,F
bra $-D'2'
decfsz loop2,F
bra $-D'6'
decfsz loop3,F
bra $-D'10'
return
;************************************* "convertion 24 bits" ************************************
conversion
clrf unité
clrf dizaine
clrf centaine
clrf millième
clrf dix_millième
clrf cent_millième
clrf un_millionième
clrf dix_millionième
clrf cent_millionième
; "24 bits"
b24_7
btfss res24,7
bra b24_6
movlw D'8' ; 8388608
addwf un_millionième,F
movlw D'3' ; 388608
addwf cent_millième,F
movlw D'8' ; 88608
addwf dix_millième,F
movlw D'8' ; 8608
addwf millième,F
movlw D'6' ; 608
addwf centaine,F
movlw D'0' ; 08
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b24_6
btfss res24,6
bra b24_5
movlw D'4' ; 4194304
addwf un_millionième,F
movlw D'1' ; 194304
addwf cent_millième,F
movlw D'9' ; 94304
addwf dix_millième,F
movlw D'4' ; 4304
addwf millième,F
movlw D'3' ; 304
addwf centaine,F
movlw D'0' ; 04
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b24_5
btfss res24,5
bra b24_4
movlw D'2' ; 2097152
addwf un_millionième,F
movlw D'0' ; 097152
addwf cent_millième,F
movlw D'9' ; 97152
addwf dix_millième,F
movlw D'7' ; 7152
addwf millième,F
movlw D'1' ; 152
addwf centaine,F
movlw D'5' ; 52
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b24_4
btfss res24,4
bra b24_3
movlw D'1' ; 1048576
addwf un_millionième,F
movlw D'0' ; 048576
addwf cent_millième,F
movlw D'4' ; 48576
addwf dix_millième,F
movlw D'8' ; 8576
addwf millième,F
movlw D'5' ; 576
addwf centaine,F
movlw D'7' ; 76
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b24_3
btfss res24,3
bra b24_2
movlw D'5' ; 524288
addwf cent_millième,F
movlw D'2' ; 24288
addwf dix_millième,F
movlw D'4' ; 4288
addwf millième,F
movlw D'2' ; 288
addwf centaine,F
movlw D'8' ; 88
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b24_2
btfss res24,2
bra b24_1
movlw D'2' ; 262144
addwf cent_millième,F
movlw D'6' ; 62144
addwf dix_millième,F
movlw D'2' ; 2144
addwf millième,F
movlw D'1' ; 144
addwf centaine,F
movlw D'4' ; 44
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b24_1
btfss res24,1
bra b24_0
movlw D'1' ; 131072
addwf cent_millième,F
movlw D'3' ; 31072
addwf dix_millième,F
movlw D'1' ; 1072
addwf millième,F
movlw D'0' ; 072
addwf centaine,F
movlw D'7' ; 72
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b24_0
btfss res24,0
bra b16_7
movlw D'6' ; 65536
addwf dix_millième,F
movlw D'5' ; 5536
addwf millième,F
movlw D'5' ; 536
addwf centaine,F
movlw D'3' ; 36
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
;***********************************************************************************************
; "16 bits"
b16_7
btfss res16,7
bra b16_6
movlw D'3' ; 32768
addwf dix_millième,F
movlw D'2' ; 2768
addwf millième,F
movlw D'7' ; 768
addwf centaine,F
movlw D'6' ; 68
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b16_6
btfss res16,6
bra b16_5
movlw D'1' ; 16384
addwf dix_millième,F
movlw D'6' ; 6384
addwf millième,F
movlw D'3' ; 384
addwf centaine,F
movlw D'8' ; 84
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b16_5
btfss res16,5
bra b16_4
movlw D'8' ; 8192
addwf millième,F
movlw D'1' ; 192
addwf centaine,F
movlw D'9' ; 92
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b16_4
btfss res16,4
bra b16_3
movlw D'4' ; 4096
addwf millième,F
movlw D'0' ; 096
addwf centaine,F
movlw D'9' ; 96
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b16_3
btfss res16,3
bra b16_2
movlw D'2' ; 2048
addwf millième,F
movlw D'0' ; 048
addwf centaine,F
movlw D'4' ; 48
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b16_2
btfss res16,2
bra b16_1
movlw D'1' ; 1024
addwf millième,F
movlw D'0' ; 024
addwf centaine,F
movlw D'2' ; 24
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b16_1
btfss res16,1
bra b16_0
movlw D'5' ; 512
addwf centaine,F
movlw D'1' ; 12
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b16_0
btfss res16,0
bra b8_7
movlw D'2' ; 256
addwf centaine,F
movlw D'5' ; 56
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
;***********************************************************************************************
; "8 bits"
b8_7
btfss res8,7
bra b8_6
movlw D'1' ; 128
addwf centaine,F
movlw D'2' ; 28
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b8_6
btfss res8,6
bra b8_5
movlw D'6' ; 64
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b8_5
btfss res8,5
bra b8_4
movlw D'3' ; 32
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b8_4
btfss res8,4
bra b8_3
movlw D'1' ; 16
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b8_3
movlw B'00001111' ; 8, 4, 2, 1
andwf res8,W
addwf unité,F
;***********************************************************************************************
;***********************************************************************************************
movlw D'9' ; 9 variables à traiter
movwf loop5
lfsr FSR0,unité ; pointer à l'adresse de la variable "unité"
assembler
movf INDF0,W ; récupérer la valeur dans W
movwf tmps ; transmettre dans la variable "tmps"
incf FSR0L,F ; variable suivante
movf INDF0,W ; récupérer la valeur dans W
movwf temps ; transmettre dans la variable "temps"
;***********************************************************************************************
tr0
movf tmps,W
sublw D'10' ; retir 10 de W
btfsc STATUS,Z ;
bra tr1 ;
btfss STATUS,C ;
bra tr1 ;
bra tr2 ;
tr1
movlw D'10' ;
subwf tmps,F ;
incf temps,F ;
bra tr0
;***********************************************************************************************
tr2
movf temps,W
movwf INDF0 ; nouvelle valeur à cette adresse
decf FSR0L,F
movf tmps,W
movwf INDF0 ; nouvelle valeur à cette adresse
; movlw D'48' ; convertir en format ASCII, pas besoin de le faire
; addwf INDF0,F
incf FSR0L,F ; variable suivante
decfsz loop5,F ;
bra assembler
return
;****************************** "pour écrit dans l'eeprom" *************************************
eeprom_ecriture
movf adresse_hi,W ; adresse du poid fort
movwf EEADRH ;
movf adresse_low,W ; adresse du poid faible
movwf EEADR ;
movf donner,W ;
movwf EEDATA ; écriture de la donnée
bcf EECON1,EEPGD ; préparation à l'autorisation
bcf EECON1,CFGS ; access eeprom
bsf EECON1,WREN ; Enable writes
bcf INTCON,GIE ; couper les interruptions
btfsc INTCON,GIE ; contrôl si les interruptions sont bien coupés
bra $-D'2' ; remonte à la ligne 2 jusqu'a coupures des interruptions
movlw H'55' ; séquence spécifique (c'est comme ça, il faut le savoir)
movwf EECON2 ; séquence spécifique
movlw H'AA' ; séquence spécifique
movwf EECON2 ; séquence spécifique
bsf EECON1,WR ; lance une opération d'écriture
btfsc EECON1,WR ; on attend que l'operation d'ecriture soit finie (de l'ordre de la ms
bra $-D'2' ; remonte à la ligne 2 jusqu'a fin d'écriture
bcf EECON1, WREN ; interdiction de l'écriture
return
;******************************** "pour lire dans l'eeprom" ************************************
eeprom_lecture
movf adresse_hi,W ; adresse du poid fort
movwf EEADRH ;
movf adresse_low,W ; adresse du poid faible
movwf EEADR ;
bcf EECON1,EEPGD ; préparation à la lecture
bcf EECON1,CFGS ; access EEPROM
bsf EECON1,RD ; lecture de l'EEPROM
movf EEDATA,W ; la valeur lue dans l'éeprom est placée dans W
movwf donner
return
;*********************************** "décodage du code BCD" ************************************
ORG H'900'
deco_bcd
rlncf WREG,F
addwf PCL,F
retlw B'01111110' ; 0
retlw B'00110000' ; 1
retlw B'01101101' ; 2
retlw B'01111001' ; 3
retlw B'00110011' ; 4
retlw B'01011011' ; 5
retlw B'01011111' ; 6
retlw B'01110010' ; 7
retlw B'01111111' ; 8
retlw B'01111011' ; 9
retlw B'01110111' ; A
retlw B'01001111' ; E
retlw B'01000111' ; F
retlw B'00110111' ; H
retlw B'00001110' ; L
retlw B'01100111' ; P
retlw B'01011011' ; S
retlw B'00111110' ; U
retlw B'00111011' ; Y
;************ " écriture dans l'eepromm au début de la programmation du Pic18F26k22" ************
DATAEE ORG H'F00000'
DE 0x01,0xFF
End
Fichier code : Max7219(Code).zip
Fichier à mettre dans le Pic : Max7219(Hex).zip
******************************************************************************** Deuxième code ********************************************************************************
Mise en fonction du Max7219 avec 12 matrices
Malheureusement comme j'ai pas les 12 matrices, je ne peux pas vous le montrer en réelle,
Schéma
Le clavier est stocké en mémoire programme, comme on n'est plus gêné par la taille des données, j'ai mi les 255 caractères du clavier ASCII.
Avertissement je tiens à vous signaler qu'il soit possible que vos matrices acheté dans le commerce ne corresponde pas au branchement que j'ai effectué dans le simulateur, dans ce cas vous devrait réorganiser l'ordre des branchements dans le simulateur.
Fichier à mettre dans le Pic : Matrice-12(Hex).zip
Fichier code : Matrice-12(Code).zip
Bon maintenant, il me reste à faire tourner un message en boucle, d'une longueur maximum de 255 caractères
Pour l'instant je n'ai pas trouvé de solution satisfaisante, ... à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 14 juin 2020 12:51, modifié 24 fois.
Matrice et afficheur avec MAX7219
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous,
le lien sur le code correspond à ta version 8 afficheurs 7 segment
et non pas (au schema) 12 Matrices 8x8
Je serais curieux de tester ton code , meme avec 2 blocs de 4 matrices
A+
TempsX a écrit :deuxieme code ....
Mise en fonction du Max7219 avec 12 matrices
le lien sur le code correspond à ta version 8 afficheurs 7 segment
et non pas (au schema) 12 Matrices 8x8
Je serais curieux de tester ton code , meme avec 2 blocs de 4 matrices
A+
Matrice et afficheur avec MAX7219
Bonsoir paulfjujo, et tout le forum,
Je comprends pas ce que tu veux dire.....
J'ai bien peur que cela ne soit pas possible, car j'ai câblé les matrices en fonction de l'afficheur trouvé dans le simulateur.
Si ça fonctionne tu auras une sacré chance(il faudra continuer à manger du lapin)
Je travaille actuellement sur un défilement en boucle avec phrase de 255 caractères, je comprends pourquoi tu te tapes le mur
Faut le vivre pour le comprendre, et sa fait mal un mur ...
A+
paulfjujo a écrit :Source du message le code correspond à ta version 8 afficheurs 7 segment
Je comprends pas ce que tu veux dire.....
paulfjujo a écrit :Source du message Je serais curieux de tester ton code , meme avec 2 blocs de 4 matrices
J'ai bien peur que cela ne soit pas possible, car j'ai câblé les matrices en fonction de l'afficheur trouvé dans le simulateur.
Si ça fonctionne tu auras une sacré chance(il faudra continuer à manger du lapin)
Je travaille actuellement sur un défilement en boucle avec phrase de 255 caractères, je comprends pourquoi tu te tapes le mur
Faut le vivre pour le comprendre, et sa fait mal un mur ...
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 84 invités