Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

PCF8574 voor keypad

Pagina: 1
Acties:
  • 422 views sinds 30-01-2008

Verwijderd

Topicstarter
Beste Forum gebruikers

Momenteel ben ik een project aan het opstarten waarin verschillende keypad met lcd 2x 16 (16modules)
met 1 microcontroller Atmel 89s8252 aangesloten worden.

Het zou de bedoeling zijn deze 16 modules te verbinden met de microcontroller gebruikmakend van
I2C protocol

1 PCF8574 zou gebruikt worden voor Keypad 4x4
1 PCF8574A zou gebruikt worden voor LCD 2x16 in 4bit mode aan testuren.

Iedere I2C expander krijgt een eigen adres zodat communicatie kan plaats hebben

Probleem Keypad 4x4 : bestaat hier code voor A51 (8051)

moet de scaning van de microcontroller komen? wat resulteerd in het constant zenden van code naar
de PCF8574
Hoe zou dit moeten gebeuren ?

graag iemand die mij opweg zou kunnen zetten ,eventueel met code in assembler voor 8051

groeten

  • Cassettebandje
  • Registratie: Juli 2002
  • Laatst online: 21-11 20:56

Cassettebandje

SA-C90 TDK

De scanning moet in de microcontroller komen, maar is niet noodzakelijk. De PCF8574 heeft een interrupt pin die aan je microcontroller door kan geven als er iets gebeurt. Volgens mij kun je het als volgt doen: p0 tot p3 verbind je met de kolommen. p0 tot 3 maak je hoog.
p4 tot p7 verbind je met de rijen. deze maak je laag.

Wanneer er een knop ingedrukt wordt verandert er een waarde, dus je krijgt een interrupt. Dan lees je het keypad uit (eerst de eerste kolom aan, kijken of er een rij hoog wordt, zo alle kolommen aflopen).

De vraag is of ket kan, ik weet niet precies hoe het i/o verhaal van de PCF8574 werkt en ik vind die datasheet ook niet zo heel duidelijk. I2C code moet er wel te vinden zijn voor de 8051.

Het is ook niet mogelijk om 16 PCF8574's aan een i2c bus te hangen. Je kunt maar 8 adressen selecteren met de A0-A2 pinnen.

  • sebastius
  • Registratie: September 2000
  • Laatst online: 18-11 21:59

sebastius

Laten we lekker link gaan doen

Cassettebandje schreef op vrijdag 08 april 2005 @ 20:02:
[..]

Het is ook niet mogelijk om 16 PCF8574's aan een i2c bus te hangen. Je kunt maar 8 adressen selecteren met de A0-A2 pinnen.
Daarom heeft hij ook 8 PCF8574's, en 8 PCF8574A's.

Verwijderd

Topicstarter
Gebruik makend van PCF8574 om een keypad te scannen ,moet deze ic eerst geconfigureed worden
als input?

Ik dacht dat wanneer men een i/o pin aan de grond legt bv switch deze een interupt geeft maar dit werkt niet hoe komt dat?

groeten

  • sebastius
  • Registratie: September 2000
  • Laatst online: 18-11 21:59

sebastius

Laten we lekker link gaan doen

Sterker nog, volgens mij gaat het helemaal niet met een PCF8574 om dit geintje uit te halen aangezien je de helft als input en de helft als output moet hebben, en dat kan dat IC helemaal niet.

Wat eventueel een betere optie is, is de I2C slave library van BasCom (www.mcselec.com), dan kun je zelf I2C chips maken met atmel microcontrollers.

Verwijderd

Topicstarter
Ik heb verschillende schemas op het internet gezien waar de PCF8574 4 inputs (switches)
en de andere 4 output zijn (leds)

Maar hoe werkt dit ?

  • DiLDoG
  • Registratie: Oktober 2002
  • Laatst online: 14-11 09:29
Volgens mij wordt een poort ingang als je deze hoog maakt.

0010-1111 zorgt er dus voor dat uitgang 2 hoog is, en op poort 4-7 kan de waarde uitgelezen worden (portvalue & 0x0F)

Verwijderd

Topicstarter
Heb dit getest data 00101111 naar de PCF8574 gestuurd 1 is een input ,wanner ik deze aan de oV leg
heb ik nu een puls op INT van PCF8574 dit is nu OK !

2vragen

1) Bij het versturen van het adres en data via µcontroller naar PCF8574 geeft deze laatste een ACk ?
indien niet! hoe kan ik weten of de informatie naar PCF8574 toegekomen is?

2) De toets die ingedrukt word, aangesloten op PCF8574 geeft een puls uit op de INT van deze PCF8574
deze puls kan ik nu wire or met andere PCF8574 gaan gebruiken om een interrupt aan tespreken
in de µcontroller ,deze zal dan op zijn beurt een controle moeten doen welke PCF8574 informatie
wil doorzenden,
De µcontroller moet immers volgende taken doen:
Start (Adress Read) (Data) geven om de PCF8574 informatie op tevragen de µcontroller moet deze informatie verder verwerken of er een toets ingedrukt is van een slave indien niet moet hij de volgende slave op vragen enz tot wanneer een slave waarbij een toest is ingedrukt zijn informatie kan door geven aan de µcontroller die er dan de nodige acties meedoet
hier gaat veel tijd over 100millisec zodat de informatie op de PCF8574 waar de toets werd ingedrukt verloren gaat wanneer de toets losgelaten word vooralleer de informatie ingelezen kan worden in de µcontroller (cristal 12Mhz) hoe kan men dit oplossen?

  • sebastius
  • Registratie: September 2000
  • Laatst online: 18-11 21:59

sebastius

Laten we lekker link gaan doen

1) Lees je es in op het I2C protocol en de datasheet van dat IC.

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

2) Het i2c-protocol kan op max 100KHz lopen. Geen idee hoeveel transfers je nodig hebt om de toetsinfo uit te lezen, maar stel dat dat er 4x2x4=32 bytes verstuurd of ontvangen moeten worden, kan je dat in 32*10*(1/100000)=3ms doen, wat snel zat is lijkt me. Als je i2c-implementatie dat niet haalt zou ik toch echt daar es naar kijken, een proc op 12MHz moet dat makkelijk kunnen halen.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


Verwijderd

Topicstarter
Bij het zenden van een adres + data voor het initialiseren van de PCF8574 voor het bedienen van switches zie volgende instructie info
Adres W data
0100 0000 0000 0000

Mijn vraag is nu:

Moet ik het adres terug verzenden om de switches uittelezen

Adres R
0100 0001

Is dit een goede praktijk

groeten

  • DiLDoG
  • Registratie: Oktober 2002
  • Laatst online: 14-11 09:29
Ja ik quote uit de datasheet:

Afbeeldingslocatie: http://img99.echo.cx/img99/8454/read4tp.th.jpg

Verwijderd

Topicstarter
Beste,

Aan alle mensen op dit forum welke ervaring hebben met 8051 assembler,

Mijn vraag:

Ik ben opzoek naar een scanning routine op basis van een interrupt voor het aftasten van de juiste switch (16) gebruik makend van PCF8574 of PCF8574A

mvg

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Hmm, sorry, maar ik vind dit het CM&E-equivalent van scriptrequests. Hoewel het niet in de FAQ of de policy staat, wil ik graag een gelijke lijn trekken met mijn devschuur-collega's en het in ieder geval in deze vorm niet toestaan.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog

Pagina: 1

Dit topic is gesloten.