- Mga Materyal na Kinakailangan
- Circuit Diagram at Koneksyon
- Programming STM32 para sa LCD gamit ang Arduino
- Pag-upload ng Programa sa STM32F103C8T6
Para sa anumang proyekto ng microcontroller, ang pag-interfaced ng isang unit ng pagpapakita dito ay ginagawang mas madali ang proyekto at nakakaakit para makipag-ugnay ang gumagamit. Ang pinaka-karaniwang ginagamit na yunit sa pagpapakita para sa mga microcontroller ay ang mga pagpapakita ng numerong 16 × 2 Alpha. Ang mga uri ng pagpapakita ay hindi lamang kapaki-pakinabang upang maipakita ang mahahalagang impormasyon sa gumagamit ngunit maaari ring kumilos bilang isang tool ng pag-debug sa panahon ng paunang yugto ng pag-unlad ng proyekto. Kaya, sa tutorial na ito matututunan natin kung paano namin mai- interface ang isang 16 × 2 LCD display sa STM32F103C8T6 STM32 Development board at i-program ito gamit ang Arduino IDE. Para sa mga taong pamilyar sa Arduino ang tutorial na ito ay magiging isang lakad lamang sa cake dahil pareho silang magkatulad. Upang malaman din ang tungkol sa STM32 Blue Pill Board sundin ang aming pagsisimula ng tutorial.
Mga Materyal na Kinakailangan
- STM32 Blue Pill Development Board
- 16 × 2 LCD display
- FTDI Programmer
- Mga Koneksyon sa Mga Wires
- LCD
Maikling Intro sa 16 × 2 Dot matrix LCD display
Tulad ng sinabi nang mas maaga sa Energia IDE ay nagbibigay ng isang magandang silid-aklatan na gumagawa ng interfacing isang piraso ng cake at samakatuwid hindi sapilitan na malaman ang anuman tungkol sa display module. Ngunit, hindi ba naging kagiliw-giliw na ipakita kung ano ang ginagamit namin !!
Ang pangalan na 16 × 2 ay nagpapahiwatig na ang display ay may 16 Columns at 2 Rows, na magkakasama (16 * 2) ay bumubuo ng 32 mga kahon. Ang isang solong kahon ay magmukhang ganito sa larawan sa ibaba
Ang isang solong kahon ay mayroong 40 mga pixel (tuldok) na may isang pagkakasunud-sunod ng matrix ng 5 Mga hilera at 8 mga haligi, ang 40 na mga pixel na magkasama ay bumubuo ng isang character. Katulad nito, maaaring ipakita ang 32 character gamit ang lahat ng mga kahon. Hinahayaan ka ngayong tingnan ang mga pinout.
Ang LCD ay may kabuuang 16 na Pin, tulad ng ipinakita sa itaas, maaari silang ikinategorya sa apat na pangkat tulad ng mga sumusunod
Mga Pin ng Pinagmulan (1, 2 at 3): Ang mga pin na ito ay pinagmumulan ng lakas at antas ng kaibahan para sa display
Mga Control Pins (4, 5 at 6): Itinatakda / kinokontrol ng mga pin na ito ang mga rehistro sa LCD interfacing IC (higit pa ay matatagpuan ito sa link sa ibaba)
Data / Command Pins (7 hanggang 14): Ang mga pin na ito ay nagbibigay ng data ng kung anong impormasyon ang dapat ipakita sa LCD.
Mga LED pin (15 at 16): Ang mga pin na ito ay ginagamit upang magaan ang backlight ng LCD kung kinakailangan (opsyonal).
Sa lahat ng 16 na pin na ito, 10 pin lamang ang dapat gamitin mandatory para sa wastong pagtatrabaho ng LCD kung nais mong malaman ang higit pa tungkol sa LCD display jump na ito sa artikulong 16x2 LCD na ito.
Circuit Diagram at Koneksyon
Ang circuit diagram sa interface 16 * 2 Dot matrix LCD na may STM32F103C8T6 STM32 Blue Pill board ay ipinapakita sa ibaba. Ginagawa ito gamit ang Fritzing Software.
Tulad ng nakikita mo ang kumpletong koneksyon ay ginawa sa isang breadboard. Kailangan namin ng isang board ng FTDI upang mai-program ang STM32 Microcontroller. Kaya katulad ng aming nakaraang tutorial, na-wire namin ang board ng FTDI sa STM32, ang Vcc at ground pin ng programmer ng FDTI ay konektado sa 5V pin at ground pin ng STM32 ayon sa pagkakabanggit. Ginagamit ito upang mapalakas ang board ng STM32 at ang LCD dahil ang parehong maaaring tanggapin ang maaaring + 5V. Ang Rx at Tx pin ng FTDI board ay konektado sa A9 at A10 pin ng STM32 upang maaari naming mai-program ang board nang direkta nang walang boot loader.
Susunod na ang LCD ay dapat na konektado sa board ng STM32. Gagamitin namin ang LCD sa 4-bit mode, kaya kailangan naming ikonekta ang 4 data bit pin (DB4 sa DB7) at ang dalawang control pin (RS at EN) sa board ng STM32 tulad ng ipinakita sa STM32F103C8T6 LCD interfacing circuit diagram sa itaas. Dagdag dito ang talahanayan sa ibaba ay makakatulong sa iyo sa paggawa ng koneksyon.
LCD Pin No. |
Pangalan ng LCD Pin |
Pangalan ng STM32 Pin |
1 |
Lupa (Gnd) |
Lupa (G) |
2 |
VCC |
5V |
3 |
VEE |
Lupa (G) |
4 |
Pagpili ng Rehistro (RS) |
PB11 |
5 |
Basahin / Isulat (RW) |
Lupa (G) |
6 |
Paganahin (EN) |
PB10 |
7 |
Data Bit 0 (DB0) |
Walang Koneksyon (NC) |
8 |
Data Bit 1 (DB1) |
Walang Koneksyon (NC) |
9 |
Data Bit 2 (DB2) |
Walang Koneksyon (NC) |
10 |
Data Bit 3 (DB3) |
Walang Koneksyon (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Data Bit 5 (DB5) |
PB1 |
13 |
Data Bit 6 (DB6) |
PC13 |
14 |
Data Bit 7 (DB7) |
PC14 |
15 |
Positive na LED |
5V |
16 |
Negatibo sa LED |
Lupa (G) |
Kapag natapos na ang mga koneksyon maaari naming buksan ang Arduino IDE at simulang i-program ito.
Programming STM32 para sa LCD gamit ang Arduino
Tulad ng sinabi sa tutorial na ito, gagamitin namin ang Arduino IDE upang i-program ang aming STM32 Microcontroller. Ngunit, ang Arduino IDE bilang default ay hindi mai-install ang board ng STM32, kaya kailangan naming mag-download ng isang pakete at ihanda ang Arduino IDE para sa pareho. Ito mismo ang ginawa namin sa aming nakaraang tutorial na nagsisimula sa STM32F103C8T6 gamit ang Arduino IDE. Kaya kung hindi mo na-install ang kinakailangang mga pakete bumalik sa tutorial na ito at sundin ito bago ka magpatuloy dito.
Kapag na-install na ang STM32 Board sa Arduino IDE, maaari na tayong magsimulang mag-program. Ang programa ay halos kapareho ng sa isang Arduino board, ang tanging bagay na magbabago ay ang mga pangalan ng pin dahil magkakaiba ang mga notasyon para sa STM32 at Arduino. Ang kumpletong programa ay ibinibigay sa pagtatapos ng pahinang ito, ngunit upang ipaliwanag ang programa ay hinati ko ito sa maliliit na makahulugang mga snippet tulad ng ipinakita sa ibaba.
Ang isang kapansin-pansin na bentahe ng paggamit ng Arduino para sa pagprogram ng aming mga microcontroller ay ang Arduino ay may mga handa na silid-aklatan para sa halos bawat sikat na sensor at actuator. Kaya't sinimulan namin ang aming programa sa pamamagitan ng pagsasama ng LCD library na ginagawang mas madali ang programa.
# isama
Sa susunod na linya kailangan naming tukuyin kung aling mga GPIO pin ng STM32 ay naikonekta namin ang LCD display control at mga linya ng data. Upang magawa ito kailangan nating suriin ang aming hardware, para sa kadalian maaari ka ring mag-refer sa talahanayan na ibinigay sa itaas na naglilista ng mga pangalan ng pin ng LCD laban sa GPIO pin ng STM32. Matapos banggitin ang mga pin maaari naming ipasimula ang LCD gamit ang likidong LiquidCrystal . Pinangalanan din namin ang aming LCD bilang " lcd " tulad ng ipinakita sa ibaba.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // banggitin ang mga pangalan ng pin na may LCD ay konektado sa LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Initialize the LCD
Susunod na hakbang namin sa loob ng pag- andar ng pag- setup . Dito muna nabanggit namin kung anong uri ng LCD ang ginagamit namin. Dahil ito ay isang 16 * 2 LCD ginagamit namin ang linya lcd.begin (16,2). Ang code sa loob ng walang bisa na pag- andar ng pag- set up ay naisasagawa nang isang beses lamang. Kaya ginagamit namin ito upang ipakita ang isang teksto ng intro na makikita sa screen nang 2 segundo at pagkatapos ay malinis. Upang banggitin ang posisyon kung saan dapat lumitaw ang teksto ginagamit namin ang function lcd.setcursor at upang mai -print ang teksto ginagamit namin ang lcd.print function. Halimbawa lcd.setCursor (0,0) ay magtatakda ng cursor sa unang hilera at unang haligi kung saan i-print namin ang " Interfacing LCD " at ang function lcd.setCursor (0,1) ilipat ang cursor sa pangalawang hilera unang haligi kung saan i-print namin ang linya na " CircuitDigest ".
void setup () {lcd.begin (16, 2); // Gumagamit kami ng 16 * 2 LCD lcd.setCursor (0, 0); // Sa unang hilera unang haligi lcd.print ("Interfacing LCD"); // Print this lcd.setCursor (0, 1); // Sa secound row first column lcd.print ("- CircuitDigest"); // I-print ang pagkaantala na ito (2000); // wait for two secounds lcd.clear (); // I-clear ang screen}
Matapos ipakita ang teksto ng intro hawak namin ang programa sa loob ng 2 segundo sa pamamagitan ng paglikha ng isang pagkaantala upang mabasa ng gumagamit ang intro message. Ang pagkaantala na ito ay nilikha ng pagkaantala ng linya (2000) kung saan ang 2000 ay ang halaga ng pagkaantala sa mga segundo ng mill. Matapos ang pagkaantala ay nilinaw namin ang LCD gamit ang lcd.clear () na pagpapaandar na nililimas ang LCD sa pamamagitan ng pag-alis ng lahat ng teksto sa LCD.
Sa wakas sa loob ng void loop, ipinapakita namin ang "STM32 –Blue Pill" sa unang linya at ang halaga ng mga segundo sa pangalawang linya. Ang halaga ng pangalawa ay maaaring makuha mula sa pagpapaandar ng millis () . Ang millis () ay isang timer na nakakakuha ng karagdagan mula sa oras na pinapagana ang MCU. Ang halaga ay nasa anyo ng milli segundo kaya hinati natin ito sa pamamagitan ng 1000 bago ipakita ito sa aming LCD.
void loop () { lcd.setCursor (0, 0); // Sa unang hilera unang haligi lcd.print ("STM32 -Blue Pill"); // Print this lcd.setCursor (0, 1); // Sa ligaw na hilera unang haligi lcd.print (millis () / 1000); // I-print ang halaga ng mga secound }
Pag-upload ng Programa sa STM32F103C8T6
Tulad ng tinalakay sa talata sa itaas dapat mong mapansin ang output sa sandaling nai-upload ang code. Ngunit ang program na ito ay hindi gagana sa susunod kapag pinapagana mo ang board, dahil ang board ay nasa mode ng programa pa rin. Kaya't sa sandaling na-upload ang programa ang lumulukso sa boot 0 ay dapat palitan pabalik sa 0 na posisyon tulad ng ipinakita sa ibaba. Ngayon din dahil na-upload ang programa sa board ng STM32 hindi na namin kailangan ang FTDI board at ang buong pag-set up ay maaaring pinalakas ng micro-USB port ng STM32 board pati na rin ang ipinakita sa ibaba.
Ito ay isang simpleng proyekto lamang sa pag-interfacing upang makatulong na magamit ang LCD display sa STM32 board, ngunit sa karagdagang maaari mo itong magamit upang makabuo ng mga cool na proyekto. Inaasahan kong naintindihan mo ang tutorial at natutunan ang isang bagay na kapaki-pakinabang mula rito. Kung naharap mo ang anumang problema sa pagpapaandar nito, mangyaring gamitin ang seksyon ng komento upang ma-post ang problema o gamitin ang mga forum para sa iba pang mga teknikal na katanungan. Ang kumpletong pagtatrabaho ng LCD display na may STM32 ay maaari ding matagpuan bilang isang video na ibinigay sa ibaba.