- 16x2 LCD-näytön toiminta
- Piirikaavio liitännän nestekidenäyttöön STM8-mikrokontrollerilla
- STM8 LCD-kirjasto - Otsikkotiedosto mallille STM8S103F3P6
- LCD-ohjelma STM8S-mikrokontrollerille
- STM8 LCD-näytöllä - toimii
16x2 aakkosnumeerinen LCD-näyttö on yleisimmin käytetty näyttö harrastajien ja harrastajien keskuudessa. Näyttö on erittäin hyödyllinen, kun haluat näyttää perustiedot käyttäjälle, ja se voi myös auttaa koodin testauksessa tai virheenkorjauksessa. Tämä erityisesti 16x2-LCD-moduuli on helposti saatavilla ja se on ollut suosittu pitkään. Voit oppia lisää 16x2 LCD-moduulin perusteista linkitetystä artikkelista.
Jatkaaksesi STM8-mikrokontrolleri-opetusohjelmien sarjaa, tässä opetusohjelmassa opitaan, kuinka LCD-näyttö liitetään STM8-mikrokontrolleriin. Olemme aiemmin liittäneet 16x2 LCD: n monien muiden mikrokontrollerien kanssa, opetusohjelmat on lueteltu alla ja voit tarkistaa ne, jos olet kiinnostunut.
Jos olet uusi STM8: n käyttäjä, tutustu STM8-mikrokontrolleri -artikkelin käyttöönottoon ymmärtääksesi ohjainkortin ja ohjelmointiympäristön perusteet. Emme käsittele tämän opetusohjelman perusteita.
16x2 LCD-näytön toiminta
Kuten nimestä voi päätellä, 16x2-nestekidenäytössä on 16 saraketta ja 2 riviä. Joten kokonaisuudessaan voimme näyttää 32 merkkiä tällä näytöllä ja nämä merkit voivat olla aakkosia tai numeroita tai jopa symboleja. Alla on esitetty yksinkertainen 16x2 LCD -näyttö, jota käytämme tässä opetusohjelmassa-
Kuten näette, näytöllä on 16 nastaa ja voimme jakaa sen viiteen luokkaan: virtapihdit, kontrastitapit, ohjaustapit, tietopistokkeet ja taustavalonastat alla olevan taulukon mukaisesti. Tulemme kunkin nastan yksityiskohtiin, kun keskustelemme tämän opetusohjelman piirikaaviosta.
Kategoria | Tappi NO. | PIN-nimi | Toiminto |
Virtanastat | 1 | VSS | Maadoitustappi, kytketty maahan |
2 | VDD tai Vcc | Jännitetappi + 5V | |
Kontrastinasta | 3 | V0 tai VEE | Kontrastiasetus, kytketty Vcc: hen muuttuvan vastuksen kautta. |
Ohjausnastat | 4 | RS | Rekisteri Valitse tappi, RS = 0 komentotila, RS = 1 datatila |
5 | RW | Luku- / kirjoitusnasta, RW = 0 Kirjoitustila, RW = 1 Lukutila | |
6 | E | Ota käyttöön, korkean tai matalan pulssin on oltava käytössä nestekidenäytössä | |
Data-nastat | 7-14 | D0-D7 | Datanastat, tallentaa nestekidenäytössä näytettävät tiedot tai komento-ohjeet |
Taustavalo-nastat | 15 | LED + tai A | Taustavalon + 5 V virran saamiseksi |
16 | LED tai K | Taustavalon maa |
Nestekidenäytön takaosassa, kuten alla olevassa kuvassa, on kaksi mustaa pistettä, joiden sisällä on HD44780-LCD-ohjainpiiri (punaisella ympäröity). Mikrokontrollerimme tulisi olla yhteydessä tämän mikropiirin kanssa, joka puolestaan ohjaa nestekidenäytössä näkyvää. Jos olet utelias tietämään, miten kaikki tämä toimii, sinun kannattaa tarkistaa 16x2 LCD-näytön toiminta, jossa olemme jo keskustelleet LCD: n toiminnasta yksityiskohtaisesti.
Tässä opetusohjelmassa keskustellaan piirikaaviosta ja koodista aakkosmerkkien (aakkoset ja numerot) näyttämiseksi 16x2 LCD-näytöllä yksinkertaisten LCD_print _char- ja LCD_print_string- komentojen avulla. Näitä komentoja voidaan käyttää suoraan ohjelmassa otsikkotiedostomme sisällyttämisen jälkeen. Otsikkotiedosto käsittelee suurinta osaa sinulle, joten ei ole pakko tietää, miten näyttö tai HD44780-ohjaimen IC toimii.
Piirikaavio liitännän nestekidenäyttöön STM8-mikrokontrollerilla
Täydellinen STM8 LCD-piiri löytyy alla olevasta kuvasta. Kuten näette , STM8S103F3P6-ohjaimen liitäntä LCD-näytöllä on hyvin yksinkertainen, LCD-näyttö on kytketty suoraan levyyn ja ST-linkki on myös kytketty kortin ohjelmointiin.
Virtanastat Vss ja Vcc on kytketty STM8S-kortin 5 V: n napaan. Huomaa, että LCD: n käyttöjännite on 5 V ja se on kytketty toimimaan 3,3 V: lla. Joten vaikka STM8S103F3P6-mikrokontrolleri toimii 3,3 V: lla, on 5 V: n syöttö nestekidenäytölle pakollinen, voit välttää tämän käyttämällä latausohjaimen IC: tä, mutta emme keskustele siitä tässä opetusohjelmassa.
Seuraavaksi meillä on kontrastitappi, jota käytetään nestekidenäytön kontrastin asettamiseen, olemme liittäneet sen potentiometriin, jotta voimme hallita kontrastia. Olemme käyttäneet 10k pottia, mutta voit käyttää myös muita lähellä olevia arvoja, potti toimii potentiaalijakajana antamaan 0-5 V kontrastitapille, tyypillisesti voit käyttää myös vastusta suoraan antamaan noin 2,2 V kohtuulliselle kontrastille arvo. Sitten meillä on nollaus (RS), luku / kirjoitus (RW) ja käytössä (E) nastat. Luku- ja kirjoitusnasta on maadoitettu, koska emme lue mitään nestekidenäytöltä, teemme vain kirjoitusoperaatioita. Kaksi muuta ohjaustapia Rs ja E on kytketty vastaavasti PA1- ja PA2-nastoihin.
Sitten meillä on datanastat DB0 - DB7. 16x2 nestekidenäyttö voi toimia kahdessa tilassa, yksi on 8-bittinen toimintatila, jossa meidän on käytettävä kaikkia nestekidenäytön kaikkia 8 datanastaa (DB0-DB7), ja toinen on 4-bittinen toimintatila, jossa tarvitsemme vain 4 datanastat (DB4-DB7). 4-bittistä tilaa käytetään yleisesti, koska se vaatii vähemmän GPIO-nastoja ohjaimelta, joten olemme myös käyttäneet 4-bittistä tilaa tässä opetusohjelmassa ja olemme liittäneet vain nastat DB4, DB5, DB6 ja DB7 nastoihin PD1, PD2, PD3 ja PD4.
Kahta viimeistä nastaa BLA ja BLK käytetään sisäisen taustavalon LED: n virran saamiseen, olemme käyttäneet 560 ohmin vastusta virranrajoittimena. ST-Link-ohjelmoija on kytketty kuten aina edellisessä opetusohjelmassa. Tein täydellisen yhteyden leipälautaan ja kokoonpanoni näyttää tältä alla olevassa kuvassa.
STM8 LCD-kirjasto - Otsikkotiedosto mallille STM8S103F3P6
Ennen kuin jatkamme piirikaaviossa, haetaan STM8 LCD-otsikkotiedosto GitHubilta seuraavan linkin avulla-
STM8S 16x2 LCD -otsikkotiedosto
Voit joko ladata koko repon ja saada stm8s103_LCD_16x2.h -tiedoston tai yksinkertaistaa koodin yllä olevasta linkistä. Kun asetat projektia, varmista, että olet sisällyttänyt kaikki vaaditut otsikkotiedostot inc-hakemistoon tämän otsikkotiedoston kanssa.
Jos et ole varma kuinka lisätä otsikkotiedostot ja kääntää ohjelma, seuraa tämän sivun alaosassa olevaa videota. Ja jos olet utelias siitä, miten otsikkotiedoston sisällä oleva koodi toimii, voit tarkistaa PIC: n LCD-opetusohjelmalla. Tässä projektissa käytetty otsikkotiedosto on hyvin samankaltainen kuin siellä selitetty, joten emme käsittele sitä.
LCD-ohjelma STM8S-mikrokontrollerille
Esittelyä varten ohjelmoimme STM8S-ohjaimemme näyttämään yksinkertaisen merkkijonon, kuten “Circuit Digest”, ja sitten kasvatamme “Test” -arvoa jokaista sekuntia kohden toisella rivillä. Koko ohjelma löytyy tämän sivun alaosasta. Selitys on seuraava.
Aloitamme ohjelmamme määrittelemällä nastat ja lisäämällä vaaditut otsikkotiedostot kuten aina. Edellä mainitussa piirikaaviossa olemme liittäneet LCD_RS : n PA1: een, joten olemme määrittäneet sen LCD_RS GPIOA: ksi, GPIO_PIN_1. Samoin olemme tehneet saman myös muille nastoille. Jos he seuraavat eri virtapiiriä, varmista, että muutat näitä arvoja vastaavasti.
#define LCD_RS GPIOA, GPIO_PIN_1 #define LCD_EN GPIOA, GPIO_PIN_2 #define LCD_DB4 GPIOD, GPIO_PIN_1 #define LCD_DB5 GPIOD, GPIO_PIN_2 #define LCD_DB6 GPIOD "GPI_HIN_BIN_ GP4_7_Lasit # GPIO_PIN_3 # määritä LCINE
Seuraavaksi pääohjelmassamme olemme ilmoittaneet muuttujat, joita tarvitaan tähän näytekoodiin. Meillä on testimuuttuja nimeltä test_var, joka alustetaan nollaan, kasvatamme muuttujaa ja näytämme sen nestekidenäytössä. Merkit d1 - d4 edustavat testimuuttujan 4 numeroa, koska nestekidenäytömme ei pysty näyttämään int-arvoa suoraan, vaan ne on muunnettava merkkeiksi.
// Muuttujan ilmoitukset int test_var = 0; char d4, d3, d2, d1;
LCD_Begin () funktiota käytetään alustaa LCD. Tämä toiminto alustaa kaikki vaaditut GPIO-nastat ja asettaa LCD-näytön 16x2 LCD-tilaan. Sitten meillä on LCD_Clear () -toiminto, jota käytetään kaikkien nestekidenäytön arvojen tyhjentämiseen, tämä pyyhkii kaiken LCD- näytöltä niin, että uusien arvojen kirjoittaminen on puhdasta. Sitten meillä on LCD_Set_Cursor (x, y) -toiminto, jossa x ja y ovat paikkoja, joihin meidän on kirjoitettava uusi merkki. Esimerkiksi (1,1) tarkoittaa ensimmäistä riviä ja ensimmäistä saraketta, samalla tavoin (2,12) tarkoittaa myös toisen rivin 12 saraketta. Huomaa, että meillä on täällä 2 riviä ja 16 saraketta, kuten keskustelimme aiemmin.
Lcd_Begin (); Lcd_Clear (); Lcd_Set_Cursor (1,1);
Nyt nestekidenäyttö on asetettu, tyhjennetty ja kohdistin on paikassa. Seuraava asia on tulostaa jotain ruudulle. Voimme käyttää merkkijonoa LCD_Print_String (“Sample String”) nestekidenäyttöön ja LCD_Print_Char (a) merkin arvon tulostamiseen nestekidenäyttöön. Tässä ohjelmassa olemme tulostaneet ”STM8S103F3P3 LCD” ja luoneet viiden sekunnin viiveen alla olevan koodin avulla.
Lcd_Print_String ("STM8S103F3P3 LCD"); viive_ms (5000);
Viiden sekunnin viiveen jälkeen tyhjennämme nestekidenäytön uudelleen ja ensimmäisessä rivissä näkyy ”Circuit Digest” ja toisella rivillä “Test:” I.
Lcd_Clear (); Lcd_Set_Cursor (1,1); Lcd_Print_String ("Piirin yhteenveto"); Lcd_Set_Cursor (2,1); Lcd_Print_String ("Testi:");
Sisällä , kun taas silmukka, me jakaa arvo kokonaisluku muuttuja test_var yksittäisiä merkkejä niin, että se voidaan näyttää LCD käyttäen yksinkertaisia jako ja moduuli operaattoreille. Olemme myös lisänneet '0' muuntaa ASCII-arvon merkiksi.
d4 = testi_var% 10 + '0'; d3 = (test_var / 10)% 10 + '0'; d2 = (test_var / 100)% 10 + '0'; d1 = (test_var / 1000) + '0';
Sitten olemme asettaneet kohdistimen arvoon (2,6), koska olemme jo kirjoittaneet "Test:" toiseen riviin, joka on 6 merkkiä. Jos korvataan, nykyinen merkki korvataan uudella merkillä LCD-näytössä. Olemme myös lisänneet viiveen 1 sekunnin ja lisäämällä muuttujaa.
Lcd_Set_Cursor (2,6); Lcd_Tulosta_Char (d1); Lcd_Tulosta_Char (d2); Lcd_Tulosta_Char (d3); Lcd_Tulosta_Char (d4); viive_ms (1000); test_var ++;
STM8 LCD-näytöllä - toimii
Testaa ohjelmamme lataamalla koodi ohjaimeemme ja käynnistämällä se mikro-USB-portilla. Huomaa, että LCD-näyttö vaatii toimiakseen 5 V: n, joten piirilevy on pakollista virrata USB-portista. Olemme aiemmin käyttäneet sitä suoraan ST-linkistä, koska emme tarvinneet 5 V: n virtalähdettä.
Kuten näette, nestekidenäyttö toimii odotetusti testimuuttujan arvon kasvaessa noin sekunnin ajan. Huomaa myös, että emme ole käyttäneet ajastimia ja olemme käyttäneet vain viivetoimintoa tämän viiveen luomiseen, joten älä odota viiveen kestoa tarkkana, käytämme ajastimia myöhemmin toisessa opetusohjelmassa tähän tarkoitukseen.
Projektin täydellinen toiminta löytyy alla olevasta videosta. Toivottavasti pidit opetusohjelmasta ja opit jotain hyödyllistä. Jos sinulla on kysyttävää, jätä ne kommenttiosioon tai käytä foorumeitamme muihin teknisiin kysymyksiin.