För att skapa en god kommunikation mellan människovärlden och maskinvärlden spelar displayenheter en viktig roll. Och så är de en viktig del av inbyggda system. Displayenheter - stora eller små, fungerar på samma grundprincip. Förutom komplexa displayenheter som grafiska displayer och 3D-visningar, måste man veta att man arbetar med enkla skärmar som 16x1 och 16x2 enheter. Displayenheten 16x1 kommer att ha 16 tecken och är i en rad. Den 16x2 LCD kommer att ha 32 tecken totalt 16in 1 st linje och en annan 16 i 2 : alinje. Här måste man förstå att det finns 5x10 = 50 pixlar i varje tecken så för att visa ett tecken måste alla 50 pixlar fungera tillsammans. Men vi behöver inte oroa oss för det eftersom det finns en annan styrenhet (HD44780) i displayenheten som gör jobbet med att styra pixlarna. (du kan se det på LCD-enheten, det är det svarta ögat på baksidan).
Komponenter krävs
Hårdvara:
ATmega32 mikrokontroller
Strömförsörjning (5v)
AVR-ISP Programmerare
JHD_162ALCD (16x2 LCD)
100uF kondensator.
Programvara:
Atmel studio 6.1
Progisp eller flash magi
Kretsschema och förklaring
Som visas i LCD-gränssnittet med ATmega32-kretsen kan du se att PORTA på ATMEGA32 är ansluten till dataports LCD. Här bör man komma ihåg att inaktivera JTAG-kommunikationen i PORTC i ATMEGA genom att ändra säkringsbyten, om man vill använda PORTC som en normal kommunikationsport. I 16x2 LCD finns det 16 stift överallt, om det finns en bakgrundsbelysning, om det inte finns något bakgrundsbelysning kommer det att finnas 14 stift. Man kan driva eller lämna bakljuset. Nu i de 14 stiften finns 8 datastift (7-14 eller D0-D7), 2 effektmatningsstiften (1 & 2 eller VSS & VDD eller GND & + 5v), 3 : e stift för kontrastreglering (VEE-styr hur tjock tecknen bör vara visas), 3 kontrollstift (RS & RW & E)
I ovanstående krets för gränssnitt 16x2 LCD med AVR-mikrokontroller kan du observera att jag bara har tagit två kontrollstift. Detta ger flexibiliteten för bättre förståelse. Kontrastbiten och LÄS / SKRIV inte ofta så att de kan kortslutas till marken. Detta sätter LCD i högsta kontrast och läsläge. Vi behöver bara kontrollera ENABLE- och RS-stift för att skicka tecken och data i enlighet därmed.
Anslutningarna mellan ATmega32 mikrokontroller och 16x2 LCD ges nedan:
PIN1 eller VSS - mark
PIN2 eller VDD eller VCC - + 5v ström
PIN3 eller VEE - mark (ger maximal kontrast bäst för en nybörjare)
PIN4 eller RS (registerval) - PD6 för mikrokontroller
PIN5 eller RW (läs / skriv) - mark (sätter LCD i läsläge underlättar kommunikationen för användaren)
PIN6 eller E (Aktivera) - PD5 för mikrokontroller
PIN7 eller D0 - PA0 för mikrokontroller
PIN8 eller D1 - PA1
PIN9 eller D2 - PA2
PIN10 eller D3 - PA3
PIN11 eller D4 - PA4
PIN12 eller D5 - PA5
PIN13 eller D6 - PA6
PIN14 eller D7 - PA7
I kretsen kan du se att vi har använt 8-bitars kommunikation (D0-D7) men detta är inte obligatoriskt och vi kan också använda 4-bitars kommunikation (D4-D7) men med 4-bitars kommunikationsprogram blir lite komplext för nybörjare så bara vi gick med 8-bitars kommunikation.
Så från enbart observation från ovanstående tabell ansluter vi 10 stift LCD till styrenhet där 8 stift är datapinnar och 2 stift för kontroll.
Arbetssätt
För att komma igång måste du känna till funktionerna på 10 stift på 16x2 LCD (8 stift + 2 kontrollstift). De 8 datapinnarna är för att skicka data eller kommandon till LCD. I två kontrollstift:
1. Stift RS (Registrera val) är att berätta för LCD-skärmen om vi skickar data till den eller kommandon till den.
Till exempel:
I ovanstående tabell ett för ett dataports (D7-D0) -värde på "0b0010 1000 eller 0x28" uppmanar LCD-skärmen att visa "(" -symbolen. I tabell två säger samma värde på 0x28 LCD: n "du är en 5x7-punkt LCD-skärm och bete sig som en ”, så för samma värde kan användaren definiera två saker, nu neutraliseras denna situation av Register Selection-stift, om RS-stiftet är lågt förstår LCD att vi skickar kommando. Om vi ställer in RS-stift till högt då LCD förstår att vi skickar data. Och i båda fallen respekterar LCD dataportvärdet enligt RS-pin-värdet.
2. E (Enable) -stift är helt enkelt att säga "en indikatorlampa för en PC", denna stift är inställd på hög för att meddela LCD-skärmen "att ta emot dataformatens port för styrenheten". När denna stift blir låg efter hög bearbetar LCD mottagna data och visar motsvarande resultat. Så denna stift är inställd på hög innan data skickas och dras ner till marken efter att ha skickat data.
Efter att ha anslutit hårdvaran, starta Atmel studio och starta ett nytt projekt för att skriva programmet, öppna nu programmeringsskärmen och börja vrida programmet. Programmet måste följa som visas nedan.
Först berättar vi för styrenheten vilka portar vi använder för data och kontroll av LCD. Berätta sedan för handkontrollen när du ska skicka data eller ett kommando i enlighet med detta genom att spela med RS- och E-stift.
Kort förklaring av begreppen som används i programmet:
1. E är högt (säger till LCD att ta emot data) och RS är lågt (säger till LCD att vi ger kommando)
2. Ge värdet 0x01 till dataporten som ett kommando för att rensa skärmen
3. E är högt (säger till LCD att ta emot data) och RS är högt (säger till LCD att vi ger data)
4. Ta en sträng av tecken som skickar varje tecken i en sträng en efter en.
5. E är lågt inställt (säger till LCD att vi är klara att skicka data)
6. Efter det sista kommandot avslutar LCD-kommunikationen och bearbetar data och visar teckensträngen på skärmen.
I det här scenariot kommer vi att skicka karaktärerna efter varandra. Tecken ges till LCD med ASCII-koder (amerikansk standardkod för informationsutbyte).
Tabellen över ASCII-koder visas ovan. Här för att LCD-skärmen ska visa tecknet "@" måste vi skicka en hexadecimal kod "64". Om vi skickar '0x62' till LCD-skärmen visas symbolen '>'. Så här kommer vi att skicka lämpliga koder till LCD-skärmen för att visa ett namn.
Kommunikationssättet mellan LCD och ATmega32 AVR-mikrokontroller förklaras bäst steg för steg av C-koden nedan,