Bonsoir
je suis en train de faire une monatge ou j emploie un 8M2 et un Max7219, a fin d afficher un caractere en fonction d une tension lue
Sur l ebauche de mon programme , PE5 me dis:" Error: #Directive error - invalid #picaxe type "
un peu serai t il possible svp ?
Par avance merci
je suis en train de faire une monatge ou j emploie un 8M2 et un Max7219, a fin d afficher un caractere en fonction d une tension lue
Sur l ebauche de mon programme , PE5 me dis:" Error: #Directive error - invalid #picaxe type "
Code:
;Afficheur driver MAX7219
;Matrice de leds 8x8
;JR 15/18/2017
;Format des registres MAX 7219 sur 16 bits:
;|------------------------------w13------------------------------| |
;|-----------b27-----------------|------------b26 ---------------|
;|-X-|-X-|-X-|-X-|--ADRESSE------|----------DONNEES--------------|
;|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00|
#picaxe 8M2
setfreq m32
symbol DIN = C.0 ;Entrée Data In de l'afficheur
symbol LOAD = C.1 ;Entrée Load de l'afficheur
symbol CLK = C.2 ;Entrée CLK de l'afficheur
symbol CAPT = C.4 ;valeur capteur bdv
symbol LEN = 1 ;durée impulsion 1ms
symbol num = b1 ;colonne
symbol cpt = b2 ;compteur
symbol calv = w10 ;valeur de la tension du capteur en volt au momment de la mesure
;
symbol chif =b6
symbol val =b7
symbol cpt2=b8
symbol regis =w13 ;=(b27,b26) chaque bit sera envoyé dans le registre
low DIN
low LOAD
low CLK
;***** description des colonnes (digits) en RAM:
;chiffre "1":
table 10,(0,0,0,%11111111,%11111111,0,0,0)
;chiffre "2":
table 20,(0,%11111011,%11111011,%11011011,%11011011,%11011111,%11011111,0)
;chiffre "3":
table 30,(0,%11000011,%11000011,%11011011,%11011011,%11111111,%11111111,0)
;chiffre "4":
table 40,(0,%00111111,%00111111,%001100000,%11111000,%11111000,%00110000,0)
;chiffre "5":
table 50,(0,%11011111,%11011111,,%11011011,%11011011,%11111011,%11111011,0)
;chiffre "6":
table 60,(0,%11111111,%11111111,,%11011011,%11011011,%11111011,%11111011,0)
;lettre N
table 70,(0,%11111111,%11111111,%00001110,%000111110,%11111111,%11111111,0)
;lettre R
table 80,(0,%11111111,%11111111,%00011011,%00111011,%11101111,%11001111,0)
;lettre E
table 90,(0,%11111111,%11111111,%11011011,%11011011,%11000011,%11000011,0)
;******** initialisation 7219 *******
b27=$09 'mode décodage
b26=%00000000 'pas de décodage code B mais segments
gosub shiftt
b27=$0b 'limite scanner = Nbre de digits
b26=$07 '$04=5 digits ,$03=4 digits,, etc...
gosub shiftt
b27=$0c 'shutdown mode
b26=$01 '=normal (afficheur actif)
gosub shiftt
b27=$0a 'luminosité
b26=$04 '=croissante de 0 à 15, ici c'est 4
gosub shiftt
b27=$0f 'display test
b26=$00 '=normal
gosub shiftt
Debut:
readadc capt, calv
if calv<20 then table 90
endif
if calv>4980 then table 90
endif
if calv>20 and calv<250 then table 80
endif
if calv>250 and calv<500 then table 70
endif
if calv>550 and calv<1200 then table 10
endif
if calv>1200 and calv<1900 then table 20
endif
if calv>1900 and calv<2700 then table 30
endif
if calv>2750 and calv<3500 then table 40
endif
if calv>3550 and calv<4450 then table 50
endif
if calv>4550 and calv<4950 then table 60
endif
goto debut
;******** Sous programme affichage *************************
;Format du registre sur 16 bits:
;|------------------------------w13------------------------------| |
;|-----------b27-----------------|------------b26 ---------------|
;|-X-|-X-|-X-|-X-|--ADRESSE------|----------DONNEES--------------|
;|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00|
;Ex: chiffre 5 dans digit 2
;|-X-|-X-|-X-|-X-| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
;La broche DIN va prendre successivementla valeur de chaque bit de w13, scanné de gauche à droire
shiftt:
for cpt=1 to 16 ;test des 16 bits de w13
w12=w13 & $8000 ;w13 = b27,b26 & %1000 0000 0000 0000: on ne garde que le 1er bit à gauche de w12
low DIN ; broche DIN à 0 à priori
if w12=0 then saut ;w12 contient la valeur (0 ou 1) à transmettre
high DIN ;;on ne passe ici que si w12 <> 0, alors DIN =1 (évidemment)
saut: pulsout CLK,LEN ; envoi 1 pulse horloge pour valider DIN
w13=w13*2 ; on décale w13 vers la gauche pour examiner le bit suivant
next cpt
pulsout LOAD,LEN ;chargement du registre terminé, un pulse sur load valide le registre (commande ou affichage)
return
tst:
;****** test segments ****************
b27=$0f 'display test
b26=$01 '=tous les segments de tous les digits allumés
gosub shiftt
do loop while test=0
b27=$0f 'display test
b26=$00 '=normal
gosub shiftt
return
Par avance merci