Bonjour à tous

chris7382

New Member
J'ai créé un petit montage à l'aide d'un 28X1, d'un codeur de 7 segment type CD4511 et d'un afficheur 4 digit - 7 segment câblé sur le Port B
La variable W1 contient une valeur simulée pour l'instant, mais qui sera issue du convertisseur A/D
J'utilise la fonction DIG pour séparer les digits à afficher, voici le soft :
w1 = 4321
Routine:
b4 = w1 DIG 3
b4 = 128 + b4 ' 128= LSD : digit de poids fort
outpins = b4 ' var B0 + B7
b5 = w1 DIG 2
b5 = 64 + b5 ' 64= 2d LSD
outpins = b5
b6 = w1 DIG 1
b6 = 32 + b6 ' 32= 3d LSD
outpins = b6
b7 = w1 DIG 0
b7 = 16 + b7 ' 16= MSD : : digit de poids faible
outpins = b7
inc w1
goto Routine

Etrangement, rien ne se passe comme prévu, l'incrémentation évolue, mais l'affichage ne passe pas d'unité en unité ???
Je suis vraiment dubitatif.....
Merci d'avance
 

MGU

Senior Member
Bonjour,

Il existe plusieurs méthodes pour piloter un afficheur, je ne connaissais pas celle là.

Il est dit dans la doc DIG de regarder bintoascii, je le conseille aussi.

Avec un seul CD4511, il faut multiplexer, cad afficher chaque digit l'un après l'autre.

MM
 

BESQUEUT

Senior Member
Bonjour, et bienvenue sur ce forum.
Merci de bien vouloir encadrer votre code avec les balises
Code:
 et [ /CODE] (sans aucun espace entre les crochets).
Il y a également dans PE6 une fonction très pratique pour publier du code sur le forum (clic droit,...)
Merci également de publier le schéma de votre montage.
On subodore qu'une des broches est utilisée pour sélectionner le digit, mais sans schéma, trouver le problème, c'est du niveau "boule de cristal"
Quand vous décrivez un problème, outre ce qui ne vas pas, dites ce qui se passe.
Par exemple :
l'incrémentation évolue : que voyez vous sur chaque digit ?
l'affichage ne passe pas d'unité en unité : il passe de quoi à quoi ?

Si je subodore bien, le digit est sélectionné par la broche LE, plus précisément une transition montante sur cette broche.
Mais comme vous faites ça en même temps que la mise à jour des broches A, B, C et D il y a un problème de timing.
A priori, il faudrait positionner les broches A,B,C et D [B][COLOR="#FF0000"]puis[/COLOR][/B] faire un front montant sur LE.

[I]NB1 : a quoi sert le commentaire 'var B0 +B7 ?

NB2: Jolie coquille dans la doc "Therefore digit 0 of ‘67890’ is 0"
Mais oui bien sur : w1=67890...
I en a qui ont essayé ; y zont eut des problèmes...[/I]
 
Last edited:

PieM

Senior Member
Compte tenu de votre câblage, testez ça :

Code:
[COLOR=Navy]#picaxe [/COLOR][COLOR=Black]28X1[/COLOR]
[COLOR=Purple]w2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]4321[/COLOR]

[COLOR=Blue]for [/COLOR][COLOR=Purple]b1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0 [/COLOR][COLOR=Blue]to [/COLOR][COLOR=Navy]3
   [/COLOR][COLOR=Purple]b2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]b1
   outpins [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]w2 [/COLOR][COLOR=DarkCyan]DIG [/COLOR][COLOR=Purple]b2
   [/COLOR][COLOR=Blue]pause [/COLOR][COLOR=Navy]4 ; (peut être superflu...)
   [/COLOR][COLOR=Purple]b2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]b2 [/COLOR][COLOR=DarkCyan]+ [/COLOR][COLOR=Navy]4[/COLOR][COLOR=Black]: [/COLOR][COLOR=Purple]b2 [/COLOR][COLOR=DarkCyan]= dcd [/COLOR][COLOR=Purple]b2
   outpins [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]outpins [/COLOR][COLOR=DarkCyan]+ [/COLOR][COLOR=Purple]b2[/COLOR]
[COLOR=Blue]next[/COLOR]
 
Last edited:

BESQUEUT

Senior Member
Compte tenu de votre câblage, testez ça :
attention à la collision entre w1 et b2.
Le datasheet indique
Setup time, BCD inputs before LE↑ : 24 ns (typique)
Je pense que la pause est inutile.
Code:
#picaxe 28X1
w1 = 4321
do
   for b4 = 0 to 3
      outpins = w1 DIG b4
      b5 = b4 + 4
      outpins = dcd b5 + outpins
   next
   inc w1
loop
 
Last edited:
Top