- 16x2 LCD ekrano veikimas
- Sąsajos skystųjų kristalų schema su STM8 mikrovaldikliu
- STM8 LCD biblioteka - antraštės failas, skirtas STM8S103F3P6
- LCD programa STM8S mikrovaldikliui
- STM8 su LCD - veikia
Tarp mėgėjų ir entuziastų dažniausiai naudojamas 16x2 raidinis skaitmeninis LCD ekranas. Ekranas yra labai naudingas, kai norite pateikti pagrindinę informaciją vartotojui, taip pat gali padėti išbandyti ar derinti mūsų kodą. Šis konkretus 16x2 LCD modulis yra lengvai prieinamas ir buvo populiarus ilgą laiką. Daugiau apie 16x2 LCD modulio pagrindus galite sužinoti susietame straipsnyje.
Norėdami tęsti savo STM8 mikrovaldiklių vadovėlių serijas, šioje pamokoje sužinosime, kaip susieti LCD su STM8 mikrovaldikliu. Anksčiau jau susiejome 16x2 skystųjų kristalų ekraną su daugeliu kitų mikrovaldiklių, pamokos yra išvardytos žemiau, ir jei norite, galite jas patikrinti.
Jei dar nesinaudojote STM8, patikrinkite, ar pradedate naudotis STM8 mikrovaldiklio straipsniu, kad suprastumėte valdiklio plokštės ir programavimo aplinkos pagrindus. Šioje pamokoje nenagrinėsime pagrindų.
16x2 LCD ekrano veikimas
Kaip rodo pavadinimas, 16x2 skystųjų kristalų ekranas turės 16 stulpelių ir 2 eiles. Taigi iš viso šiame ekrane galėsime rodyti 32 simbolius, kurie gali būti abėcėlės, skaičiai ar net simboliai. Žemiau parodytas paprastas 16x2 LCD ekranas, kurį naudojame šioje mokymo programoje-
Kaip matote, ekrane yra 16 kontaktų ir mes galime jį padalyti į penkias kategorijas: maitinimo kaiščiai, kontrasto kaiščiai, valdymo kaiščiai, duomenų kaiščiai ir apšvietimo kaiščiai, kaip parodyta toliau pateiktoje lentelėje. Mes aptarsime kiekvieno kaiščio detales, kai aptarsime šios pamokos grandinės schemą.
Kategorija | PIN Nr. | PIN vardas | Funkcija |
Maitinimo kaiščiai | 1 | VSS | Įžeminimo kaištis, prijungtas prie žemės |
2 | VDD arba Vcc | Įtampos kaištis + 5V | |
Kontrasto kaištis | 3 | V0 arba VEE | Kontrasto nustatymas, prijungtas prie Vcc per kintamą rezistorių. |
Valdymo kaiščiai | 4 | RS | Registracija Pasirinkite PIN kodą, RS = 0 komandų režimas, RS = 1 duomenų režimas |
5 | RW | Skaitymo / rašymo kaištis, RW = 0 rašymo režimas, RW = 1 skaitymo režimas | |
6 | E | Įgalinti, nuo didelio iki mažo pulso reikia įjungti skystųjų kristalų ekraną | |
Duomenų kaiščiai | 7–14 | D0-D7 | Duomenų kaiščiai, saugo duomenis, kurie turi būti rodomi LCD ekrane, arba komandų instrukcijas |
Apšvietimo kaiščiai | 15 | LED + arba A | Norėdami maitinti apšvietimą + 5V |
16 | LED arba K | Apšvietimo žemė |
LCD ekrano gale, kaip parodyta paveikslėlyje žemiau, rasite du juodus taškus, kurių viduje turime HD44780 skystųjų kristalų tvarkyklės IC (apjuostą raudona spalva). Mūsų mikrovaldiklis turėtų bendrauti su šiuo IC, kuris savo ruožtu valdys tai, kas rodoma LCD. Jei norite sužinoti, kaip tiksliai visa tai veikia, turėtumėte patikrinti 16x2 LCD ekrano veikimą, kur mes jau išsamiai aptarėme, kaip veikia LCD.
Šioje pamokoje aptarsime grandinės schemą ir kodą, kad 16x2 LCD ekrane būtų rodomi raidiniai simboliai (abėcėlės ir skaičiai), naudojant paprastas komandas LCD_print _char ir LCD_print_string . Šios komandos gali būti tiesiogiai naudojamos programoje, įtraukus mūsų antraštės failą. Antraštės failas apima daugumą jums skirtų dalykų, todėl nebūtina žinoti, kaip veikia ekranas arba HD44780 tvarkyklės IC.
Sąsajos skystųjų kristalų schema su STM8 mikrovaldikliu
Visą STM8 skystųjų kristalų grandinę galite rasti žemiau esančiame paveikslėlyje. Kaip matote , „STM8S103F3P6“ valdiklio su LCD jungtis yra labai paprasta, mes turime LCD ekraną tiesiogiai prijungtą prie mūsų plokštės, o „ST-link“ taip pat yra prijungtas prie plokštės programavimo.
Maitinimo kaiščiai Vss ir Vcc yra prijungti prie 5 V kaiščio STM8S plokštėje, atkreipkite dėmesį, kad LCD darbinė įtampa yra 5 V ir yra prijungta veikti 3,3 V įtampa. Taigi, nors STM8S103F3P6 mikrovaldiklis veikia su 3,3 V įtampa, norint turėti 5 V maitinimą LCD, privalote to išvengti, naudodamiesi įkrovimo valdiklio IC, to negalėsite aptarti šioje pamokoje.
Tada mes turime kontrasto kaištį, kuris naudojamas LCD kontrastui nustatyti, prijungėme jį prie potenciometro, kad galėtume valdyti kontrastą. Mes naudojome 10 tūkst. Puodą, tačiau jūs taip pat galite naudoti kitas netoliese esančias vertes. Puodas veikia kaip potencialus daliklis, užtikrinantis 0–5 V įtampą kontrasto kaiščiui. Paprastai jūs taip pat galite tiesiogiai naudoti rezistorių, kad gautumėte maždaug 2,2 V pagrįstam kontrastui vertė. Tada mes turime atstatymo (RS), skaitymo / rašymo (RW) ir įgalinimo (E) kaiščius. Skaitymo ir rašymo kaištis yra įžemintas, nes nieko neskaitysime iš LCD, atliksime tik rašymo operacijas. Kiti du valdymo kaiščiai Rs ir E yra atitinkamai sujungti su PA1 ir PA2 kaiščiais.
Tada mes turime duomenų kaiščius DB0 - DB7. 16x2 skystųjų kristalų ekranas gali veikti dviem režimais: vienas yra 8 bitų darbo režimas, kuriame turime naudoti visus 8 duomenų smeigtukus (DB0-DB7) LCD ekrane, o kitas yra 4 bitų veikimo režimas, kai mums reikia tik 4 duomenų smeigtukai (DB4-DB7). Paprastai naudojamas 4 bitų režimas, nes tam reikia mažiau GPIO smeigtukų iš valdiklio, todėl šioje pamokoje taip pat naudojome 4 bitų režimą ir prie PD1, PD2, PD3 smeigtukų prijungėme tik DB4, DB5, DB6 ir DB7 kaiščius. ir PD4.
Paskutiniai du kaiščiai BLA ir BLK naudojami vidiniam apšvietimo šviesos diodui maitinti, mes naudojome 560 omų rezistorių kaip srovės ribotuvą. „ST-Link“ programuotojas yra prijungtas kaip visada, kaip ir ankstesnėje mūsų pamokoje. Aš sukūriau visą ryšį ant duonos lentos ir mano sąranga atrodo taip, kaip parodyta paveikslėlyje žemiau.
STM8 LCD biblioteka - antraštės failas, skirtas STM8S103F3P6
Prieš tęsdami grandinės schemą, gaukite STM8 LCD antraštės failą iš „GitHub“ naudodami šią nuorodą-
STM8S 16x2 LCD antraštės failas
Galite atsisiųsti visą atpirkimo priemonę ir gauti failą stm8s103_LCD_16x2.h, arba paprasčiausiai užpildykite kodą iš pirmiau pateiktos nuorodos. Nustatydami projektą, būtinai įtraukite visus reikiamus antraštės failus į inc katalogą kartu su šiuo antraštės failu.
Jei nesate tikri, kaip pridėti antraštės failus ir sudaryti programą, sekite vaizdo įrašą šio puslapio apačioje. Ir jei jums įdomu, kaip veikia antraštės failo kodas, galite patikrinti PIC su LCD pamoka. Šiame projekte naudojamas antraštės failas yra labai panašus į tą, kuris paaiškintas ten, todėl į tai nesileisime.
LCD programa STM8S mikrovaldikliui
Norėdami parodyti, mes užprogramuosime savo STM8S valdiklį rodyti paprastą eilutę, pvz., „Circuit Digest“, tada mes padidinsime „Test“ reikšmę kiekvienai sekundei antroje eilutėje. Visą programą rasite šio puslapio apačioje. Paaiškinimas yra toks.
Mes pradedame savo programą apibrėždami kaiščius ir kaip visada pridėdami reikalingus antraštės failus. Aukščiau aptartoje grandinės schemoje mes sujungėme LCD_RS su PA1, taigi mes jį apibrėžėme kaip LCD_RS GPIOA, GPIO_PIN_1. Panašiai pasielgėme ir su kitais kaiščiais. Jei jie seka kita grandine, būtinai pakeiskite šias vertes.
#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 "GPIO_ GPIN_BIN_ GP4_BIN_ GP_4_DIN_DIN_DIN_DIN_DIN_PAKEITI #Galiuoju
Toliau mūsų pagrindinėje programoje mes paskelbėme kintamuosius, reikalingus šiam pavyzdiniam kodui. Mes turime bandomąjį kintamąjį, vadinamą test_var, kuris inicijuojamas iki nulio, mes padidinsime kintamąjį ir parodysime jį LCD. Simboliai nuo d1 iki d4 žymi 4 bandomojo kintamojo skaitmenis, nes mūsų skystųjų kristalų ekranas negali tiesiogiai parodyti int vertės, juos turime paversti simboliais.
// Kintamosios deklaracijos int test_var = 0; char d4, d3, d2, d1;
LCD_Begin () funkcija naudojama inicijuoti LCD. Ši funkcija inicijuos visus reikalingus GPIO kaiščius ir taip pat nustatys LCD ekraną 16x2 LCD režimu. Tada mes turime funkciją LCD_Clear (), kuri naudojama norint išvalyti visas LCD vertes. Tai ištrins viską iš LCD, kad būtų švaru rašyti naujas reikšmes. Tada turime funkciją LCD_Set_Cursor (x, y), kur x ir y yra pozicijos, kuriose turime parašyti savo naują simbolį. Pavyzdžiui, (1,1) reiškia pirmąją eilutę ir pirmąjį stulpelį, panašiai (2,12) reiškia ir antrosios 12 eilutės stulpelį. Atkreipkite dėmesį, kad čia mes turime 2 eilutes ir 16 stulpelių, kaip jau aptarėme anksčiau.
Lcd_Begin (); Lcd_Clear (); „Lcd_Set_Cursor“ (1,1);
Dabar LCD ekranas nustatytas, išvalytas ir žymeklis yra toje vietoje. Kitas dalykas yra atsispausdinti ką nors ekrane. Mes galime naudoti „ LCD_Print_String“ („Stygos pavyzdys“), norėdami spausdinti eilutę į LCD ir „ LCD_Print_Char“ (a), norėdami atspausdinti simbolių vertę į LCD. Savo programoje čia išspausdinome „STM8S103F3P3 LCD“ ir sukūrėme 5 sekundžių vėlavimą naudodami žemiau pateiktą kodą.
„Lcd_Print_String“ („STM8S103F3P3 LCD“); delsos_ms (5000);
Po 5 sekundžių vėlavimo vėl išvalome skystųjų kristalų ekraną ir pirmoje eilutėje rodome „Circuit Digest“, o antroje eilutėje - „Test:“ I.
Lcd_Clear (); „Lcd_Set_Cursor“ (1,1); „Lcd_Print_String“ („Grandinės santrauka“); „Lcd_Set_Cursor“ (2,1); „Lcd_Print_String“ („Testas“);
Viduje Nors kilpa, mes padalinti vertę kintamąjį test_var į atskirus simbolius taip, kad jis gali būti rodomas LCD ekrane, naudojant paprastus skyrius ir modulio operatorius. Mes taip pat pridėjome „0“, kad paverstume ASCII vertę į simbolį.
d4 = test_var% 10 + '0'; d3 = (test_var / 10)% 10 + '0'; d2 = (test_var / 100)% 10 + '0'; d1 = (bandymo_var / 1000) + '0';
Tada mes nustatėme žymeklį į (2,6), nes mes jau parašėme „Test:“ antroje eilutėje, kuri yra 6 simboliai. Jei perrašysime, esamas simbolis bus pakeistas nauju simboliu LCD ekrane. Mes taip pat pridėjome vėlavimą 1 sekundę ir padidiname kintamąjį.
„Lcd_Set_Cursor“ (2,6); Lcd_Print_Char (d1); Lcd_Print_Char (d2); Lcd_Print_Char (d3); Lcd_Print_Char (d4); delsos_ms (1000); test_var ++;
STM8 su LCD - veikia
Norėdami išbandyti mūsų programą, paprasčiausiai įkelkite kodą į valdiklį ir įjunkite jį naudodami „micro-USB“ prievadą. Atkreipkite dėmesį, kad skystųjų kristalų ekranui dirbti reikia 5 V įtampos, todėl plokštę maitinti privaloma iš USB prievado. Anksčiau jį maitinome tiesiai iš „ST-link“, nes mums nereikėjo 5 V maitinimo šaltinio.
Kaip matote, skystųjų kristalų ekranas veikia taip, kaip tikėtasi, o testo kintamojo vertė maždaug kas sekundę didėja. Taip pat atkreipkite dėmesį, kad mes nenaudojome laikmačių ir naudojome tik uždelsimo funkciją, kad sukurtume šį uždelsimą, todėl nesitikėkite, kad vėlavimo trukmė bus tiksli, mes vėliau naudosime laikmačius kitoje tam skirtoje mokymo programoje.
Išsamų projekto darbą galite rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad jums patiko pamoka ir sužinojote ką nors naudingo. Jei turite klausimų, palikite juos komentarų skiltyje arba naudokitės mūsų forumais kitoms techninėms užklausoms.