For at etablere en god kommunikation mellem den menneskelige verden og maskinverdenen spiller displayenheder en vigtig rolle. Og så er de en vigtig del af indlejrede systemer. Displayenheder - store eller små, arbejder på det samme grundlæggende princip. Udover komplekse displayenheder som grafiske skærme og 3D-displayer, skal man vide at arbejde med enkle skærme som 16x1 og 16x2 enheder. 16x1 displayenheden har 16 tegn og er i en linje. Den 16x2 LCD vil have 32 tegn i alt 16in 1 st linje og en anden 16 i 2 ndlinje. Her skal man forstå, at der i hvert tegn er 5x10 = 50 pixels, så for at få vist et tegn skal alle 50 pixels arbejde sammen. Men vi behøver ikke bekymre os om det, fordi der er en anden controller (HD44780) i displayenheden, der gør jobbet med at kontrollere pixels. (du kan se det i LCD-enheden, det er det sorte øje bagpå).
Komponenter, der kræves
Hardware:
ATmega32 mikrokontroller
Strømforsyning (5v)
AVR-ISP programmør
JHD_162ALCD (16x2 LCD)
100uF kondensator.
Software:
Atmel studio 6.1
Progisp eller flash magi
Kredsløbsdiagram og forklaring
Som vist i LCD-grænsefladen til ATmega32-kredsløbet kan du se, at PORTA af ATMEGA32 er forbundet til dataport-LCD. Her skal man huske at deaktivere JTAG-kommunikationen i PORTC i ATMEGA ved at ændre sikringsbyte, hvis man vil bruge PORTC som en normal kommunikationsport. I 16x2 LCD er der overalt 16 ben, hvis der er baggrundslys, hvis der ikke er noget baggrundslys, vil der være 14 ben. Man kan tænde eller lade bagbelysningsstifterne stå. Nu i de 14 stifter er der 8 data stifter (7-14 eller D0-D7), 2 Strømforsyning stifter (1 & 2 eller VSS & VDD eller gnd & + 5V), 3 rd pin for kontraststyring (VEE-styringer, hvor tyk tegnene bør være vist), 3 kontrolben (RS & RW & E)
I ovenstående kredsløb til interface 16x2 LCD med AVR-mikrocontroller kan du observere, at jeg kun har taget to kontrolben. Dette giver fleksibiliteten med bedre forståelse. Kontrastbit og LÆS / SKRIV bruges ikke ofte, så de kan kortsluttes til jorden. Dette sætter LCD i højeste kontrast og læsetilstand. Vi skal bare kontrollere ENABLE og RS-pins for at sende tegn og data i overensstemmelse hermed.
Forbindelserne mellem ATmega32 mikrokontroller og 16x2 LCD er angivet nedenfor:
PIN1 eller VSS - jord
PIN2 eller VDD eller VCC - + 5v strøm
PIN3 eller VEE - jord (giver maksimal kontrast bedst for en nybegynder)
PIN4 eller RS (Registreringsvalg) - PD6 fra mikrocontroller
PIN5 eller RW (læse / skrive) - jord (sætter LCD i læsefunktion letter kommunikationen for brugeren)
PIN6 eller E (Enable) - PD5 fra mikrocontroller
PIN7 eller D0 - PA0 fra mikrocontroller
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 kredsløbet kan du se, at vi har brugt 8bit kommunikation (D0-D7) men dette er ikke obligatorisk, og vi kan også bruge 4bit kommunikation (D4-D7), men med 4 bit kommunikationsprogram bliver det lidt komplekst for begyndere, så bare vi gik med 8 bit kommunikation.
Så fra blot observation fra ovenstående tabel forbinder vi 10 ben på LCD til controller, hvor 8 ben er datapinde og 2 ben til kontrol.
Arbejder
For at komme i gang skal du kende funktionerne på 10 ben på 16x2 LCD (8 datapinde + 2 kontrolben). De 8 datapinde er til at sende data eller kommandoer til LCD. I to kontrolben:
1. RS-stift (Registrer valg) er at fortælle LCD'et, om vi sender data til det eller kommanderer til det.
For eksempel:
I ovenstående tabel et for en dataports (D7-D0) værdi på “0b0010 1000 eller 0x28” fortæller LCD'et at vise “(” symbol. I tabel to fortæller den samme værdi på 0x28 LCD ”du er en 5x7 dot LCD og opfører sig som en ”, så for samme værdi kan brugeren definere to ting, nu neutraliseres denne situation af Register Selection pin, hvis RS-pin er sat lavt, forstår LCD, at vi sender kommando. Hvis vi indstiller RS-pin til høj, LCD forstår, at vi sender dataene, og i begge tilfælde respekterer LCD dataportværdien ifølge RS-pinværdien.
2. E (Enable) -stiften er simpelthen for at fortælle "strømindikations-LED på en pc", denne stift er indstillet til høj for at fortælle LCD'et "at modtage dataformens dataport til controller". Når denne pin er lav efter høj, behandler LCD de modtagne data og viser det tilsvarende resultat. Så denne pin er indstillet til høj inden afsendelse af data og trækkes ned til jorden efter afsendelse af data.
Efter tilslutning af hardware skal du starte Atmel studio og starte et nyt projekt til at skrive programmet. Åbn nu programmeringsskærmen og start vridningsprogrammet. Programmet skal følge som vist efter.
Først fortæller vi controlleren, hvilke porte vi bruger til data og kontrol af LCD. Fortæl derefter controlleren, hvornår han skal sende data eller en kommando i overensstemmelse hermed ved at spille med RS- og E-ben.
Kort forklaring af de begreber, der anvendes i programmet:
1. E er sat højt (fortæller LCD at modtage data) og RS er lavt (fortæller LCD, at vi giver kommando)
2. At give værdi 0x01 til dataporten som en kommando til at rydde skærmen
3. E er sat højt (fortæller LCD at modtage data) og RS er højt (fortæller LCD at vi giver data)
4. At tage en streng af tegn, der sender hvert tegn i en streng en efter en.
5. E er lavt (fortæller LCD, at vi er færdige med at sende data)
6. Efter den sidste kommando afslutter LCD-kommunikationen og behandler dataene og viser tegnstrengen på skærmen.
I dette scenario sender vi tegnene efter hinanden. Tegnene tildeles LCD ved hjælp af ASCII-koder (amerikansk standardkode for informationsudveksling).
Tabellen over ASCII-koder er vist ovenfor. Her for at LCD'et skal vise tegnet "@", skal vi sende en hexadecimal kode "64". Hvis vi sender '0x62' til LCD'et, vises symbolet '>'. På denne måde sender vi de relevante koder til LCD'et for at vise et navn.
Kommunikationsvejen mellem LCD og ATmega32 AVR-mikrocontroller forklares bedst trin for trin af C-koden nedenunder,