- Bahan yang Diperlukan
- Diagram dan Sambungan Litar
- Pengaturcaraan STM32 untuk LCD menggunakan Arduino
- Memuat naik Program ke STM32F103C8T6
Untuk sebarang projek mikrokontroler, menghubungkan unit paparan dengannya akan menjadikan projek ini lebih mudah dan menarik bagi pengguna untuk berinteraksi. Unit paparan yang paling biasa digunakan untuk mikrokontroler ialah paparan angka 16 × 2 Alpha. Jenis paparan ini tidak hanya berguna untuk menampilkan maklumat penting kepada pengguna tetapi juga dapat berfungsi sebagai alat debugging selama tahap pengembangan awal proyek. Jadi, dalam tutorial ini kita akan belajar bagaimana kita dapat menghubungkan paparan LCD 16 × 2 dengan papan Pembangunan STM32F103C8T6 STM32 dan memprogramkannya menggunakan Arduino IDE. Bagi orang yang biasa dengan Arduino, tutorial ini hanya akan berjalan kaki kerana kedua-duanya sangat serupa. Juga untuk mengetahui lebih lanjut mengenai STM32 Blue Pill Board ikuti tutorial permulaan kami.
Bahan yang Diperlukan
- Lembaga Pembangunan Pil Biru STM32
- Paparan LCD 16 × 2
- Pengaturcara FTDI
- Wayar Penyambung
- LCD
Pengenalan Ringkas kepada paparan LCD matriks Dot 16 × 2
Seperti yang diberitahu sebelumnya, Energia IDE menyediakan perpustakaan yang indah yang menjadikan sepotong kek antara muka dan oleh itu tidak wajib mengetahui apa-apa mengenai modul paparan. Tetapi, bukankah menarik untuk menunjukkan apa yang kita gunakan !!
Nama 16 × 2 menunjukkan bahawa paparan mempunyai 16 Lajur dan 2 Baris, yang bersama-sama (16 * 2) membentuk 32 kotak. Satu kotak akan kelihatan seperti ini dalam gambar di bawah
Kotak tunggal mempunyai 40 piksel (titik) dengan susunan matriks 5 Baris dan 8 lajur, 40 piksel ini membentuk satu watak. Begitu juga, 32 watak boleh dipaparkan menggunakan semua kotak. Sekarang mari kita lihat pinout.
LCD mempunyai jumlah 16 Pin, seperti yang ditunjukkan di atas, mereka boleh dikategorikan kepada empat kumpulan seperti berikut
Pin Sumber (1, 2 dan 3): Pin ini menghasilkan tahap daya dan kontras untuk paparan
Pin kawalan (4, 5 dan 6): Pin ini menetapkan / mengawal register dalam IC antara muka LCD (lebih banyak ini boleh didapati di pautan di bawah)
Data / Pin Perintah (7 hingga 14): Pin ini memberikan data maklumat apa yang harus dipaparkan pada LCD.
Pin LED (15 dan 16): Pin ini digunakan untuk menyinari lampu latar LCD jika diperlukan (pilihan).
Daripada semua 16 pin ini, hanya 10 pin yang wajib digunakan untuk kerja LCD yang betul sekiranya anda ingin mengetahui lebih lanjut mengenai paparan LCD ini ke artikel LCD 16x2 ini.
Diagram dan Sambungan Litar
Gambarajah litar untuk antara muka 16 * 2 Dot matrix LCD dengan papan STM32F103C8T6 STM32 Blue Pill ditunjukkan di bawah. Ia dibuat menggunakan Perisian Fritzing.
Seperti yang anda lihat, sambungan lengkap dibuat di atas papan roti. Kita memerlukan papan FTDI untuk memprogram Mikrokontroler STM32. Sama seperti tutorial sebelumnya, kami telah memasang papan FTDI ke STM32, pin Vcc dan ground dari programmer FDTI masing-masing disambungkan ke pin 5V dan pin ground dari STM32. Ini digunakan untuk memberi kuasa pada papan STM32 dan LCD kerana kedua-duanya dapat menerima kaleng + 5V. Pin Rx dan Tx dari papan FTDI disambungkan ke pin A9 dan A10 dari STM32 sehingga kita dapat memprogram papan secara langsung tanpa boot loader.
Seterusnya LCD mesti disambungkan ke papan STM32. Kita akan menggunakan LCD dalam mod 4-bit, jadi kita harus menyambungkan 4 pin bit data (DB4 ke DB7) dan dua pin kawalan (RS dan EN) ke papan STM32 seperti yang ditunjukkan dalam litar penghubung LCD STM32F103C8T6 rajah di atas. Selanjutnya jadual di bawah akan membantu anda dalam membuat hubungan.
Pin LCD No. |
Nama Pin LCD |
Nama Pin STM32 |
1 |
Tanah (Gnd) |
Tanah (G) |
2 |
VCC |
5V |
3 |
VEE |
Tanah (G) |
4 |
Daftar Pilih (RS) |
PB11 |
5 |
Baca / Tulis (RW) |
Tanah (G) |
6 |
Aktifkan (EN) |
PB10 |
7 |
Bit Data 0 (DB0) |
Tiada Sambungan (NC) |
8 |
Bit Data 1 (DB1) |
Tiada Sambungan (NC) |
9 |
Bit Data 2 (DB2) |
Tiada Sambungan (NC) |
10 |
Bit Data 3 (DB3) |
Tiada Sambungan (NC) |
11 |
Bit Data 4 (DB4) |
PB0 |
12 |
Bit Data 5 (DB5) |
PB1 |
13 |
Bit Data 6 (DB6) |
PC13 |
14 |
Bit Data 7 (DB7) |
PC14 |
15 |
Positif LED |
5V |
16 |
Negatif LED |
Tanah (G) |
Setelah sambungan selesai, kita dapat membuka Arduino IDE dan mula memprogramkannya.
Pengaturcaraan STM32 untuk LCD menggunakan Arduino
Seperti yang diberitahu dalam tutorial ini, kita akan menggunakan Arduino IDE untuk memprogram Mikrokontroler STM32 kita. Tetapi, Arduino IDE secara lalai tidak akan memasang papan STM32, oleh itu kita harus memuat turun pakej dan menyiapkan Arduino IDE untuk yang sama. Ini betul-betul seperti yang kami lakukan dalam tutorial sebelumnya yang bermula dengan STM32F103C8T6 menggunakan Arduino IDE. Oleh itu, jika anda belum memasang pakej yang diperlukan, kembali ke tutorial ini dan ikuti sebelum anda meneruskannya di sini.
Setelah Papan STM32 dipasang di Arduino IDE, kita dapat memulakan pengaturcaraan. Program ini sangat mirip dengan papan Arduino, satu-satunya perkara yang akan berubah adalah nama pin kerana notasi berbeza untuk STM32 dan Arduino. Program yang lengkap diberikan di akhir halaman ini, tetapi untuk menerangkan program ini, saya telah membahagikannya kepada potongan kecil seperti yang ditunjukkan di bawah.
Satu kelebihan ketara menggunakan Arduino untuk memprogram mikrokontroler kami ialah Arduino mempunyai perpustakaan siap pakai untuk hampir setiap sensor dan penggerak terkenal. Jadi di sini kita mulakan program kita dengan memasukkan perpustakaan LCD yang menjadikan pengaturcaraan menjadi lebih mudah.
#sertakan
Pada baris seterusnya kita harus menentukan pin GPIO mana dari STM32 yang telah kita sambungkan kawalan paparan LCD dan garis data. Untuk melakukan ini, kami harus memeriksa perkakasan kami, untuk kemudahan anda juga boleh merujuk pada jadual yang diberikan di bahagian atas yang menyenaraikan nama pin LCD dengan pin GPIO STM32. Setelah menyebutkan pin, kita dapat menginisialisasi LCD menggunakan fungsi LiquidCrystal . Kami juga menamakan LCD kami sebagai " lcd " seperti gambar di bawah.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // sebutkan nama pin dengan LCD disambungkan ke LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Memulakan LCD
Selanjutnya kita melangkah ke dalam fungsi persediaan . Di sini pertama kita telah menyebut jenis LCD yang kita gunakan. Oleh kerana ia adalah LCD 16 * 2, kami menggunakan garis lcd.begin (16,2). Kod di dalam fungsi penyediaan void akan dilaksanakan sekali sahaja. Oleh itu, kami menggunakannya untuk memaparkan teks intro yang muncul di layar selama 2 saat dan kemudian dibersihkan. Untuk menyebut kedudukan di mana teks harus muncul, kami menggunakan fungsi lcd.setcursor dan untuk mencetak teks kami menggunakan fungsi lcd.print . Contohnya lcd.setCursor (0,0) akan menetapkan kursor pada baris pertama dan lajur pertama di mana kita mencetak " Interfacing LCD " dan fungsi lcd.setCursor (0,1) menggerakkan kursor ke lajur pertama baris kedua di mana kita mencetak baris " CircuitDigest ".
sia-sia persediaan () {lcd.begin (16, 2); // Kami menggunakan LCD lcd.setCursor 16 * 2 (0, 0); // Pada baris pertama lajur pertama lcd.print ("Interfacing LCD"); // Cetak lcd.setCursor ini (0, 1); // Pada baris kedua lajur pertama lcd.print ("- CircuitDigest"); // Cetak kelewatan ini (2000); // tunggu dua saat lcd.clear (); // Kosongkan skrin}
Setelah memaparkan teks intro kami menahan program selama 2 saat dengan membuat kelewatan sehingga pengguna dapat membaca pesan intro. Kelewatan ini diciptakan oleh penundaan garis (2000) di mana 2000 adalah nilai kelewatan dalam sekejap mil. Selepas kelewatan itu, kami mengosongkan LCD menggunakan fungsi lcd.clear () yang membersihkan LCD dengan membuang semua teks pada LCD.
Akhirnya di dalam gelung kekosongan, kami memaparkan “STM32 –Blue Pill” pada baris pertama dan nilai detik pada baris kedua. Nilai detik dapat diperoleh dari fungsi milis () . The millis () adalah pemasa yang bertambah dari masa MCU dihidupkan. Nilainya dalam bentuk mili saat sehingga kami membahagikannya dengan 1000 sebelum memaparkannya pada LCD kami.
gelung kosong () { lcd.setCursor (0, 0); // Pada baris pertama lajur pertama lcd.print ("STM32 -Blue Pill"); // Cetak lcd.setCursor ini (0, 1); // Pada baris kedua lajur pertama lcd.print (milis () / 1000); // Cetak nilai suara }
Memuat naik Program ke STM32F103C8T6
Seperti yang dibahas dalam perenggan di atas, Anda seharusnya dapat melihat hasilnya sebaik sahaja kod tersebut diunggah. Tetapi program ini tidak akan berfungsi pada masa berikutnya apabila anda menghidupkan papan, kerana papan masih dalam mod pengaturcaraan. Oleh itu, sebaik sahaja program dimuat, jumper pada boot 0 harus ditukar kembali ke 0 kedudukan seperti yang ditunjukkan di bawah. Juga sekarang kerana program ini dimuat naik ke papan STM32, kita tidak memerlukan papan FTDI dan keseluruhan penyediaan dapat dihidupkan oleh port mikro-USB papan STM32 seperti yang ditunjukkan di bawah.
Ini hanya projek penghubung sederhana untuk membantu menggunakan paparan LCD dengan papan STM32, tetapi anda boleh menggunakannya untuk membina projek yang menarik. Harap anda memahami tutorial dan mempelajari sesuatu yang berguna darinya. Sekiranya anda menghadapi masalah untuk membuatnya berfungsi, gunakan bahagian komen untuk mengemukakan masalah atau gunakan forum untuk pertanyaan teknikal lain. Kerja lengkap paparan LCD dengan STM32 juga boleh didapati sebagai video yang diberikan di bawah.