PROGRAMME






schémat de 8 entrées sur platine
schémat de 8 entrées sur PICBASIC
PCF8574A rajouter 8 entrées ou 8 sorties sur bus I2C
BROCHAGE DU ULN2803
schemat de 2 PCF8574A en sortie
pour mètre le PCF8574A en entrée il faut que les ports sont tirer sur le haut (+5v) car les entrées se fonts en commutant vers la masse. les programmes sont fait pour une meilleuree compréhension,il doit ètre remanier celon l'utilitée, les delays d'attente permet de visualiser a l'écran, la boucle a la ligne 10 remplace le programme que vous pouvez avoir a effectuer sans se soucier des entrées vu que le PCF averti par sa broche INT et vous avez la fonction < ON INT(3)=0 GOSUB>. si des entrées sont restées libre, il faut les tirer vers le bas avec une résistance de 1k
DES ADRESSES la datasheet du PCF8574A deux doc a voir la première - la deuxième d'autres montages avec le PCF8574A de la doc sur le BUS I2C une autre sur le BUS I2C divers montages
sur le montage en sortie j'ai utiliser 2 PCF8574A pour faire voir le branchement et les commandes sur un BUS I2C j'ai utilisée 2 ULN2803 pour amplifier mes sorties les sorties en +5v ne permet que 0,1mA par contre a tirer vers le bas le max est de 25mA avec le ULN2803 on peut aller jusqu'a 25W
CONST device =3B '********************************************* 'UTILISATION DU PCF8574A EN 8 entrées '********************************************* 'les ports utilisées 'port 0=SDA 'port 1=SCL 'port 2=beep 'port 3=int du PCF 'port 4 a 11=sortie led CONST SCL = 1 CONST SDA = 0 CONST bip = 2 CONST INT = 3 DIM a AS BYTE DIM b AS BYTE DIM c AS BYTE SET PICBUS HIGH LCDINIT CLS DEBUT: b = 255 'mise en entrées de tout les ports c = b GOSUB ENVOI ON INT ( 3 )= 0 GOSUB FONCTION 'scanne la sortie INT 'la broche INT passe a 0v ,le max sur la sortie est de 1,6 mA 10 CLS 'boucle qui peut correspondre a un programme b = b - 1 PRINT dec( b ) 'affiche un compteur PRINT dec( c ) 'affiche le code de l'Etat des ports IF b = 0 THEN b = 255 DELAY 200 GOTO 10 FONCTION: BEEP bip CLS PRINT " port modifier" GOSUB lire c = a DELAY 2000 CLS PRINT DEC( a ) ' affichage code correspondant au ports OUT 4,0 ' Eteint toutes les leds OUT 5,0 OUT 6,0 OUT 7,0 OUT 8,0 OUT 9,0 OUT 10,0 OUT 11,0 IF a => 128 then ' repérage du bit 8 OUT 4,1 ' allumage de la led correspondante a = a - 128 END IF IF a => 64 then ' repérage du bit 7 OUT 5,1 ' allumage de la led correspondante a = a - 64 END IF IF a => 32 THEN OUT 6,1 a = a - 32 END IF IF a => 16 THEN OUT 7,1 a = a - 16 END IF IF a => 8 THEN OUT 8,1 a = a - 8 END IF IF a => 4 THEN OUT 9,1 a = a - 4 END IF IF a => 2 THEN OUT 10,1 a = a - 2 END IF IF a = 1 THEN OUT 11,1 a = a - 1 END IF DELAY 5000 RETURN LIRE: 'lecture de l'Etat des entrées GOSUB START SHIFTOUT SCL , SDA , 2 ,&H 71 ' 0 I I I 0 0 0 I ' adressage après le front descendant d'horloge a =SHIFTIN ( SCL , SDA , 0 , 8 ) ' lecture sur 8 bits ' lecture après le front montant d'horloge GOSUB STOP RETURN ENVOI: 'met tout les ports en entrées (a tirer vers le haut) GOSUB START SHIFTOUT SCL , SDA, 2 ,&h 70 ' O I I I 0 0 0 0 shiftout SCL , SDA , 2 , b GOSUB STOP RETURN START: OUT SCL , 1 OUT SDA , 1 OUT SDA , 0 RETURN STOP: OUT SDA , 0 OUT SCL , 1 OUT SDA , 1 RETURN
CONST device=3B '***************************************** 'utilisation du PCF8574A en 8 sorties '***************************************** 'les ports utilisees 'port 0=SDA 'port 1=SCL 'port 2=beep CONST SCL = 1 CONST SDA = 0 DIM a AS BYTE DIM b AS BYTE b = 1 SET PICBUS HIGH 'initialisation de l'Ècran LCD LCDINIT CLS debut: 'premiere partie LOCATE 0 , 1 PRINT " tout ETEINT " b = 0 '= en binaire O O O O O O O O BEEP 2 GOSUB bloc1 GOSUB bloc2 DELAY 1000 LOCATE 0 , 1 PRINT "affichage bloc 1" b = 1 ' 1 en binaire donne ceci >O O O O O O O I< ' se qui veux dire que la première led est allumée GOSUB bloc1 'envoie le code dans le bloc 1 FOR a = 1 TO 8 b = b + b 'b+b donne 1+1=2 et 2+2=4 et 4+4=8 et 8+8=16 'voir la correspondance en binaire de 2-4-8-16 GOSUB bloc1 NEXT a LOCATE 0 , 1 PRINT "affichage bloc 2" 'la mème chose pour le bloc2 b = 1 GOSUB bloc2 FOR a = 1 TO 8 b = b + b GOSUB bloc2 NEXT a LOCATE 0 , 1 PRINT " degressif " 'deuxieme partie :j'ai représentée les codes un par un pour mieux comprendre b = 1 'en binaire = O O O O O O O I GOSUB bloc1 b = 128 ' I O O O O O O O GOSUB bloc2 b = 3 ' O O O O O O I I GOSUB bloc1 b = 192 ' I I O O O O O O GOSUB bloc2 b = 7 ' O O O O O I I I GOSUB bloc1 b = 224 ' I I I O O O O O GOSUB bloc2 b = 15 ' O O O O I I I I GOSUB bloc1 b = 240 'I I I I O O O O GOSUB bloc2 b = 31 ' O O O I I I I I GOSUB bloc1 b = 248 ' I I I I I O O O GOSUB bloc2 b = 63 ' O O I I I I I I GOSUB bloc1 b = 252 ' I I I I I I O O GOSUB bloc2 b = 127 ' O I I I I I I I GOSUB bloc1 b = 254 ' I I I I I I I O GOSUB bloc2 b = 255 ' I I I I I I I I GOSUB bloc1 b = 255 ' I I I I I I I I GOSUB bloc2 ' troisieme partie :si on travail sur le mème bloc il n'est pas nécessaire de passer par 'start et stop a chaque instruction se qui fait aussi q'une seule ligne d'adressage,par 'contre il est préférable de passer par stop avant d'aller plus loin dans le programme GOSUB unbloc GOSUB fin bloc1: GOSUB START SHIFTOUT SCL,SDA , 2 ,&h 7E ' O I I I I I I O 'par contre pour PCF8574 (sans a)le code &h4E O I O O I I I O SHIFTOUT SCL,SDA , 2 , b GOSUB STOP DELAY 100 RETURN bloc2: GOSUB START SHIFTOUT SCL,SDA , 2 ,&h 7C ' O I I I I I O O SHIFTOUT SCL,SDA , 2 , b GOSUB STOP DELAY 100 RETURN START: OUT SCL , 1 OUT SDA , 1 OUT SDA , 0 RETURN STOP: OUT SDA , 0 OUT SCL , 1 OUT SDA , 1 RETURN unbloc: b = 1 GOSUB START SHIFTOUT SCL , SDA , 2 ,&h 7C ' O I I I I I O O SHIFTOUT SCL , SDA , 2 , b DELAY 500 FOR a = 1 TO 8 b = b + b 'b+b donne 1+1=2 et 2+2=4 et 4+4=8 et 8+8=16 SHIFTOUT SCL , SDA , 2 , b DELAY 500 NEXT a GOSUB STOP FIN: DELAY 500 PRINT " c'est fini" b = 255 GOSUB bloc1 GOSUB bloc2 BEEP 2
attention 2 différents ADRESSAGE DU PCF8574 ADRESSAGE DU PCF8574A
BROCHAGE DU PCF8574A
Caractéristiques •Tension de 2,5 à 6 V •Faible consommation de courant de veille de 10 uA maximum •I 2 C-bus pour port parallèle expander•Drain ouvert interrompre la production •8-bit I / O port de l'I 2 C-bus •Compatible avec la plupart des microcontrôleurs •Allocution de 3 adresses matérielles pour l'utilisation de pins jusqu'à 8 périphériques (jusqu'à 16 avec PCF8574A) .Le signal haute-1 est d'environ 100 u A maximum de courant Ce dispositif est composé de 8 bits quasi bidirectionnels et d'un port I2C-bus interface Il possède également une ligne d'interruption (INT), qui peut être connecté à interrompre la logique du microcontrôleur. le PCF8574A peut informer le microcontrôleur qu'il y a un entrant des données sur ses ports sans avoir à communiquer par l'I 2 C-bus. Cela signifie que le PCF8574 peut rester un simple esclave.
CONTACT ACCEUIL