Større elektroniske perifere enheder, der grænseflader til mikrocontroller 8051

Prøv Vores Instrument Til At Fjerne Problemer





Interfacing er et af de vigtige begreber i mikrocontroller 8051 fordi mikrokontrolleren er en CPU, der kan udføre en vis operation på data og giver output. Men for at udføre operationen har vi brug for en inputenhed til at indtaste dataene og til gengæld viser outputenheden resultaterne af operationen. Her bruger vi tastatur og LCD-skærm som input- og outputenheder sammen med mikrokontrolleren.

Microcontroller 8051 Eksterne enheder

Microcontroller 8051 Eksterne enheder



Interfacing er processen med at forbinde enheder sammen, så de kan udveksle informationen, og det viser sig at være lettere at skrive programmerne. Der er forskellige typer input- og outputenheder som for vores krav, såsom LED'er, LCD-skærme, 7-segment, tastatur, motorer og andre enheder.


Her er nogle vigtige moduler, der er grænseflade til mikrocontroller 8051.



1. LED-grænseflade til mikrokontroller:

Beskrivelse:

LED'er bruges mest i mange applikationer til at indikere output. De finder et stort udvalg af applikationer som indikatorer under testen for at kontrollere gyldigheden af ​​resultaterne på forskellige stadier. De er meget billige og let tilgængelige i forskellige former, farver og størrelser.

Lysdiode

Lysdiode

Princippet om drift af lysdioder er meget let. En enkle lysdioder serverer også som en grundlæggende displayenhed, den til- og fra-tilstand udtrykker fuldstændig information om en enhed. De almindeligt tilgængelige LED'er har et 1,7 v spændingsfald, hvilket betyder, at når vi anvender over 1,7 V, leder dioden. Dioden har brug for 10 mA strøm for at lyse med fuld intensitet.


Det følgende kredsløb beskriver “hvordan lysdioder skal lyses”.

Lysdioder kan være grænseflade til mikrokontrolleren i enten fælles anode eller fælles katode konfiguration. Her tilsluttes lysdioderne i fælles anodekonfigurationer, fordi den fælles katodekonfiguration bruger mere strøm.

Kredsløbsdiagram

LED-grænseflade til mikrokontroller

LED-grænseflade til mikrokontroller

Kildekode:

#omfatte
ugyldig hoved ()
{
usigneret int i
mens (1)
{
P0 = 0x00
for (i = 0i<30000i++)
P0 = 0xff
for (i = 0i<30000i++)
}
}

2. 7-segment Display interface grænseflade kredsløb

Beskrivelse:
Et syv segment display er den mest basale elektroniske skærm. Den består af otte lysdioder, der er associeret i en rækkefølge for at vise cifre fra 0 til 9, når de rigtige kombinationer af lysdioder er tændt. Et display med 7 segmenter bruger syv lysdioder til at vise cifre fra 0 til 9, og den 8. lysdiode bruges til punktum. Et typisk syv segment ser ud som vist i figuren nedenfor.

7-segment display

7-segment display

7-segmentskærme bruges i et antal systemer til at vise de numeriske oplysninger. De kan vise et ciffer ad gangen. Antallet af anvendte segmenter afhænger således af antallet af cifre, der skal vises. Her vises cifrene 0 til 9 kontinuerligt med en foruddefineret tidsforsinkelse.

7-segment skærmene fås i to konfigurationer, der er fælles anode og fælles katode. Her bruges almindelig anodekonfiguration, fordi mikrocontrollerens udgangsstrøm ikke er tilstrækkelig til at drive LED'erne. 7-segment displayet fungerer på negativ logik, vi skal give logik 0 til den tilsvarende pin for at gøre på LED-glød.

7-segment displaykonfigurationer

7-segment displaykonfigurationer

Den følgende tabel viser de hex-værdier, der bruges til at vise de forskellige cifre.

7-segment displaytabel

7-segment displaytabel

Kredsløbsdiagram

7-segment skærmgrænseflade

7-segment skærmgrænseflade

Kildekode:

#omfatte
sbit a = P3 ^ 0
ugyldig hoved ()
{
usigneret tromle n [10] = {0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0xE00,0x10}
usigneret int i, j
a = 1
mens (1)
{
for (i = 0i<10i++)
{
P2 = n [i]
for (j = 0j<60000j++)
}
}
}

3. LCD-grænseflade til mikrokontroller

LCD står for display med flydende krystaller, som kan vise tegnene pr. Linje. Her kan 16 ved 2 LCD-display vise 16 tegn pr. Linje, og der er 2 linjer. I dette LCD vises hvert tegn i 5 * 7 pixel matrix.

LCD-skærm

LCD-skærm

LCD er meget vigtig enhed, der bruges til næsten alle automatiserede enheder såsom vaskemaskiner, en autonom robot, magt kontrolsystemer og andre enheder. Dette opnås ved at vise deres status på små skærmmoduler som 7-syv segmentskærme, multisegment-lysdioder osv. Årsagerne er, at LCD-skærme er til en overkommelig pris, let programmerbare, og de har ingen begrænsninger for at vise specialtegn.

Den består af to registre såsom kommando / instruktionsregister og dataregister.

Kommando- / instruktionsregistret gemmer kommandoinstruktionerne til LCD'et. En kommando er en instruktion, der gives til LCD'et, der udfører et sæt foruddefinerede opgaver som initialisering, rydning af skærmen, indstilling af markørposition, styring af display osv.

Dataregistret gemmer de data, der skal vises på LCD. Dataene er en ASCII-værdi af de tegn, der skal vises på LCD'et.

Driften af ​​LCD styres af to kommandoer. Når RS = 0, R / W = 1 læser det dataene, og når RS = 1, R / W = 0, skriver det (udskriver) dataene.

LCD bruger følgende kommandokoder:

LCD-skærmkommandoer

LCD-skærmkommandoer

Kredsløbsdiagram:

LCD-grænseflade til mikrokontroller

LCD-grænseflade til mikrokontroller

Kildekode:

#omfatte
#definer kam P0

sbit rs = P2 ^ 0
sbit rw = P2 ^ 1
sbit ved = P2 ^ 2

ugyldigt lcd_initi ()
ugyldigt lcd_dat (usigneret tegn)
ugyldigt lcd_cmd (usigneret tegn)
ugyldig forsinkelse (usigneret int)
ugyldigt display (usigneret tegn *, usigneret tegn r)
ugyldig hoved ()
{

lcd_initi ()
lcd_cmd (0x80)
forsinkelse (100)
display (“EDGEFX TECHLNGS”, 15)
lcd_cmd (0xc0)
display (“KITS & LØSNINGER”, 15)
mens (1)
}

ugyldigt display (usigneret tegn *, usigneret tegn r)
{
usigneret int m
for (w = 0w{

lcd_dat (s [w])
}
}

ugyldigt lcd_initi ()
{
lcd_cmd (0x01)
forsinkelse (100)
lcd_cmd (0x38)
forsinkelse (100)
lcd_cmd (0x06)
forsinkelse (100)
lcd_cmd (0x0c)
forsinkelse (100)
}
ugyldigt lcd_dat (usigneret char dat)
{
kam = det
rs = 1
rw = 0

i = 1
forsinkelse (100)
i = 0
}
ugyldigt lcd_cmd (usigneret char cmd)
{
kom = cmd
rs = 0
rw = 0

i = 1
forsinkelse (100)
i = 0
}
ugyldig forsinkelse (usigneret int n)
{

usigneret int a
for (a = 0a}

4. Trinmotorgrænseflade kredsløb

Typer af trinmotorer-1

Unipolar trinmotor

TIL trinmotor er en af ​​de mest anvendte motorer til præcis vinkelbevægelse. Fordelen ved at bruge en trinmotor er, at motorens vinkelposition kan styres uden nogen feedbackmekanisme. Trinmotorer anvendes i vid udstrækning i industrielle og kommercielle applikationer. De bruges også ofte som i drevsystemer såsom robotter, vaskemaskiner osv.

Typer af trinmotorer-2

Bipolar trinmotor

Trinmotorer kan være unipolære eller bipolare, og her bruger vi enpolet trinmotor. Den enpolede trinmotor består af seks ledninger, hvoraf fire er forbundet med motorens spole, og to er almindelige ledninger. Hver fælles ledning er forbundet til en spændingskilde, og de resterende ledninger er forbundet til mikrokontrolleren.

Kredsløbsdiagram:

Stepper motor interface interface

Stepper motor interface interface

Kildekode:

#omfatte
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3

ugyldig forsinkelse ()

ugyldig hoved ()
{

mens (1)
{

a = 0
b = 1
c = 1
d = 1
forsinke()
a = 1
b = 0
c = 1
d = 1
forsinke()
a = 1
b = 1
c = 0
d = 1
forsinke()
a = 1
b = 1
c = 1
d = 0

}
}

ugyldig forsinkelse ()
{

usigneret char i, j, k
for (i = 0i<6i++)
for (j = 0j<255j++)
for (k = 0k<255k++)

}

5. Grænseflade til matrix-tastatur til 8051

Beskrivelse:

Matrix-tastatur

Matrix-tastatur

Tastatur er et meget brugt inputenhed med mange applikationer såsom telefon, computer, pengeautomat, elektronisk lås osv. Et tastatur bruges til at tage input fra brugeren til videre behandling. Her er et 4 til 3 matrix tastatur bestående af kontakter arrangeret i rækker og kolonner grænseflade til mikrokontrolleren . En 16 ved 2 LCD er også grænseflade til visning af output.

Grænsefladen konceptet med tastaturet er meget simpelt. Hvert antal tastaturer tildeles to unikke parametre, der er række og kolonne (R, C). Derfor identificerer nummeret hver gang en tast trykkes ved at registrere række- og søjlenumrene på tastaturet.

Tastatur internt diagram

Tastatur internt diagram

Oprindeligt er alle rækkerne indstillet til nul ('0') af controlleren, og kolonner scannes for at kontrollere, om der trykkes på en hvilken som helst tast. Hvis der ikke trykkes på nogen tast, vil output fra alle kolonner være høj ('1').

Kredsløbsdiagram

Matrix tastatur grænseflade til 8051

Matrix tastatur grænseflade til 8051

Kildekode:

#omfatte
#definer kam P0
sbit rs = P2 ^ 0
sbit rw = P2 ^ 1
sbit ved = P2 ^ 2
sbit c1 = P1 ^ 4
sbit c2 = P1 ^ 5
sbit c3 = P1 ^ 6
sbit r1 = P1 ^ 0
sbit r2 = P1 ^ 1
sbit r3 = P1 ^ 2
sbit r4 = P1 ^ 3
ugyldigt lcd_initi ()
ugyldigt lcd_dat (usigneret tegn)
ugyldigt lcd_cmd (usigneret tegn)
ugyldig forsinkelse (usigneret int)
ugyldigt display (usigneret tegn *, usigneret tegn r)

ugyldig hoved ()
{
lcd_initi ()
lcd_cmd (0x80)
forsinkelse (100)
display (“0987654321”, 10)
mens (1)
}

ugyldigt display (usigneret tegn *, usigneret tegn r)
{

usigneret int m
for (w = 0w{

lcd_dat (s [w])
}
}
ugyldigt lcd_initi ()
{
lcd_cmd (0x01)
forsinkelse (100)
lcd_cmd (0x38)
forsinkelse (100)
lcd_cmd (0x06)
forsinkelse (100)
lcd_cmd (0x0c)
forsinkelse (100)
}

ugyldigt lcd_dat (usigneret char dat)
{
kam = det
rs = 1
rw = 0

i = 1
forsinkelse (100)
i = 0
}
ugyldigt lcd_cmd (usigneret char cmd)
{
kom = cmd
rs = 0
rw = 0

i = 1
forsinkelse (100)
i = 0

}
ugyldig forsinkelse (usigneret int n)
{

usigneret int a
for (a = 0a}
}

Vi håber, at vi har været i stand til at give rigelig viden om de grundlæggende, men alligevel vigtige grænseflader mikrocontroller 8051 . Dette er de mest basale kredsløb, der kræves i ethvert integreret systemapplikation, og vi håber, at vi har givet dig en god revision.

En yderligere forespørgsel eller feedback relateret til dette emne er velkommen til at blive nævnt i kommentarfeltet nedenfor.

Fotokreditter