- Bahan yang Dibutuhkan
- Diagram Sirkuit dan Koneksi
- Pemrograman STM32 untuk LCD menggunakan Arduino
- Mengupload Program ke STM32F103C8T6
Untuk setiap proyek mikrokontroler, menghubungkan unit tampilan dengannya akan membuat proyek lebih mudah dan menarik bagi pengguna untuk berinteraksi dengannya. Unit tampilan yang paling umum digunakan untuk mikrokontroler adalah tampilan numerik Alfa 16x2. Jenis tampilan ini tidak hanya berguna untuk menampilkan informasi penting kepada pengguna tetapi juga dapat bertindak sebagai alat debugging selama tahap pengembangan awal proyek. Jadi, dalam tutorial ini kita akan belajar bagaimana kita dapat menghubungkan layar LCD 16x2 dengan papan Pengembangan STM32F103C8T6 STM32 dan memprogramnya menggunakan Arduino IDE. Bagi orang-orang yang akrab dengan Arduino tutorial ini hanya akan menjadi jalan kue karena keduanya sangat mirip. Juga untuk mempelajari lebih lanjut tentang STM32 Blue Pill Board, ikuti tutorial memulai kami.
Bahan yang Dibutuhkan
- STM32 Papan Pengembangan Pil Biru
- Layar LCD 16x2
- Programmer FTDI
- Menghubungkan Kabel
- LCD
Pengenalan singkat tentang tampilan LCD 16 × 2 Dot matrix
Seperti yang diceritakan sebelumnya, Energia IDE menyediakan pustaka cantik yang membuat antarmuka menjadi mudah dan karenanya tidak wajib mengetahui apa pun tentang modul tampilan. Tapi, bukankah menarik untuk menunjukkan apa yang kita gunakan !!
Nama 16 × 2 menyiratkan bahwa tampilan memiliki 16 Kolom dan 2 Baris, yang bersama-sama (16 * 2) membentuk 32 kotak. Satu kotak akan terlihat seperti ini pada gambar di bawah
Satu kotak memiliki 40 piksel (titik) dengan urutan matriks 5 Baris dan 8 kolom, 40 piksel ini bersama-sama membentuk satu karakter. Demikian pula, 32 karakter dapat ditampilkan menggunakan semua kotak. Sekarang mari kita lihat pinouts.
LCD memiliki total 16 Pin, seperti yang ditunjukkan di atas, mereka dapat dikategorikan menjadi empat kelompok seperti berikut
Pin Sumber (1, 2 dan 3): Pin ini memberi sumber daya dan tingkat kontras untuk tampilan
Pin Kontrol (4, 5 dan 6): Pin-pin ini mengatur / mengontrol register di IC antarmuka LCD (selengkapnya dapat ditemukan di tautan di bawah)
Pin Data / Perintah (7 hingga 14): Pin ini memberikan data tentang informasi apa yang harus ditampilkan pada LCD.
Pin LED (15 dan 16): Pin ini digunakan untuk memancarkan cahaya latar LCD jika diperlukan (opsional).
Dari semua 16 pin ini, hanya 10 pin yang harus digunakan untuk pekerjaan yang benar pada LCD jika Anda ingin mengetahui lebih banyak tentang layar LCD ini, lanjutkan ke artikel LCD 16x2 ini.
Diagram Sirkuit dan Koneksi
Diagram sirkuit untuk antarmuka LCD 16 * 2 Dot matrix dengan papan STM32F103C8T6 STM32 Blue Pill ditunjukkan di bawah ini. Itu dibuat menggunakan Perangkat Lunak Fritzing.
Seperti yang Anda lihat, koneksi lengkap dibuat di atas papan tempat memotong roti. Kami membutuhkan papan FTDI untuk memprogram Mikrokontroler STM32. Mirip dengan tutorial kami sebelumnya, kami telah menghubungkan papan FTDI ke STM32, pin Vcc dan ground dari programmer FDTI terhubung ke pin 5V dan pin ground STM32 masing-masing. Ini digunakan untuk memberi daya pada papan STM32 dan LCD karena keduanya dapat menerima kaleng + 5V. Pin Rx dan Tx pada papan FTDI terhubung ke pin A9 dan A10 pada STM32 sehingga kita dapat memprogram papan secara langsung tanpa boot loader.
Selanjutnya LCD harus dihubungkan ke papan STM32. Kami akan menggunakan LCD dalam mode 4-bit, jadi kami harus menghubungkan 4 pin bit data (DB4 ke DB7) dan dua pin kontrol (RS dan EN) ke papan STM32 seperti yang ditunjukkan pada rangkaian antarmuka LCD STM32F103C8T6 diagram di atas. Selanjutnya tabel di bawah ini akan membantu Anda dalam membuat koneksi.
Nomor Pin LCD |
Nama Pin LCD |
Nama Pin STM32 |
1 |
Tanah (Gnd) |
Tanah (G) |
2 |
VCC |
5V |
3 |
VEE |
Tanah (G) |
4 |
Register Select (RS) |
PB11 |
5 |
Baca / Tulis (RW) |
Tanah (G) |
6 |
Aktifkan (EN) |
PB10 |
7 |
Data Bit 0 (DB0) |
Tidak Ada Koneksi (NC) |
8 |
Data Bit 1 (DB1) |
Tidak Ada Koneksi (NC) |
9 |
Data Bit 2 (DB2) |
Tidak Ada Koneksi (NC) |
10 |
Data Bit 3 (DB3) |
Tidak Ada Koneksi (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 |
LED Positif |
5V |
16 |
LED Negatif |
Tanah (G) |
Setelah koneksi selesai, kita dapat membuka Arduino IDE dan mulai memprogramnya.
Pemrograman STM32 untuk LCD menggunakan Arduino
Seperti yang diceritakan dalam tutorial ini kita akan menggunakan Arduino IDE untuk memprogram Mikrokontroler STM32 kita. Tapi, Arduino IDE secara default tidak akan menginstal papan STM32, oleh karena itu kita harus mengunduh paket dan menyiapkan Arduino IDE untuk hal yang sama. Ini persis seperti yang kami lakukan di tutorial sebelumnya untuk memulai dengan STM32F103C8T6 menggunakan Arduino IDE. Jadi jika Anda belum menginstal paket yang diperlukan, kembali ke tutorial ini dan ikuti sebelum Anda melanjutkan di sini.
Setelah Papan STM32 dipasang di Arduino IDE, kita dapat memulai pemrograman. Program ini sangat mirip dengan papan Arduino, satu-satunya hal yang akan berubah adalah nama pin karena notasinya berbeda untuk STM32 dan Arduino. Program lengkap diberikan di akhir halaman ini, tetapi untuk menjelaskan program saya telah membaginya menjadi potongan-potongan kecil yang berarti seperti yang ditunjukkan di bawah ini.
Satu keuntungan nyata menggunakan Arduino untuk memprogram mikrokontroler kami adalah Arduino memiliki perpustakaan yang sudah jadi untuk hampir setiap sensor dan aktuator terkenal. Jadi di sini kita memulai program kita dengan memasukkan perpustakaan LCD yang membuat pemrograman jauh lebih mudah.
#include
Pada baris berikutnya kita harus menentukan pin GPIO mana dari STM32 yang telah kita hubungkan dengan kontrol layar LCD dan jalur data. Untuk melakukan ini kita harus memeriksa perangkat keras kita, untuk kemudahan Anda juga dapat merujuk ke tabel yang diberikan di bagian atas yang mencantumkan nama pin LCD terhadap pin GPIO STM32. Setelah menyebutkan pin, kita dapat menginisialisasi LCD menggunakan fungsi LiquidCrystal . Kami juga menamai LCD kami sebagai " lcd " seperti yang ditunjukkan di bawah ini.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // sebutkan nama pin dengan LCD yang terhubung ke LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // Inisialisasi LCD
Selanjutnya kita masuk ke dalam fungsi pengaturan . Di sini pertama-tama kami telah menyebutkan jenis LCD yang kami gunakan. Karena ini adalah LCD 16 * 2 kami menggunakan baris lcd.begin (16,2). Kode di dalam fungsi penyiapan void dijalankan hanya sekali. Jadi kami menggunakannya untuk menampilkan teks intro yang muncul di layar selama 2 detik dan kemudian dihapus. Untuk menyebutkan posisi dimana teks harus muncul kita menggunakan fungsi lcd.setcursor dan untuk mencetak teks tersebut kita menggunakan fungsi lcd.print . Misalnya lcd.setCursor (0,0) akan mengatur kursor pada baris pertama dan kolom pertama dimana kita mencetak “ Interfacing LCD ” dan fungsi lcd.setCursor (0,1) memindahkan kursor ke baris kedua kolom pertama tempat kita mencetak baris " CircuitDigest ".
void setup () {lcd.begin (16, 2); // Kami menggunakan LCD lcd.setCursor (0, 0); // Pada baris pertama kolom pertama lcd.print ("Interfacing LCD"); // Cetak lcd.setCursor ini (0, 1); // Pada baris kedua kolom pertama lcd.print ("- CircuitDigest"); // Cetak penundaan ini (2000); // tunggu dua detik lcd.clear (); // Bersihkan layar}
Setelah menampilkan teks intro kami mengadakan program selama 2 detik dengan membuat penundaan sehingga pengguna dapat membaca pesan intro. Delay ini dibuat oleh line delay (2000) dimana 2000 adalah nilai delay dalam mill detik. Setelah penundaan kami menghapus LCD menggunakan fungsi lcd.clear () yang membersihkan LCD dengan menghapus semua teks pada LCD.
Akhirnya di dalam void loop, kami menampilkan "STM32 –Blue Pill" pada baris pertama dan nilai detik pada baris kedua. Nilai detik dapat diperoleh dari fungsi millis () . The millis () adalah timer yang mendapat incrementing kanan dari waktu MCU didukung. Nilainya dalam satuan mili detik jadi kita bagi dengan 1000 sebelum menampilkannya di LCD kita.
void loop () { lcd.setCursor (0, 0); // Pada baris pertama kolom pertama lcd.print ("STM32 -Blue Pill"); // Cetak lcd.setCursor ini (0, 1); // Pada baris kedua kolom pertama lcd.print (millis () / 1000); // Cetak nilai detik }
Mengupload Program ke STM32F103C8T6
Seperti yang dibahas dalam paragraf di atas, Anda seharusnya dapat melihat hasilnya segera setelah kode diunggah. Tetapi program ini tidak akan berfungsi saat Anda menyalakan papan, karena papan masih dalam mode pemrograman. Jadi setelah program diunggah, jumper saat boot 0 harus diubah kembali ke posisi 0 seperti yang ditunjukkan di bawah ini. Juga sekarang karena program sudah diunggah ke papan STM32, kami tidak memerlukan papan FTDI dan seluruh pengaturan dapat didukung oleh port micro-USB dari papan STM32 seperti yang ditunjukkan di bawah ini.
Ini hanyalah proyek antarmuka sederhana untuk membantu menggunakan layar LCD dengan papan STM32, tetapi selanjutnya Anda dapat menggunakan ini untuk membangun proyek keren. Semoga Anda memahami tutorial dan mempelajari sesuatu yang bermanfaat darinya. Jika Anda mengalami masalah dalam membuatnya berfungsi, silakan gunakan bagian komentar untuk memposting masalah atau gunakan forum untuk pertanyaan teknis lainnya. Kerja lengkap layar LCD dengan STM32 juga dapat ditemukan sebagai video yang diberikan di bawah ini.