Bonjour à tous,
J'ai conçu un petit circuit qui permettra d'afficher le rapport de la vitesse engagée sur un véhicule.
Mon problème est que dès la mise sous tension, l'afficheur "clignote" (tous les segments) au rythme d'environ 1 seconde au lieu d'afficher un tiret.
Je joins le programme et le schéma afin de m'aider à résoudre ce problème.
Merci beaucoup pour votre aide.
J'ai conçu un petit circuit qui permettra d'afficher le rapport de la vitesse engagée sur un véhicule.
Mon problème est que dès la mise sous tension, l'afficheur "clignote" (tous les segments) au rythme d'environ 1 seconde au lieu d'afficher un tiret.
Je joins le programme et le schéma afin de m'aider à résoudre ce problème.
Merci beaucoup pour votre aide.
Code:
'***** Programme pour piloter un afficheur 7 segments indiquant le rapport de vitesse engage *****
'***** Definitions *****
#picaxe 18M2 ' modele de micro-controleur utilise (sert au compilateur)
' si necessaire, modifier ici les affectations des vitesses sur le port C
symbol Premiere = pinC.0 ' ILS 1ere vitesse
symbol Deuxieme = pinC.1 ' ILS 2eme vitesse
symbol Troisieme = pinC.2 ' ILS 3eme vitesse
symbol Quatrieme = pinC.4 ' ILS 4eme vitesse (C.4 car C.3 n'est pas utilisable en lecture)
symbol Cinquieme = pinC.5 ' ILS 5eme vitesse
symbol Sixieme = pinC.6 ' ILS 6eme vitesse
symbol MarcheAR = pinC.7 ' ILS marche arriere
symbol Afficheur = pinsB ' le port B commande les segments de l'afficheur de rapport
' segments A a G correspondants aux bits du port B pour afficher le rapport engage (B.7 a 0 = point mort)
' bit a 0 = segment allume, bit a 1 = segment eteint (pour LED a anode commune sur le +5V)
' A
' +-----+
' F | | B
' |__G__|
' | |
' E | D | C
' +-----+
'
symbol Chiffre1 = %11111001 ' = segments B + C
symbol Chiffre2 = %10100100 ' = segments A + B + D + E + G
symbol Chiffre3 = %10110000 ' = segments A + B + C + D + G
symbol Chiffre4 = %10011001 ' = segments B + C + F + G
symbol Chiffre5 = %10010010 ' = segments A + C + D + F + G
symbol Chiffre6 = %10000010 ' = segments A + C + D + E + F + G
symbol LettreA = %10001000 ' = segments A + B + C + E + F + G
symbol Tiret = %00111111 ' = segment G + signal "point mort"
symbol Eteint = %11111111 ' tous les segments de l'afficheur eteint
symbol Allume = %10000000 ' tous les segments de l'afficheur allume
symbol Sortie = %11111111 ' tous les bits en sortie
symbol Entree = %00001000 ' tous les bits en entree sauf le bit 3 qui ne peut etre qu'en sortie
symbol Engage = 0 ' ILS ferme = 0 = rapport engage sinon = 1 = ILS ouvert
'***** Initialisations *****
disconnect '******* commande ajoutée suite à la remarque de MGU ci-dessous ********
let dirsB = Sortie ' parametre le port B en sortie pour piloter l'afficheur LED
let dirsC = Entree ' parametre le port C en entree pour detecter le rapport engage
let Afficheur = Allume ' allume tous les segments de l'afficheur
pause 1000 ' pendant 1 seconde pour controle visuel a la mise sous tension
let Afficheur = Eteint ' eteint l'afficheur
'***** Boucle principale *****
Boucle:
pause 1000 ' attente de 1 seconde pour eviter d'afficher le tiret pendant un changement de vitesse
if Premiere = Engage then ' si la 1ere est engagee
Afficheur = Chiffre1
goto Boucle
endif
if Deuxieme = Engage then ' si la 2eme est engagee
Afficheur = Chiffre2
goto Boucle
endif
if Troisieme = Engage then ' si la 3eme est engagee
Afficheur = Chiffre3
goto Boucle
endif
if Quatrieme = Engage then ' si la 4eme est engagee
Afficheur = Chiffre4
goto Boucle
endif
if Cinquieme = Engage then ' si la 5eme est engagee
Afficheur = Chiffre5
goto Boucle
endif
if Sixieme = Engage then ' si la 6eme est engagee
Afficheur = Chiffre6
goto Boucle
endif
if MarcheAR = Engage then ' si la marche arriere est engagee
Afficheur = LettreA
goto Boucle
endif
let Afficheur = Tiret ' sinon, pas de rapport engage alors on affiche un tiret (segment G)
' et B.7 a zero pour signaler le "point mort"
goto Boucle
Attachments
-
3.4 KB Views: 10
-
59.1 KB Views: 29
Last edited: