Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

TM1637

Programmation de base pour toute utilisation picaxe


Ce programme de base contient les sous programmes nécessaire à l'affichage d'un nombre de quatre chiffres, avec ou sans l'affichage des : centraux.
Les broches de commande du TM1637 sont nommées "clk" (clock) et "dio" (Data In Out).
L'octet à transmettre est b0, les bits sont tranmis un à un par décalage dans le bit0 de b0
Dans cet exemple, la boucle principale lit la valeur retournée par la commande ADC sur l'entrée C.4. Cette valeur est affichée sur l'afficheur TM1637.
Toute autre valeur peut être affichée de la même façon.


;************************************************
;Application TM1637
;MM 18/06/19
;Modif 21/06/19: suppression des balises en sub Start et Stop
;affichage Nombre de 4 chiffres
;Picaxe 08M2
;*************************************************
#picaxe 08M2
;Broches I/O ***************
symbol clk= pinC.2
symbol dio= pinC.1    
symbol valid=pinC.3
symbol ADC=C.4
;Bytes **********************
symbol Octet=b0    ;octet dans b0; le test est sur bit0
symbol Chiffre=b1
symbol i=b2
symbol j=b3
symbol dp=b4
;Words *****************************
symbol Div=w12
symbol Nombre=w13 ; nombre de 4 chiffres à afficher
;Initialisation TM1634 *********************************************************    
;symbol TypeAdr=$40 ; adressage auto-incrémenté par défaut=>en commentaite
symbol AdrDep=$c0 ; adresse du 1er digit (poids fort)
symbol RegLum=$8c ; réglage luminosité $80 + 8(allumé, 0:éteint) + 0 à 7(intensité)  
    setfreq m16        ;pas plus pour garder time en secondes (si necessaire)
    pullup %1110    ;activation des résistances pullup sur
    dirs=%01111        ;pour activer les valeurs I/O pin
    dp=$80            ;pour allumage DP
;clk=1: dio=1: dio=0    ; I2CStart  
;Octet=TypeAdr        ;Mode d'adresse, en REM cause incrémenation auto par défaut
;gosub I2CEnvoiOctet
;clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
    clk=1: dio=1: dio=0    ; I2CStart    ;
    Octet=RegLum        ;Réglage luminosité
    gosub I2CEnvoiOctet
    clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
;boucle principale ********************************************
    Do
        readadc10 ADC,nombre    
        gosub Affnbre
    loop
;******* Découpage du nombre en chiffres ************
Affnbre:
    clk=1: dio=1: dio=0    ; I2CStart    ;
    Octet=AdrDep        ;synchro adresse départ
    gosub I2CEnvoiOctet
    div=1000        ;initialisation diviseur pour 4 chiffres
    for j=1 to 4
      Chiffre=Nombre/Div
      gosub DecTo7seg        ;octet contiendra la descrption de chiffre en segments
;******** ajout points centraux si ncessaire *************
;  if j=2 then
;          octet=octet | dp    ;ajout points centraux
;      endif
;***********************************************
      gosub I2CEnvoiOctet
      Nombre=Nombre//Div    ;on garde le reste de la division
      Div=Div/10            ;prochain diviseur
    next j
    clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
    return
;******* Envoi des chiffres (octet) bit à bit dans le registre ********
I2CEnvoiOctet:    ;lecture de b0 bit à bit de bit0 à bit8 poids faible en tête.
    for i=1 to 8 ; envoi de l'octet
        clk=0
        dio=bit0        ;la broche dio prend la valeur de bit0       
        Octet = Octet/2        ;décalage à droite => bit1 devient bit0
        clk=1
    next i
    clk=0 : clk=1 : clk=0     ; traitement ACK
    return
;****** Conversion des chiffres en segments
DecTo7seg:
    lookup Chiffre,($3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f), Octet ; 0-9 uniquement
    return


Une petite vidéo de démo:



 



Créer un site
Créer un site