» Elektronica »Bankje om HD44780 op een laag niveau te bestuderen

Laag niveau HD44780 studiebank



Je schreef in het programma voor Arduino zoiets als:

lcd.print ("Hallo, wereld!")


Het bord voerde het bevel gehoorzaam uit en de tekst verscheen op het scherm. Maar hoe 'zei' één apparaat iets en het tweede 'hoorde' en 'begreep'? Dit is alsof je de kunstenaar vraagt ​​om je portret te maken, maar niet te zien hoe hij eraan werkt. De auteur van Instructsbles onder de bijnaam indoorgeek kwam met een stand die je helpt om in de schoenen van de 'levende Arduino' te kruipen en de HD44780 op een laag niveau te sturen. In een van de wedstrijden, dit zelfgemaakt won de eerste prijs.

Het heeft een klein detail nodig: elke module (LCD, VLI of PMOLED) op de HD44780-controller of compatibel, acht tuimelschakelaars, een niet-vergrendelbare knop, een schuifschakelaar, een 1 kΩ variabele weerstand, een bord met een Micro USB-aansluiting en een behuizing.








Van wat niet op de foto wordt weergegeven, hebben we nodig: een weerstand van 10 kOhm en een condensator van 100 μF en minimaal 6,3 V.

Indoorgeek nam zelf een module van het meest voorkomende type: LCD, 16 karakters per regel, twee regels. Maar de rest van de modules hebben hetzelfde besturingsprincipe, alleen de pinout kan enigszins verschillen, dus wees niet te lui om in de datasheet te kijken.

In alle gevallen komt de verbinding met de gemeenschappelijke draad overeen met logisch nul en de verbinding met de +5 volt-voedingsbus komt overeen met de eenheid.

Pinnen 1 en 2 zijn voor het voeden van de module. De eerste is altijd verbonden met een gemeenschappelijke draad en de tweede is altijd met een stroombus.

Pin 3 is voor het aanpassen van het contrast. Wanneer er een spanning van 0 tot 5 volt op wordt aangelegd ten opzichte van de gemeenschappelijke draad, verandert het contrast van nul tot maximaal.

Met pin 4 kunt u kiezen tussen een gegevensregister en een instructieregister. We geven een logische nul - het register van instructies (met andere woorden commando's) is geselecteerd, de eenheid is het gegevensregister.

Instructies kunnen bijvoorbeeld de volgende zijn: initialiseer de controller, wis het scherm, enz., En de gegevens bevatten tekens die u op de indicator zult weergeven.

U kunt daarentegen gegevens uit een register lezen. Om dit te doen, moet u een hoog niveau toepassen op pin 5 en het scherm gaat terug naar de informatie-uitvoermodus naar uw microcontroller. Om opnieuw gegevens van uw microcontroller naar de displaycontroller te schrijven, moet u laag niveau 5 naar pin 5 sturen. Heel vaak wordt de leesmodus helemaal niet gebruikt, zoals bijvoorbeeld bij dit zelfgemaakte product.

Volgens de pinnen 7 tot 14 kan het scherm opdrachten en gegevens uitwisselen in 8-bits codering. Het laagste niveau komt overeen met pin 7, het hoogste - 14.

Pin 6 is nodig voor gating.Je stelt langzaam gegevens in op pinnen 7 tot en met 14, maar terwijl pin 6 een logische nul is, reageert de module hier helemaal niet op. Vervolgens, zonder de status van pinnen 7 tot 14 te veranderen, stuurt u een korte-termijnpuls van hoog niveau naar pin 7 - en de gegevens worden verzonden.

Conclusies 15 en 16 - voeding van de achtergrondverlichting, indien aanwezig. 15 - plus, 16 - min.

Beschikbaar voor indorgeek, de koffer bleek 200x150x40 millimeter groot te zijn. Deze koffer is van een andere, gedemonteerd zelfgemaakt gemaakt en er zaten al gaten in. De meester gebruikte ze maximaal in het nieuwe ontwerp om zo min mogelijk extra's te doen.



Hij stelde acht tuimelschakelaars in voor het wijzigen van de status van de data / commandobuslijnen, een schakelaar voor het kiezen tussen registers (zie hierboven), een knop voor poorten, een variabele weerstand voor het continu aanpassen van het contrast.

Het riserboard met een micro-USB-aansluiting heeft handige pinnen die het gemakkelijk maken om kabels aan te sluiten. Hier zijn er maar twee nodig: +5 V en een gemeenschappelijke draad. Als je zo'n bord niet hebt en een micro-USB-aansluiting ergens gesoldeerd lijkt, is het lastig om te solderen, je kunt gewoon een snoer nemen met een USB-connector. Laten we in ieder geval na de master herhalen en een dergelijk schema solderen:



De contacten van de tuimelschakelaars komen overeen met de bovenste positie, indorgeek met elkaar verbonden en dienden een pluspunt in. Hij deed hetzelfde met de contacten van de tuimelschakelaars die overeenkomen met de onderste positie, alleen gaf hij ze een min. Hij verbond de beweegbare contacten van de tuimelschakelaars niet met elkaar, maar met de conclusies van de databus / module-commando's in overeenstemming met het "gewicht" van beide (D0 - pin 7 - lage orde, D7 - pin 14 - hoge). Als de meesters in hun jeugd geen furieuze pull-up-weerstanden hadden gebeten, zou hij eenvoudigere tuimelschakelaars kunnen gebruiken - niet schakelen, maar normaal open.

Maar dezelfde weerstanden, maar in de onderdrukkingscircuits van contact stuiteren, was hij nooit beledigd. Hier is dit circuit nodig, zodat de displaycontroller niet meerdere keren op de stroboscoopknop drukt. Andere bedieningselementen vereisen geen onderdrukking van gebabbel, aangezien zolang de stroboscooppulsen niet worden ontvangen, de gegevens op de resterende lijnen zo vaak kunnen veranderen als u wilt. Het belangrijkste is om de tuimelschakelaars en de schakelaar niet aan te raken met de knop ingedrukt. Dus, met een weerstand van 10 kOhm, trok de meester pin 6 naar de gemeenschappelijke draad en met de knop naar de plusbus. Omdat de weerstand van de knop veel lager is, "sleept" hij wanneer hij wordt ingedrukt. Wanneer hij wordt losgelaten, wordt zijn weerstand bijna oneindig en trekt de weerstand hem al. Een condensator van 100 uF (niet weergegeven in het diagram), verbonden door een plus aan de plusbus, en door een min aan de weerstand en de zesde uitgang van het scherm, onderdrukt gebabbel. Het is natuurlijk beter om het gebabbel te onderdrukken met een schakelknop en RS-trigger.

Bij de schuifschakelaar zijn de uitgangen van de vaste contacten op dezelfde manier aangesloten als bij de tuimelschakelaars en de beweegbare - op de uitgang van de module 6. Hier toonde de ontwikkelaar opnieuw angst voor pull-up-weerstanden. Deze schakelaar is nodig om te kiezen tussen de transmissiemodi van commando's (nul) en data (eenheid).

Indoorgeek verbond de uitgang van de variabele weerstand die overeenkomt met het minimale contrast met de gemeenschappelijke draad, het tegenovergestelde van de plusbus, en het midden (motor) met de derde uitgang van de module.

Conclusies 1, 5 en 16 (respectievelijk minus vermogen, schrijven / lezen en minus achtergrondverlichting) de master aangesloten op een gemeenschappelijke draad, dus de opnamemodus wordt constant geselecteerd. Conclusies 2 en 15 (respectievelijk plus stroom en plus achtergrondverlichting), verbond hij met de vijf volt bus. In de displaymodule is een stroombegrenzende weerstand via de achtergrondverlichting-LED's geïntegreerd.

Als je dit allemaal hebt verzameld, nu voor je neus - zoiets als dit:



Het voorpaneel indoorgeek is zo ontworpen dat u hetzelfde kunt doen:



U kunt de opdrachten van de HD44780-controller leren en hoe u ze kunt bedienen gegevensblad. Je kunt ook kant-en-klare scriptvoorbeelden bekijken voor simulator. Om te beginnen herhalen we de stappen achter indoorgeek om HELLO weer te geven!

Zet het apparaat aan. De achtergrondverlichting gaat branden. Verplaats de schuifschakelaar naar de positie die overeenkomt met logisch nul, zodat de indicator overschakelt naar de modus voor het ontvangen van opdrachten. Stel het binaire nummer 00001111 in op de commando / databus met de tuimelaars en druk kort op de stroboscoopknop. Dit commando betekent: zet het scherm aan, maak de cursor zichtbaar en knipperend, wat zal gebeuren. Op dezelfde manier zullen we de 00110000-opdracht geven, wat betekent: ontvang gegevens in 8-bits indeling, selecteer de eerste regel en lettertype 5 bij 8 pixels. Visueel gebeurt er niets, maar ergens in de displaycontroller zullen de nodige schakelaars optreden. U kunt gegevens overdragen. We vertalen de schuifschakelaar naar de positie die overeenkomt met de logische eenheid, nu is de indicatormodule klaar om ze te accepteren. Stel de ASCII-code van de letter H in, d.w.z. 01001000, schakel de tuimelschakelaars op de bus in en druk op de stroboscoopknop. De corresponderende letter verschijnt op het scherm en de cursor beweegt één positie naar rechts. Evenzo geven we de letters E, L, L, O en een uitroepteken door: 01000101, 01001100, 01001100, 01001111, 00100001. Als je hetzelfde hebt gedaan, maakt het niet uit op de standaard die je zojuist hebt gemonteerd of in de simulator, je ziet de HELLO-inscriptie ! Zoals dit:



Dit is hoe je begreep hoeveel Arduino doet om slechts een paar karakters weer te geven. En er zijn teams om complexere acties uit te voeren, die je onder de knie hebt, waardoor je interessante effecten kunt krijgen, niet-standaard karakters kunt definiëren ...

Je excursie naar de "keuken" van de Arduino-bibliotheek LiquidCrystal is nog maar net begonnen, en laat het leuk zijn!
7.5
7.5
7.5

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten

We raden je aan om te lezen:

Geef het voor de smartphone ...