Hyvän viestinnän luomiseksi ihmismaailman ja konemaailman välillä näyttöyksiköillä on tärkeä rooli. Joten ne ovat tärkeä osa sulautettuja järjestelmiä. Näyttöyksiköt - suuret tai pienet, toimivat samalla periaatteella. Monimutkaisten näyttöyksiköiden, kuten graafisten näyttöjen ja 3D-näyttöjen, lisäksi on tiedettävä työskentely yksinkertaisten näyttöjen, kuten 16x1 ja 16x2, kanssa. 16x1-näyttöyksikössä on 16 merkkiä ja se on yhdellä rivillä. 16x2 LCD on 32 merkkiä yhteensä 16in 1 s rivi ja toinen 16 2 ndlinja. Tässä on ymmärrettävä, että jokaisessa merkissä on 5x10 = 50 pikseliä, joten yhden merkin näyttämiseksi kaikkien 50 pikselin on toimittava yhdessä. Mutta meidän ei tarvitse huolehtia siitä, koska näyttöyksikössä on toinen ohjain (HD44780), joka hallitsee pikseleitä. (näet sen LCD-yksikössä, se on takana oleva musta silmä).
Tarvittavat komponentit
Laitteisto:
ATmega32-mikrokontrolleri
Virtalähde (5v)
AVR-ISP-ohjelmoija
JHD_162ALCD (16x2 LCD)
100uF kondensaattori.
Ohjelmisto:
Atmel-studio 6.1
Progisp tai salamaagia
Piirikaavio ja selitys
Kuten LCD-liitännässä ATmega32-piirin kanssa näkyy, näet, että ATMEGA32: n PORTA on kytketty dataportin LCD-näyttöön. Tässä on syytä muistaa poistaa JTAG-tiedonsiirto ATMEGA: n PORTC: sta vaihtamalla sulaketavuja, jos halutaan käyttää PORTC: ta normaalina tiedonsiirtoporttina. 16x2 LCD -näytössä on kaikkiaan 16 nastaa, jos taustavaloa on, jos taustavaloa ei ole, on 14 nastaa. Voidaan kytkeä päälle tai jättää taustavalon nastat. Nyt 14 nastat on 8 data nastat (7-14 tai D0-D7), 2 virtalähde nastat (1 & 2 tai VSS ja VDD tai GND ja + 5V), 3 rd pin kontrastin säätö (VEE-ohjaimet kuinka paksu merkkien pitäisi olla kuvassa), 3 ohjaintappia (RS & RW & E)
Edellä olevassa piirissä 16x2 LCD: n ja AVR-mikrokontrollerin liitäntään voit havaita, että olen ottanut vain kaksi ohjaintappia. Tämä antaa joustavuutta ymmärryksen parantamiseen. Kontrastibittiä ja LUKU / KIRJOITA ei käytetä usein, joten ne voidaan oikosulkea maahan. Tämä asettaa LCD-näytön suurimmalle kontrastille ja lukutilaan. Meidän on vain hallittava ENABLE- ja RS-nastoja merkkien ja tietojen lähettämiseksi vastaavasti.
Yhteydet ATmega32-mikrokontrollerin ja 16x2 LCD: n välillä on esitetty alla:
PIN1 tai VSS - maadoitus
PIN2 tai VDD tai VCC - + 5v teho
PIN3 tai VEE - maa (antaa parhaan kontrastin parhaiten aloittelijalle)
PIN4 tai RS (Rekisterivalinta) - mikrokontrollerin PD6
PIN5 tai RW (luku / kirjoitus) - maa (LCD-näytön asettaminen lukutilaan helpottaa viestintää käyttäjälle)
PIN6 tai E (käytössä) - mikrokontrollerin PD5
Mikrokontrollerin PIN7 tai D0 - PA0
PIN8 tai D1 - PA1
PIN9 tai D2 - PA2
PIN10 tai D3 - PA3
PIN11 tai D4 - PA4
PIN12 tai D5 - PA5
PIN13 tai D6 - PA6
PIN14 tai D7 - PA7
Piirissä näet, että olemme käyttäneet 8-bittistä viestintää (D0-D7), mutta tämä ei ole pakollista ja voimme käyttää myös 4-bittistä viestintää (D4-D7), mutta 4-bittisellä viestintäohjelmalla tulee vähän monimutkainen aloittelijoille, joten juuri menimme 8-bittinen tiedonsiirto.
Joten pelkästä havainnosta taulukon yläpuolelta yhdistämme 10 LCD-nastaa ohjaimeen, jossa 8 nastaa ovat datanastoja ja 2 nastaa ohjaukseen.
Työskentely
Aloittaaksesi sinun on tiedettävä 16x2 LCD: n 10 nastan (8 datanasta + 2 ohjaustapia) toiminnot. 8 datanastaa ovat tietojen tai komentojen lähettämiseen LCD-näyttöön. Kahdessa ohjaintapissa:
1. RS (Rekisteröi valinta) -tapin on kerrottava nestekidenäytöltä, lähetämmekö sille tietoja vai komennon.
Esimerkiksi:
Yllä olevassa taulukossa yksi dataportin (D7-D0) arvo "0b0010 1000 tai 0x28" käskee nestekidenäyttöä näyttämään "(" -symbolin. Taulukossa kaksi sama arvo 0x28 kertoo LCD: lle "olet 5x7 pisteen LCD ja käyttäytyä kuin yksi ", joten samalle arvolle käyttäjä voi määritellä kaksi asiaa, nyt tämä tilanne on neutraloitu Rekisterinvalintatapilla, jos RS-tappi on asetettu matalalle, LCD ymmärtää, että lähetämme komentoa. Jos asetamme RS-nastan korkeaksi, LCD ymmärtää, että lähetämme dataa, joten molemmissa tapauksissa LCD kunnioittaa dataportin arvoa RS-pin-arvon mukaan.
2. E (Enable) -tappi tarkoittaa yksinkertaisesti "tietokoneen virran LED-merkkivaloa", tämä nasta on asetettu korkealle kertomaan LCD: lle "vastaanottamaan ohjaimen tietolomakkeen tietoportti". Kun tämä nasta on matala korkean jälkeen, LCD käsittelee vastaanotetut tiedot ja näyttää vastaavan tuloksen. Joten tämä tappi on asetettu korkealle ennen tietojen lähettämistä ja vedetty maahan maahan lähettämisen jälkeen.
Kun olet liittänyt laitteiston, käynnistä Atmel studio ja aloita uusi projekti ohjelman kirjoittamiseksi, avaa nyt ohjelmointinäyttö ja käynnistä vääntöohjelma. Ohjelman on noudatettava seuraavaa ohjelmaa.
Ensin kerromme ohjaimelle, mitä portteja käytämme dataan ja LCD-ohjaukseen. Sitten kerro ohjaimelle, milloin tiedot tai komento lähetetään vastaavasti pelaamalla RS- ja E-nastoilla.
Lyhyt selitys ohjelmassa käytetyistä käsitteistä:
1. E on asetettu korkealle (käskee nestekidenäyttöä vastaanottamaan tietoja) ja RS on asetettu matalalle (kertoo LCD: lle, että annamme komennon)
2. Annetaan arvo 0x01 dataportille näytön tyhjentämiskomennona
3. E on asetettu korkealle (käskee LCD: tä vastaanottamaan tietoja) ja RS on asetettu korkealle (kertoo LCD: lle, että annamme tietoja)
4. Otetaan merkkijono, joka lähettää jokaisen merkin merkkijonossa yksitellen.
5. E on asetettu matalaksi (kertoo LCD: lle, että olemme lähettäneet tietoja)
6. Viimeisen komennon jälkeen nestekidenäyttö lopettaa tiedonsiirron ja käsittelee tiedot ja näyttää merkkijonon näytöllä.
Tässä skenaariossa lähetämme merkit peräkkäin. Merkit annetaan LCD: lle ASCII-koodeilla (American Standard Code for Information Interchange).
ASCII-koodien taulukko on esitetty yllä. Tässä, jotta nestekidenäytössä näkyy merkki "@", meidän on lähetettävä heksadesimaalikoodi "64". Jos lähetämme '0x62' nestekidenäytölle, siinä näkyy symboli>. Tällä tavoin lähetämme sopivat koodit nestekidenäyttöön nimen näyttämiseksi.
LCD- ja ATmega32 AVR-mikrokontrollerin välinen kommunikaatiotapa selitetään parhaiten alla olevassa C-koodissa vaihe vaiheelta,