Programme contenant un clavier et un écrant LCD

Signaler
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010
-
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010
-
Bonsoir tout le monde,
Je suis en train de créer un programme dans le cadre d'un projet contant pour le bac. Il faut que je crée une serrure à code.
J'ai mon système électronique et maintenant je dois le coder en Basic. Pour ce faire il faut que je programme un micro-processeur 16C62. Vu que ceci est une application directe je trouve aucun tuto ni cours.
Nous n'avons eu très peu de cours où on y apprend 2-3 trucks très peu utile.

J'ai donc des problèmes sur différents point les voici:

-Comment traiter des donnés d'un clavier et les exploités?
-Comment faisons nous des fonctions ET et OU?
- Je n'ai pas su dire aussi comment vérifier le code avec les touches dans l'ordre.

Voici mon programme, je sais qu'il est bourré d'erreur mais j'ai fait ça avec 2-3 bases en C donc voilà.... et un exemple d'un programme qui affichait un nombre de places sur un LCD...

program Serrure_electrique

'************************************************
'********    déclaration des variables   ********
'************************************************

symbol Col_1 = PortA.2          'lignes et colonnes du clavier.
symbol Col_2 = PortA.1
symbol Col_3 = PortA.0
symbol Ligne_1 = PortC.0
symbol Ligne_2 = PortA.5
symbol Ligne_3 = PortA.4
symbol Ligne_4 = PortA.3

'combiner les lignes/colonnes pour faire les touches.
symbol T_1 = Col_1 && Ligne_1
symbol T_2 = Col_2 && Ligne_1
symbol T_3 = Col_3 && Ligne_1
symbol T_4 = Col_1 && Ligne_2
symbol T_5 = Col_2 && Ligne_2
symbol T_6 = Col_3 && Ligne_2
symbol T_7 = Col_1 && Ligne_3
symbol T_8 = Col_2 && Ligne_3
symbol T_9 = Col_3 && Ligne_3
symbol T_A = Col_1 && Ligne_4
symbol T_B = Col_2 && Ligne_4
symbol T_C = Col_3 && Ligne_4

symbol Code = T_1 && T_2 && T_3 && T_4
symbol Relais = PortC.1
symbol Led_v = PortC.7
symbol Led_r = PortC.6

'variable pour ecran LCD
symbol Select_Registre = PortB.1
symbol Lect_ecri = PortB.2
symbol Entre_validation = PortB.3
symbol Bus_1 = PortB.4
symbol Bus_2 = PortB.5
symbol Bus_3 = PortB.6
symbol Bus_4 = PortB.7

'gérer le code
symbol Erreur = 0
symbol Touche_e1 = 0
symbol Touche_e2 = 0
symbol Touche_e3 = 0
symbol Touche_e4 = 0

'*************************************************************
'*********    Début du programme : initialisation    *********
'*************************************************************

'initialisation écran
Lcd_Init(PORTB)
Lcd_Cmd(LCD_CLEAR)
Lcd_Cmd(LCD_CURSOR_OFF)
Lcd_Cmd(LCD_RETURN_HOME)
symbol Led_v = 0
symbol Led_r = 0
symbol Relais = 0
Lcd_Out(1,1,"Entrer le code")

'**************************************************************
'*******************   Début du programme   *******************
'**************************************************************
main:

'recuperer les données du clavier. L'utiliateur entre son premier chiffre
if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,1,"*")
else Delay_ms(5000) 'L'utilisateur a 5s pour taper le code
end if

if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,2,"*")
else Delay_ms(5000)
end if

if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,3,"*")
else Delay_ms(5000)
end if

if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,4,"*").
Delay_ms(2000)
end if

'maintenant que les 4 chiffres sont enregistrés il faut valider

'il faut rajouter une condition, il faut que les 4 chiffres
'soient enregistrés sinon le programme se poursuivra.

Lcd_Out(1,1,"Touche C pour")
Lcd_Out(2,1,"valider")
Delay_ms(5000)

'****************************
'*Attente de 5s pour valider*
'****************************

if T_C = 1 'Touche C validée
then if Erreur < 3 'Vérifier que le code a pas été forcé    then if touche_e1 1 && Touche_e2 1 && touche_e3 = 1 && touche_e4 = 1 'Code bon
         then Lcd_Out(1,1,"Code accepte")
         Lcd_Out(1,2,"Ouverture...")
         Delay_ms(1000)
         Relais = 1 'ouverture porte
         Led_v = 1 'Led verte allumée
         Led_r = 0 'Led rouge éteinte
         Delay_ms(3000)
         Relais = 0 'fermeture porte
         Led_v = 0 'Led verte éteinte
         Led_r = 0 'Led rouge allumée
         Erreur = 0 'Reset du nombre d'erreures
         end if    else if touche_e1 1 && Touche_e2 1 && touche_e3 = 1 && touche_e4 = 0 'Code mauvais
         then Lcd_Out(1,1,"ERREUR")
         Lcd_Out(1,2,"")
         Led_v = 0
         Led_r = 1
         Delay_ms(5000)
         Led_v = 0
         Led_r = 0
         Erreur = Erreur + 1
         end if
    end if
     else if Erreur = 3
      then Lcd_Out(1,1,"MODE")
      Lcd_Out(2,1,"VERROUILLE")
      Delay_ms(1000000)
      end if
     end if
else Lcd_Out(1,1,"Temps d'attente")
     Lcd_Out(2,1,"depasse")
     Delay_ms(5000)
end if

end.program Serrure_electrique

Voila j'espère que vous pourrez m'aider et que je vous ennuis pas trop.

9 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
C'est quoi ce language : croisement entre pascal et basic ?
L'opération OU se fait via l'opérateur OR : 1 or 2 = 3
L'opération ET se fait via l'opérateur AND : 3 And 2 = 2
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
"...C'est quoi ce language : croisement entre pascal et basic ?..."
Dans la mesure ou il est fait mention du BAsic, et qu'il s'agit d'un uC PIC6C62, je dirais qu'il doit s'agir d'un des basic spécifiques à cette famille de processeurs, Basic Stamp peut-etre.

Pour ce qui est des fonctions Et et Ou, elles sont déjà utilisées dans le code donné :
Et --> &&
Ou --> ||

Pour ce qui est des erreurs, du peu que j'en comprend, je pense que ton code ne va pas marcher. Il n'attend nulle part l'appui d'une touche. Si tu le lance tel quel, je dirais qu'au bout de 15sec, il va t'afficher "Touche C ...", puis 5sec plus tard "Temps d'attente dépassé".

Pour le code du clavier, je ne saurait te le donner, je n'ai jamais programmer sur PIC

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010

Merci de vos réponses aussi rapides !

[../auteur/GHUYSMANS99/549970.aspx ghuysmans99] tu me dis donc que les balises pour ET et OU sont AND et OR et casy me dis que c'est celle que j'ai déjà mis. Qui est sur de lui? C'est bel est bien du Basic mais pas spécialement adapté pour 16c62 c'est juste que j'ai fait sa avec ce que je pensais être bon :)
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Ce n'est de toutes manières pas du : Vous êtes ici : Thèmes / VB.NET et VB 2005

Alors ....===>> bye
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010

Excuse moi je n'ai peut-être pas compris mais c'est bien du visual basic comme langage.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Basic, oui, Visual Basic non.
(sous le nom de Basic on  trouve plusieurs dizaines de langages différents, et même déjà sous Visual Basic, on en est déjà au 4ème langage différent)

Visual Basic ne permet de programmez que des logiciels Windows, pas des codes pour PIC.
D'ailleurs je pense que tu ne programme pas sous Visual Studio mais sous un environnement spécifique.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010

Sous MikroBasic, le logiciel a disposition au lycée
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
<cite>www.mikroe.com/pdf/mikrobasic/basic_syntax_v101.pdf
</cite>Selon lui j'ai raison ...
C'est bien : AND et, OR ou, XOR ou exclusif, NOT non, << décalage vers la gauche, >> décalage vers la droite
<cite></cite>
Messages postés
7
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
16 mars 2010

A merci beaucoup pour se lien je le note !!! merci