Belangrijke elektronische randapparatuur die verbinding maakt met Microcontroller 8051

Probeer Ons Instrument Voor Het Oplossen Van Problemen





Interfacing is een van de belangrijkste concepten in microcontroller 8051 omdat de microcontroller een CPU is die een bepaalde bewerking op gegevens kan uitvoeren en de uitvoer geeft. Om de bewerking uit te voeren, hebben we echter een invoerapparaat nodig om de gegevens in te voeren en op zijn beurt geeft het uitvoerapparaat de resultaten van de bewerking weer. Hier gebruiken we toetsenbord en LCD-scherm als invoer- en uitvoerapparaten, samen met de microcontroller.

Microcontroller 8051 Randapparatuur

Microcontroller 8051 Randapparatuur



Interfacing is het proces waarbij apparaten met elkaar worden verbonden zodat ze de informatie kunnen uitwisselen en dat blijkt gemakkelijker te zijn om de programma's te schrijven. Er zijn verschillende soorten invoer- en uitvoerapparaten voor onze vereisten, zoals LED's, LCD's, 7-segmenten, toetsenbord, motoren en andere apparaten.


Hier worden enkele belangrijke modules gegeven die zijn gekoppeld aan microcontroller 8051.



1. LED-interface naar microcontroller:

Omschrijving:

LED's worden in veel toepassingen het meest gebruikt voor het aangeven van de output. Ze vinden een enorm scala aan toepassingen als indicatoren tijdens de test om de validiteit van resultaten in verschillende stadia te controleren. Ze zijn erg goedkoop en gemakkelijk verkrijgbaar in verschillende vormen, kleuren en maten.

Lichtgevende diode

Lichtgevende diode

Het principe van werking van leds is heel gemakkelijk. Een eenvoudige LED's serveren ook als een basisweergaveapparaat, het staat aan en uit en betekent volledige informatie over een apparaat. De gangbare beschikbare leds hebben een spanningsval van 1,7 V, wat betekent dat wanneer we toepassen boven 1,7 V, de diode geleidt. De diode heeft 10mA stroom nodig om op volle sterkte te gloeien.


Het volgende circuit beschrijft 'hoe de LED's te laten gloeien'.

LED's kunnen worden aangesloten op de microcontroller in een gemeenschappelijke anode- of gemeenschappelijke kathodeconfiguratie. Hier zijn de LED's verbonden in de gemeenschappelijke anodeconfiguratie omdat de gemeenschappelijke kathodeconfiguratie meer stroom verbruikt.

Schakelschema

LED-interface naar microcontroller

LED-interface naar microcontroller

Broncode:

#inclusief
leegte main ()

unsigned int i
terwijl (1)

P0 = 0x00
voor (i = 0i<30000i++)
P0 = 0xff
voor (i = 0i<30000i++)

2. Interfacecircuit met 7 segmenten

Omschrijving:
Een display met zeven segmenten is het meest eenvoudige elektronische display. Het bestaat uit acht LED's die op volgorde zijn gekoppeld om de cijfers van 0 tot 9 weer te geven wanneer de juiste combinaties van LED's zijn ingeschakeld. Een 7-segment display gebruikt zeven LED's om cijfers van 0 tot 9 weer te geven en de 8e LED wordt gebruikt voor punt. Een typisch zeven segment ziet er leuk uit, zoals weergegeven in onderstaande afbeelding.

7-segment display

7-segment display

De 7-segment displays worden in een aantal systemen gebruikt om de numerieke informatie weer te geven. Ze kunnen één cijfer tegelijk weergeven. Het aantal gebruikte segmenten hangt dus af van het aantal cijfers dat moet worden weergegeven. Hier worden de cijfers 0 t / m 9 continu weergegeven met een vooraf gedefinieerde vertraging.

De 7-segment-displays zijn verkrijgbaar in twee configuraties: gemeenschappelijke anode en gemeenschappelijke kathode. Hier wordt een algemene anodeconfiguratie gebruikt omdat de uitgangsstroom van de microcontroller niet voldoende is om de LED's aan te sturen. Het 7-segment display werkt op negatieve logica, we moeten logica 0 leveren aan de corresponderende pin om LED op te laten lichten.

7-segment displayconfiguraties

7-segment displayconfiguraties

De volgende tabel toont de hexadecimale waarden die worden gebruikt om de verschillende cijfers weer te geven.

Displaytafel met 7 segmenten

Displaytafel met 7 segmenten

Schakelschema

Interface met 7 segmenten

Interface met 7 segmenten

Broncode:

#inclusief
sbit a = P3 ^ 0
leegte main ()

unsigned char n [10] = {0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0xE00,0x10}
unsigned int i, j
a = 1
terwijl (1)

voor (i = 0i<10i++)

P2 = n [i]
voor (j = 0j<60000j++)


3. LCD-interface naar microcontroller

LCD staat voor liquid crystal display dat de karakters per regel kan weergeven. Hier kan een 16 bij 2 LCD-scherm 16 tekens per regel weergeven en er zijn 2 regels. In dit LCD-scherm wordt elk teken weergegeven in een matrix van 5 * 7 pixels.

LCD scherm

LCD scherm

LCD is een zeer belangrijk apparaat dat wordt gebruikt voor bijna alle geautomatiseerde apparaten zoals wasmachines, een autonome robot, vermogensregelsystemen en andere apparaten. Dit wordt bereikt door hun status weer te geven op kleine displaymodules zoals displays met 7 tot 7 segmenten, leds met meerdere segmenten, enz. De reden hiervoor is dat lcd's redelijk geprijsd zijn, gemakkelijk te programmeren en geen beperkingen hebben voor het weergeven van speciale tekens.

Het bestaat uit twee registers, zoals een commando- / instructieregister en een dataregister.

Het commando / instructieregister slaat de commando-instructies op die aan de LCD worden gegeven. Een commando is een instructie die aan het LCD-scherm wordt gegeven die een reeks vooraf gedefinieerde taken uitvoert, zoals initialiseren, het scherm leegmaken, de cursor positioneren, de weergave regelen enz.

Het gegevensregister slaat de gegevens op die op het LCD-scherm moeten worden weergegeven. De gegevens zijn een ASCII-waarde van de tekens die op het LCD-scherm moeten worden weergegeven.

De werking van het LCD-scherm wordt bestuurd door twee opdrachten. Als RS = 0, R / W = 1, leest het de gegevens en als RS = 1, R / W = 0, schrijft (print) het de gegevens.

LCD gebruikt de volgende opdrachtcodes:

LCD-schermopdrachten

LCD-schermopdrachten

Schakelschema:

LCD-interface naar microcontroller

LCD-interface naar microcontroller

Broncode:

#inclusief
# definiëren kam P0

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

leegte lcd_initi ()
void lcd_dat (unsigned char)
void lcd_cmd (unsigned char)
ongeldige vertraging (unsigned int)
ongeldige weergave (niet-ondertekende tekens, niet-ondertekende tekens)
leegte main ()

lcd_initi ()
lcd_cmd (0x80)
vertraging (100)
scherm ('EDGEFX TECHLNGS', 15)
lcd_cmd (0xc0)
display ('KITS & OPLOSSINGEN', 15)
terwijl (1)

ongeldige weergave (niet-ondertekende tekens, niet-ondertekende tekens)

unsigned int w
voor (w = 0w

lcd_dat(s[w])

leegte lcd_initi ()

lcd_cmd (0x01)
vertraging (100)
lcd_cmd (0x38)
vertraging (100)
lcd_cmd (0x06)
vertraging (100)
lcd_cmd (0x0c)
vertraging (100)

void lcd_dat(unsigned char dat)

kam = dat
rs = 1
rw = 0

in = 1
vertraging (100)
in = 0

leegte lcd_cmd (niet-ondertekende teken cmd)

kwam = cmd
rs = 0
rw = 0

in = 1
vertraging (100)
in = 0

ongeldige vertraging (unsigned int n)

unsigned int a
voor (a = 0a

4. Interfaceschakeling stappenmotor

Soorten stappenmotoren-1

Unipolaire stappenmotor

NAAR stappenmotor is een van de meest gebruikte motoren voor nauwkeurige hoekbewegingen. Het voordeel van het gebruik van een stappenmotor is dat de hoekpositie van de motor kan worden geregeld zonder enig feedbackmechanisme. De stappenmotoren worden veel gebruikt in industriële en commerciële toepassingen. Ze worden ook vaak gebruikt zoals in aandrijfsystemen zoals robots, wasmachines etc.

Soorten stappenmotoren-2

Bipolaire stappenmotor

Stappenmotoren kunnen unipolair of bipolair zijn en hier gebruiken we een unipolaire stappenmotor. De unipolaire stappenmotor bestaat uit zes draden waarvan er vier zijn verbonden met de spoel van de motor en twee gemeenschappelijke draden. Elke gemeenschappelijke draad is verbonden met een spanningsbron en de overige draden zijn verbonden met de microcontroller.

Schakelschema:

Stappenmotor interfacecircuit

Stappenmotor interfacecircuit

Broncode:

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

ongeldige vertraging ()

leegte main ()

terwijl (1)

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


ongeldige vertraging ()

unsigned char i, j, k
voor (i = 0i<6i++)
voor (j = 0j<255j++)
voor (k = 0k<255k++)

5. Matrix toetsenbord interface naar 8051

Omschrijving:

Matrix-toetsenbord

Matrix-toetsenbord

Toetsenbord is een veel gebruikt invoerapparaat met veel toepassingen zoals telefoon, computer, geldautomaat, elektronisch slot etc. Een toetsenbord wordt gebruikt om input van de gebruiker te ontvangen voor verdere verwerking. Hier is een 4 bij 3 matrix toetsenbord bestaande uit schakelaars gerangschikt in rijen en kolommen gekoppeld aan de microcontroller Een 16 bij 2 LCD is ook aangesloten voor het weergeven van de output.

Het interfaceconcept van het toetsenbord is heel eenvoudig. Aan elk toetsenbordnummer zijn twee unieke parameters toegewezen: rij en kolom (R, C). Daarom wordt elke keer dat een toets wordt ingedrukt, het nummer geïdentificeerd door de rij- en kolomnummers van het toetsenbord te detecteren.

Toetsenbord intern schema

Toetsenbord intern schema

Aanvankelijk worden alle rijen op nul (‘0’) gezet door de controller en worden kolommen gescand om te controleren of er een toets is ingedrukt. Als er geen toets wordt ingedrukt, zal de output van alle kolommen hoog zijn (‘1’).

Schakelschema

Matrix toetsenbord interface naar 8051

Matrix toetsenbord interface naar 8051

Broncode:

#inclusief
# definiëren kam P0
sbit rs = P2 ^ 0
sbit rw = P2 ^ 1
sbit bij = 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
leegte lcd_initi ()
void lcd_dat (unsigned char)
void lcd_cmd (unsigned char)
ongeldige vertraging (unsigned int)
ongeldige weergave (niet-ondertekende tekens, niet-ondertekende tekens)

leegte main ()

lcd_initi ()
lcd_cmd (0x80)
vertraging (100)
display ('0987654321', 10)
terwijl (1)

ongeldige weergave (niet-ondertekende tekens, niet-ondertekende tekens)

unsigned int w
voor (w = 0w

lcd_dat(s[w])


leegte lcd_initi ()

lcd_cmd (0x01)
vertraging (100)
lcd_cmd (0x38)
vertraging (100)
lcd_cmd (0x06)
vertraging (100)
lcd_cmd (0x0c)
vertraging (100)

void lcd_dat(unsigned char dat)

kam = dat
rs = 1
rw = 0

in = 1
vertraging (100)
in = 0

leegte lcd_cmd (niet-ondertekende teken cmd)

kwam = cmd
rs = 0
rw = 0

in = 1
vertraging (100)
in = 0


ongeldige vertraging (unsigned int n)

unsigned int a
voor (a = 0a

We hopen dat we voldoende kennis hebben kunnen bieden over de fundamentele maar belangrijke interfacecircuits van microcontroller 8051 ​Dit zijn de meest elementaire circuits die vereist zijn in elke embedded systeemtoepassing en we hopen dat we u een goede revisie hebben gegeven.

Een verdere vraag of feedback met betrekking tot dit onderwerp is welkom om te worden vermeld in de commentaarsectie hieronder.

Fotocredits