- Layar LCD Alfanumerik 16x2
- Library CCS LCD 16x2 untuk MSP430
- Fungsi LCD untuk Tampilan LCD 16x2 pada MSP430
- Diagram Sirkuit untuk Antarmuka LCD dengan MSP430
- Pemrograman MSP430 menggunakan Code Composer Studio untuk LCD Display
Artikel ini adalah kelanjutan dari seri tutorial kami tentang pemrograman MSP430 menggunakan Code Composer Studio. Tutorial terakhir didasarkan pada interupsi eksternal pada MSP430 menggunakan pin GPIO. Tutorial ini adalah tentang menghubungkan tampilan dengan MSP430, ketika harus menampilkan Layar LCD 16 * 2, ini adalah pilihan pertama bagi setiap penggemar elektronik. Sebelumnya kami juga telah menghubungkan LCD dengan MSP430 menggunakan Arduino IDE, dalam tutorial ini, kami akan menggunakan platform studio Code Composer native daripada menggunakan Arduino IDE, dengan cara ini sebagai desainer, kami mendapatkan lebih banyak fleksibilitas.
Untuk mempelajari lebih lanjut tentang layar LCD 16x2 dan menggunakannya dengan mikrokontroler lain, silakan lihat tutorial di bawah ini.
- Interfacing LCD dengan ATmega16
- Interfacing LCD dengan Raspberry Pi
- Antarmuka LCD dengan Mikrokontroler PIC
- Interfacing LCD dengan ARM7-LPC2148
- Antarmuka LCD dengan NodeMCU
- Antarmuka LCD dengan STM32
- Antarmuka LCD dengan MSP430G2
- Antarmuka LCD dengan STM8
Ini memiliki IC hd44780 built-in yang dapat menyimpan perintah dan data yang diteruskan kepadanya. Modul LCD memiliki sekitar 16 pin. 8 di antaranya adalah pin data, 4 di antaranya adalah pin suplai untuk LED backlight dan seluruh modul LCD, 3 untuk mengontrol pengoperasian, dan 1 pin untuk penyesuaian kontras. Tutorial ini didasarkan pada pustaka yang dibuat oleh Dennis Eichmann. Sangat mudah untuk menggunakan pustaka dengan fungsi terpisah untuk mencetak tipe data yang berbeda. Ini juga memiliki ketentuan untuk menampilkan data dalam berbagai bentuk dengan nol di depan, kosong, dan dihapus. Ini adalah pustaka yang cukup luas dan komprehensif dan dapat dikonfigurasi untuk koneksi yang berbeda. Di sini, file header dimodifikasi untuk mengakomodasi konfigurasi paralel 8-pin untuk komunikasi data.
Layar LCD Alfanumerik 16x2
Tampilan 16x2 generik memiliki IC hd44780 bawaan (dilingkari merah di bawah), yang dapat menyimpan perintah dan data yang diteruskan kepadanya. Modul LCD memiliki sekitar 16 pin. 8 di antaranya adalah pin data, 4 di antaranya adalah pin suplai untuk LED backlight dan seluruh modul LCD, 3 untuk mengontrol pengoperasian, dan 1 pin untuk penyesuaian kontras.
Modul LCD ini serbaguna dan menggunakan pin minimum dibandingkan dengan LCD tersegmentasi lainnya. Jika Anda penasaran untuk mengetahui bagaimana sebenarnya semua ini bekerja, Anda harus memeriksa cara kerja layar LCD 16x2 di mana kita telah membahas cara kerja LCD secara rinci.
Pin RS: RS = 1 akan mengaktifkan register data di LCD, yang digunakan untuk menulis nilai ke register data di LCD. RS = 0 akan mengaktifkan register Instruksi pada LCD.
Aktifkan pin: Tepi negatif dipicu; ketika pin diubah dari status TINGGI ke status RENDAH, LCD diminta untuk menulis ke pin data. Tepi positif dipicu; ketika pin diubah dari status RENDAH ke status TINGGI, LCD diminta untuk membaca dari pin data.
Pin R / W: R / W = 0 akan menulis ke register instruksi atau register data sesuai pemilihan pin RS. R / W = 1 akan dibaca dari IR atau DR sesuai pemilihan pin RS.
Operasi RS R / W
0 0 IR tulis sebagai operasi internal (tampilan jelas, dll.)
0 1 Baca bendera sibuk (DB7) dan penghitung alamat (DB0 ke DB6)
1 0 DR menulis sebagai operasi internal (DR ke DDRAM atau CGRAM)
1 1 DR dibaca sebagai operasi internal (DDRAM atau CGRAM ke DR)
Pin D0-D7: Data ditransfer ke dan dari perintah dan register data melalui pin ini.
Pin suplai: Pin V ss, V dd digunakan untuk menyalakan Modul LCD. Pin A, K akan menyalakan lampu latar LED. Pin V 0 digunakan untuk mengontrol kontras.
Library CCS LCD 16x2 untuk MSP430
Tutorial ini didasarkan pada pustaka yang dibuat oleh Dennis Eichmann. Sangat mudah untuk menggunakan pustaka dengan fungsi terpisah untuk mencetak tipe data yang berbeda. Ini juga memiliki ketentuan untuk menampilkan data dalam berbagai bentuk dengan nol di depan, kosong, dan dihapus. Ini adalah pustaka yang cukup luas dan komprehensif dan dapat dikonfigurasi untuk koneksi yang berbeda. Di sini, file header dimodifikasi untuk mengakomodasi konfigurasi paralel 8-pin untuk komunikasi data. Perpustakaan dapat diunduh dari tautan di bawah ini, setelah mengunduh Anda mengikuti langkah-langkah di bawah ini untuk menambahkan perpustakaan ke CCS.
Unduh Perpustakaan 16x2 untuk MSP430 - Code Composer Studio
Langkah 1: Membuat File dan Proyek
Proyek CCS default dibuat menggunakan menu file. Di kotak dialog Buat Proyek, pilih perangkat dan berikan hd44780 sebagai nama proyek. Di bawah Jenis proyek dan rantai alat, pilih jenis keluaran sebagai pustaka Statis dan buat proyek.
Di jalur Project Explorer (sisi kiri), buat file header dalam folder include dan beri nama hd44780.h . Kemudian salin konten file hd44780.h yang diunduh ke file yang baru dibuat ini.
Sekarang buat proyek utama dengan mengubah jenis keluaran menjadi yang dapat dieksekusi dan buat proyek bernama CCS_LCD .
Langkah 2: Sertakan Jalur Pencarian ke Proyek Utama
Di kotak dialog properti proyek hd44780 dan di dalam opsi include untuk kompiler MSP430, tambahkan folder include di file jalur pencarian.
Kemudian, buat proyek ini untuk membuat file penaut yang diperlukan seperti file.lib . Membangun ini akan membuat file hd44780.lib di dalam folder debug.
Langkah 3: Sertakan Jalur Pencarian untuk Linker
Di kotak dialog properti untuk proyek CCS_LCD dan di jalur pencarian file dari tab Linker MSP430, sertakan hd44780.lib yang terletak di dalam folder debug dari proyek hd44780. Folder debug juga disertakan dalam jalur pencarian file.
Folder include ditambahkan lagi ke opsi penyertaan dari kompiler MSP430 dari proyek CCS_LCD .
Pustaka berhasil dikompilasi dan ditambahkan ke linker proyek utama.
Fungsi LCD untuk Tampilan LCD 16x2 pada MSP430
void hd44780_timer_isr (void): Ini secara berkala disebut dalam ISR Timer A. Timer A digunakan untuk secara berkala melakukan fungsi LCD seperti membersihkan layar, mengatur kursor, dan menampilkan data. Fungsinya akan digunakan di ISR. Itu tidak mengembalikan apa-apa.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Ini akan menulis string yang ditentukan dalam argumen pertama.
char * ch__string: String yang akan ditulis ke buffer data (di dalam fungsi hd44780_timer_isr ). Data akan disalin ke register data dan register instruksi pada IC LCD ketika hd44780_timer_isr dipanggil secara berkala.
uint8_t u8__row: Ini mendefinisikan baris di mana string akan ditulis.
uint8_t u8__column: Ini mendefinisikan kolom di mana string akan ditulis.
uint8_t u8__cr_lf: Jika disetel 1, baris akan dipindahkan ke baris berikutnya. Jika nilainya 0, pencetakan berhenti pada baris yang sama.
void hd44780_clear_screen (void): Fungsi ini akan menghapus seluruh layar. Itu tidak mengembalikan apa-apa.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Fungsi ini akan menampilkan lokasi yang tidak ditandatangani pada LCD 16-bit.
uint16_t u16__value: Bilangan bulat yang akan ditampilkan diberikan dalam argumen pertama.
uint8_t u8__leading_zero_handling: Jika 0 dilewatkan, angka nol di depan akan ditampilkan ke nilai integer akan ditampilkan. Jika 1 dilewati, angka nol akan dihilangkan. Jika 2 dilewatkan sebagai parameter, hanya angka signifikan yang akan ditampilkan.
uint8_t u8__row: Baris di mana bilangan bulat ditampilkan dipilih.
uint8_t u8__column: Kolom yang akan dicetak dipilih menggunakan argumen.
uint8_t u8__cr_lf: Jika disetel 1, baris akan dipindahkan ke baris berikutnya. Jika nilainya 0, pencetakan berhenti pada baris yang sama.
Diagram Sirkuit untuk Antarmuka LCD dengan MSP430
Diagram rangkaian lengkapnya diilustrasikan pada gambar di bawah ini. Seperti yang Anda lihat, koneksi perangkat keras sangat sederhana dan kami telah mendukung papan lengkap dengan menggunakan adaptor 5V.
Koneksi dibuat sesuai sketsa di atas. Silakan lihat tabel di bawah ini untuk koneksi terperinci.
Vss | Ground Catu Daya 5V |
Vdd | 5V |
V0 | Output Potensiometer |
RS | P2.1 |
R / W | Tanah |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
SEBUAH | 220 Ohm Resistor |
K | Tanah |
Anoda lampu latar LED tidak dapat dihubungkan langsung ke suplai 5V. Ini harus dihubungkan ke resistansi untuk meminimalkan aliran arus melalui Modul LCD. Saya telah membuat koneksi saya menggunakan papan perf untuk menyolder LCD dan kemudian menggunakan kabel jumper untuk menghubungkan LCD dengan papan MSP430, pengaturan saya terlihat seperti ini di bawah ini tetapi Anda juga dapat menggunakan papan tempat memotong roti untuk membuat koneksi Anda.
Pemrograman MSP430 menggunakan Code Composer Studio untuk LCD Display
Kode lengkap yang digunakan dalam proyek ini diberikan di bagian bawah halaman ini. Penjelasan penggunaan kode tersebut adalah sebagai berikut. Pertama, buka file header (hd44780.h) dan masukkan nomor part mikrokontroler di bagian pertama file.
#include "msp430g2553.h"
Timer pengawas harus dihentikan dulu. Register kontrol DCOCTL dan BCSCTL1 digunakan untuk mengkonfigurasi osilator mikrokontroler. Baris di bawah ini akan mengkonfigurasi MCLK menjadi 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Pin port 1 harus disebutkan sebagai output, yang akan digunakan untuk pin data. Pin 0 dan pin 1 juga harus disebutkan sebagai keluaran pada port 2, yang akan digunakan untuk pin RS dan R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Timer built-in digunakan untuk menampilkan nilai secara berkala. Timer A dipilih dengan SMCLK (1MHZ) sebagai sumber jam dan mode kontinu sebagai mode operasi.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Interupsi untuk membandingkan saluran 1 dan 2 dan interupsi pengatur waktu berbagi vektor interupsi yang sama ( TIMER0_A1_VECTOR ) dengan alamat awal yang berbeda. Tangkap membandingkan saluran 1 (CCR1) menggunakan 2 sebagai alamat, yang digunakan dalam kasus sakelar.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); istirahat; } } }
Setelah kode Anda dikompilasi, Anda dapat mengunggahnya ke papan MSP430, seperti yang dijelaskan dalam memulai tutorial MSP430. Jika semuanya berjalan seperti yang diharapkan, Anda akan melihat tampilan LCD Anda kontras seperti yang ditunjukkan di bawah ini.
Jika pengujian Anda sangat redup, Anda dapat mencoba menyesuaikan potensiometer untuk mendapatkan kontras yang lebih baik. Pekerjaan lengkap proyek juga dapat ditemukan di video yang ditautkan di bawah ini. Semoga Anda menikmati proyek ini dan merasa tertarik untuk membuat proyek Anda sendiri. Jika Anda memiliki pertanyaan, silakan tinggalkan di bagian komentar di bawah. Anda juga dapat menulis semua pertanyaan teknis Anda di forum untuk mendapatkan jawaban atau untuk memulai diskusi.