Toetsen en 89c51

H

harshita

Guest
Hallo jongens ...

Ik heb wat twijfels in 89c51 voor kleine applicatie ...

Gelieve kunnen jullie me helpen ...

fijn .. mijn twijfel ik wil u gegevens uit de toetsen 4 * 3 (zender) te HyperTerminal (UART Receiver )....Geef idee te krijgen van gegevens van zender naar ontvanger .....

Dank u ..Met groet,

Harshita

 
Hi All,Uw Toetsenblok 4x3 Wordt aangesloten op een 89C51 voorkeur met PORT0 (P0)
met Pull Ups lees je een sleutel en stuur een teken HT UART met behulp van uw
controller.

 
Hi ...

Ben het aansluiten van toetsen in port2 ....is het ok?
en LCD in Port0 & port1 ....

 
als u de toetsen dan moet je een route naar competentie-toets de-stuiteren.
Atmel AT89C51 heeft in belangrijke weigeringspercentages decoderen logica op PORT0.als u geen gebruik maakt van de "built-in De weigeringspercentages logica dan krijgt u te implementeren in software.U kunt ook gebruik maken van een aantal IC dosis die ook de baan.u om de code toetsen aan de werkelijke valuse gebruik van bepaalde look-up tabel.Deze gegevens kunnen vervolgens aan de pc via RS232 functie.

rijnwijn

 
@ rijnwijn
Het
is nogal vreemd om te weten over de "built-in debounce decoderen logica op poort 0.Ik ben al bekend met 89C51 en het
is Derivate jaren heb ik niet gezien, een van deze dingen waarschijnlijk, ook de nieuwere precisie gemengd signaal 8051 dat ik met deze dagen, niet over dit vermogen.
Weet je het zeker over weten?Ik lees het gegevensblad van AT89C51, er is niet zoiets noemen over.Ten tweede vraag ik me af wat debounce decoder had te maken met Port 0.Er zijn geen registers te zetten ON / OFF en ik heb geen enkel literatuur met betrekking tot het.

 
Hallo jongens ..dit mijn coderen voor Transmitter kant ...but i
didnt get output in zowel LCD en Keyapad voor seriële communicatie ....

Controleer de codering ....weersomstandigheden probleem codering of hardware ...

Ik gaf coonection volgens deze codering alleen ...

Als je twijfels hebt over dit ...Controleer perivous posten ....================================================
#
include <stdio.h>
#
include <reg52.h>

SFR kol = 0x0A0 / / TOETSEN ROW & KOLOM PORT2

sbit R1 = P2 ^ 1;
sbit R2 = P2 ^ 6;
sbit R3 = P2 ^ 5;
sbit R4 = P2 ^ 3;
sbit C1 = P2 ^ 2;
sbit C2 = P2 ^ 0;
sbit C3 = P2 ^ 4;

SFR ldata = 0x90; / / lcd gegevens D0 tot D7 = poort 1 respetively
sbit rs = P0 ^ 1 / / Regsiter Selecteer RS = Port2.0
sbit RW = P0 ^ 2 / / Read /
Write R / W = Port2.1
sbit nl = P0 ^ 0 / / Enable E = Port2.2void msdelay (unsigned int waarde);
void sertx (unsigned char x);
void lcdcmd (unsigned char waarde);
void lcddata (unsigned char waarde);

unsigned char toetsenbord [4] [3] = ('1 ','2','3 ',
'4 ','5','6 ',
'7 ','8','9 ',
'*','0 ','#'};void main ()
(
unsigned char i;
unsigned char colloc, rowloc;
unsigned char CDATA [5] = (0x38, 0x0e, waarde 0x01, 0x06, 0x86);
TMOD = 0x20;
Th1 = 0xfd;
SCON = 0x50;
TR1 = 1;

/ * LCD commando * /

for (i = 0; i <5; i )
(
lcdcmd (CDATA );
msdelay (250);
)

/ * toetsenbord routine * /

col = 0xff / / alle coloumns input
while (1)
(
doen
(
R1 = 0; / / alle rij grond
R2 = 0;
R3 = 0;
R4 = 0;
colloc = kol;
colloc & = 0x15;
/ / masker gebruikt bits
)
while (colloc! = 0x15);
doen
(
doen
(
msdelay (20);
colloc = kol;
colloc & = 0x15;
)
while (colloc == 0x15);
msdelay (20);
colloc = kol;
colloc & = 0x15;
)
while (colloc == 0x15);
while (1)
(
R1 = 0;
colloc = kol;
colloc & = 0x15;
if (colloc! = 0x15)
(
rowloc = 1;
break;
)
R2 = 0;
colloc = kol;
colloc & = 0x15;
if (colloc! = 0x15)
(
rowloc = 2;
break;
)
R3 = 0;
colloc = kol;
colloc & = 0x15;
if (colloc! = 0x15)
(
rowloc = 3;
break;
)
R4 = 0;
colloc = kol;
colloc & = 0x15;
rowloc = 4;
break;
)

/ * check kolom en stuur het resultaat op de seriële poort en LCD Display * /

if (C1 == 0)
(
sertx (toetsen [rowloc] [1]);
lcddata (toetsen [rowloc] [1]);
)
else if (C2 == 0)
(
sertx (toetsen [rowloc] [2]);
lcddata (toetsen [rowloc] [2]);
)
anders
(
sertx (toetsen [rowloc] [3]);
lcddata (toetsen [rowloc] [3]);
)
)
)void sertx (unsigned char x)
(
SBUF = x;
while (TI == 0);
TI = 0;
)

void msdelay (unsigned int waarde)
(
unsigned int x, y;
voor (x = 0; x <1275; x )
for (y = 0; y <waarde; y );
)

void lcdcmd (unsigned char waarde)
(
ldata = waarde;
rs = 0;
rw = 0;
nl = 1;
msdelay (1);
nl = 0;
terugkeer;
)
void lcddata (unsigned char waarde)
(
ldata = waarde;
rs = 1;
rw = 0;
nl = 1;
msdelay (1);
nl = 0;
terugkeer;
)

==================================================

Wachten voor uw antwoord jongens ...

Geef me de suggestie ..Wat moet ik doen ....

 
Hock schreef:
Citaat:

Sorry maatje is er in Atmel 89C51RD2
 
Hallo jongens,

Nu ben using AT89c52 Microcontroller ...
Zal ik mijn LCD (16 * 2) en Toetsen (4 * 3) PORT 0 AND PORT 2 respectievelijk ....

LCD Enable pen ---------- Port0.2
LCD-R / W pen ------------ Port0.1
LCD-pin RS -------------- Port0.0
LCD-D0-D7 -------------- Port1.0 - Port1.7

en over Toetsenblok ....ben het aansluiten van de zeven pionnen in PORT2.0-PORT2.6

Mijn twijfel in deze hardware-verbinding is ...zal ik u deze dan niet ....

Zo ja: i
didnt get de Output Goed ....

Wat moet ik doen ...

please help me snel ...

Ik dank u bij voorbaat,

Met groet,

Harshita

 
Wat 8051 betreft
het pinnen, de selectie is OK ..
Vergeet niet, als je gebruik pinnen P0.0-P0.7 verbinding 10kΩ pullups ..

Als u niet wilt toevoegen externe weerstanden (pullups) switch to pinnen uit P3 ..

Rgds,
IanP

 
Hi IanP,

Ben using 89c52 ....is het ok ...moet ik coonect die pullup in Port0 ....

Als u niet in staat zijn voor de vangst van mijn punt ...Ik zal het circuit ...gelieve stel me een oplossing ....

Met groet,
Harshita

 
een deel van het toetsenbord niet tonen Short Circuit op belangrijke Druk maar ze gedragen zich als een enkele Ohm weerstand.
Als we Pull Up dan zal functioneren beter.zodat je beter gebruik PORT0

 

Welcome to EDABoard.com

Sponsor

Back
Top