- Paparan LCD Alphanumerik 16x2
- Perpustakaan CCS LCD 16x2 untuk MSP430
- Fungsi LCD untuk Paparan LCD 16x2 pada MSP430
- Litar Diagram ke Antara Muka LCD dengan MSP430
- Memprogram MSP430 menggunakan Code Composer Studio untuk Paparan LCD
Artikel ini adalah kesinambungan dari siri tutorial kami mengenai pengaturcaraan MSP430 menggunakan Code Composer Studio. Tutorial terakhir dibuat berdasarkan gangguan luaran pada MSP430 menggunakan pin GPIO. Tutorial ini adalah mengenai mengaitkan paparan dengan MSP430, ketika menampilkan Paparan LCD 16 * 2, ini adalah pilihan pertama bagi mana-mana penggemar elektronik. Sebelumnya kami juga telah menghubungkan LCD dengan MSP430 menggunakan Arduino IDE, dalam tutorial ini, kami akan menggunakan platform studio Code Composer asli dan bukannya menggunakan Arduino IDE, dengan cara ini sebagai pereka, kami mendapat lebih banyak fleksibiliti.
Untuk mengetahui lebih lanjut mengenai paparan LCD 16x2 dan menggunakannya dengan pengawal mikro lain, sila lihat tutorial di bawah.
- Memadankan LCD dengan ATmega16
- Memadankan LCD dengan Raspberry Pi
- Memadankan LCD dengan PIC Microcontroller
- Memadankan LCD dengan ARM7-LPC2148
- Memadan LCD dengan NodeMCU
- Memadankan LCD dengan STM32
- Memadankan LCD dengan MSP430G2
- Memadankan LCD dengan STM8
Ia memiliki IC hd44780 internal yang dapat menyimpan perintah dan data yang dikirimkan kepadanya. Modul LCD mempunyai kira-kira 16 pin. 8 daripadanya adalah pin data, 4 daripadanya adalah pin bekalan untuk lampu latar LED dan keseluruhan modul LCD, 3 untuk mengawal operasi, dan 1 pin untuk penyesuaian kontras. Tutorial ini berdasarkan perpustakaan yang dibuat oleh Dennis Eichmann. Sangat mudah untuk menggunakan perpustakaan dengan fungsi yang terpisah untuk mencetak pelbagai jenis data. Ini juga memiliki ketentuan untuk menampilkan data dalam berbagai bentuk dengan angka nol terkemuka, kosong, dan dihapus. Ia adalah perpustakaan yang cukup luas dan komprehensif dan boleh dikonfigurasi untuk sambungan yang berbeza. Di sini, fail header diubah suai untuk menampung konfigurasi selari 8-pin untuk komunikasi data.
Paparan LCD Alphanumerik 16x2
Paparan 16x2 generik mempunyai IC hd44780 bawaan (dilingkari dengan warna merah di bawah), yang dapat menyimpan perintah dan data yang diteruskan kepadanya. Modul LCD mempunyai kira-kira 16 pin. 8 daripadanya adalah pin data, 4 daripadanya adalah pin bekalan untuk lampu latar LED dan keseluruhan modul LCD, 3 untuk mengendalikan operasi, dan 1 pin untuk penyesuaian kontras.
Modul LCD ini ditunjukkan di atas serba boleh dan menggunakan pin minimum berbanding dengan LCD segmen lain. Sekiranya anda ingin tahu bagaimana sebenarnya semua ini berfungsi, anda harus melihat cara kerja paparan LCD 16x2 di mana kita telah membincangkan bagaimana LCD berfungsi secara terperinci.
Pin Pin: RS = 1 akan memungkinkan daftar data dalam LCD, yang digunakan untuk menulis nilai ke daftar data dalam LCD. RS = 0 akan membolehkan daftar arahan LCD.
Dayakan pin: dicetuskan tepi negatif; apabila pin diubah dari keadaan TINGGI ke keadaan RENDAH, LCD diminta untuk menulis ke pin data. Pencetus kelebihan positif; apabila pin ditukar dari keadaan RENDAH ke keadaan TINGGI, LCD diminta membaca dari pin data.
Pin R / W: R / W = 0 akan menulis ke daftar arahan atau daftar 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 menulis sebagai operasi dalaman (paparan jelas, dll.)
0 1 Baca bendera sibuk (DB7) dan kaunter alamat (DB0 hingga DB6)
1 0 DR tulis sebagai operasi dalaman (DR ke DDRAM atau CGRAM)
1 1 DR dibaca sebagai operasi dalaman (DDRAM atau CGRAM hingga DR)
Pin D0-D7: Data dipindahkan ke dan dari perintah dan daftar data melalui pin ini.
Pin bekalan: V ss, pin dd digunakan untuk menghidupkan Modul LCD. Pin A, K akan menghidupkan lampu latar LED. Pin V 0 digunakan untuk mengawal kontras.
Perpustakaan CCS LCD 16x2 untuk MSP430
Tutorial ini berdasarkan perpustakaan yang dibuat oleh Dennis Eichmann. Sangat mudah untuk menggunakan perpustakaan dengan fungsi yang terpisah untuk mencetak pelbagai jenis data. Ini juga memiliki ketentuan untuk menampilkan data dalam berbagai bentuk dengan angka nol terkemuka, kosong, dan dihapus. Ia adalah perpustakaan yang cukup luas dan komprehensif dan boleh dikonfigurasi untuk sambungan yang berbeza. Di sini, fail header diubah suai untuk menampung konfigurasi selari 8-pin untuk komunikasi data. Perpustakaan boleh dimuat turun dari pautan di bawah, setelah memuat turun anda mengikuti langkah-langkah berikut untuk menambahkan perpustakaan ke CCS.
Muat turun Perpustakaan 16x2 untuk MSP430 - Code Composer Studio
Langkah 1: Membuat Fail dan Projek
Projek CCS lalai dibuat menggunakan menu fail. Dalam kotak dialog Buat Projek, pilih peranti dan berikan hd44780 sebagai nama projek. Di bawah jenis Projek dan rantai alat, pilih jenis output sebagai perpustakaan Statik dan buat projek.
Di jalur Project Explorer (sebelah kiri), buat fail header dalam folder include dan namakan sebagai hd44780.h . Kemudian salin kandungan fail hd44780.h yang dimuat turun ke dalam fail yang baru dibuat ini.
Sekarang buat projek utama dengan mengubah jenis output menjadi yang dapat dieksekusi dan buat projek bernama CCS_LCD .
Langkah 2: Sertakan Jalan Carian ke Projek Utama
Dalam kotak dialog sifat projek hd44780 dan di dalam pilihan sertakan untuk penyusun MSP430, tambahkan folder include dalam fail jalan carian.
Kemudian, bina projek ini untuk membuat fail penghubung yang diperlukan seperti fail.lib . Membina ini akan membuat fail hd44780.lib di dalam folder debug.
Langkah 3: Sertakan Jalan Carian untuk Pautan
Dalam kotak dialog sifat untuk projek CCS_LCD dan di jalan pencarian fail MSP430 Linker tab, sertakan hd44780.lib yang terletak di dalam folder debug projek hd44780. Folder debug juga disertakan dalam jalan carian fail.
Folder include ditambahkan lagi pada pilihan include dari penyusun MSP430 projek CCS_LCD .
Perpustakaan berjaya disusun dan ditambahkan ke penghubung projek utama.
Fungsi LCD untuk Paparan LCD 16x2 pada MSP430
void hd44780_timer_isr (void): Ini dipanggil secara berkala dalam ISR Pemasa A. Pemasa A digunakan untuk melakukan fungsi LCD secara berkala seperti membersihkan skrin, menetapkan kursor, dan memaparkan data. Fungsi tersebut akan digunakan dalam ISR. Ia 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): Ia akan menulis rentetan yang dinyatakan dalam argumen pertama.
char * ch__string: Rentetan yang akan ditulis ke penyangga data (di dalam fungsi hd44780_timer_isr ). Data akan disalin ke daftar data dan daftar arahan IC LCD apabila hd44780_timer_isr dipanggil secara berkala.
uint8_t u8__row: Ia menentukan baris di mana rentetan akan ditulis.
uint8_t u8__kolom: Ia menentukan lajur di mana rentetan akan ditulis.
uint8_t u8__cr_lf: Jika diatur 1, baris akan diteruskan ke yang berikutnya. Sekiranya 0, pencetakan berhenti pada baris yang sama.
void hd44780_clear_screen (void): Fungsi ini akan membersihkan keseluruhan skrin. Ia 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 akan memaparkan nilai yang tidak ditandakan pada 16 yang tidak ditandakan .
uint16_t u16__value: Bilangan bulat yang akan ditunjukkan diberikan dalam argumen pertama.
uint8_t u8__leading_zero_handling: Jika 0 dilalui, angka nol terkemuka akan ditunjukkan sehingga nilai integer akan ditunjukkan. Sekiranya 1 lulus, angka nol akan dikosongkan. Sekiranya 2 dilewatkan sebagai parameter, hanya digit penting yang akan ditunjukkan.
uint8_t u8__row: Baris di mana bilangan bulat dipaparkan dipilih.
uint8_t u8__kolom: Lajur yang akan dicetak dipilih menggunakan argumen.
uint8_t u8__cr_lf: Jika diatur 1, baris akan diteruskan ke yang berikutnya. Sekiranya 0, pencetakan berhenti pada baris yang sama.
Litar Diagram ke Antara Muka LCD dengan MSP430
Gambarajah litar lengkap digambarkan pada gambar di bawah. Seperti yang anda lihat, sambungan perkakasan sangat mudah dan kami telah menggunakan papan lengkap dengan menggunakan penyesuai 5V.
Sambungan dibuat mengikut lakaran di atas. Sila perhatikan jadual di bawah untuk sambungan terperinci.
Vss | Tanah Bekalan Kuasa 5V |
Vdd | 5V |
V0 | Keluaran 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 |
A | Perintang 220 Ohm |
K | Tanah |
Anod lampu latar LED tidak dapat dihubungkan terus ke bekalan 5V. Ia harus disambungkan ke rintangan untuk meminimumkan aliran arus melalui Modul LCD. Saya telah membuat sambungan saya menggunakan papan perf untuk menyolder LCD dan kemudian menggunakan wayar jumper untuk menghubungkan LCD dengan papan MSP430, susunan saya kelihatan seperti di bawah ini tetapi anda juga boleh menggunakan papan roti untuk membuat sambungan anda.
Memprogram MSP430 menggunakan Code Composer Studio untuk Paparan LCD
Kod lengkap yang digunakan dalam projek ini diberikan di bahagian bawah halaman ini. Penjelasan mengenai penggunaan kod adalah seperti berikut. Pertama, buka fail tajuk (hd44780.h) dan sertakan nombor bahagian mikrokontroler di bahagian pertama fail.
#sertakan "msp430g2553.h"
Pemasa pengawas mesti dihentikan terlebih dahulu. Daftar kawalan DCOCTL dan BCSCTL1 digunakan untuk mengkonfigurasi pengayun mikrokontroler. Garis di bawah akan mengkonfigurasi MCLK menjadi 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Pin port 1 harus disebut sebagai output, yang akan digunakan untuk pin data. Pin 0 dan pin 1 juga harus disebut sebagai output di port 2, yang akan digunakan untuk pin RS dan R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Pemasa terbina digunakan untuk memaparkan nilai secara berkala. Pemasa A dipilih dengan SMCLK (1MHZ) sebagai sumber jam dan mod berterusan adalah modus operasi.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Selang untuk saluran perbandingan 1 dan 2 dan selang limpahan pemasa berkongsi vektor gangguan yang sama ( TIMER0_A1_VECTOR ) dengan alamat permulaan yang berbeza. Tangkap saluran perbandingan 1 (CCR1) menggunakan 2 sebagai alamat, yang digunakan dalam kotak suis.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { suis (TA0IV) { kes 2: { hd44780_timer_isr (); rehat; } } }
Setelah kod anda disusun, anda boleh memuat naiknya ke papan MSP430, seperti yang dijelaskan dalam memulakan tutorial MSP430. Sekiranya semuanya berjalan seperti yang diharapkan, anda akan melihat paparan LCD anda sedikit berbeza seperti yang ditunjukkan di bawah.
Sekiranya ujian anda sangat redup, anda boleh mencuba menyesuaikan potensiometer untuk mendapatkan kontras yang lebih baik. Penyelesaian projek yang lengkap juga terdapat dalam video yang dipautkan di bawah. Mudah-mudahan anda menikmati projek ini dan menjadikannya menarik untuk membina sendiri. Sekiranya anda mempunyai pertanyaan, sila tinggalkan di bahagian komen di bawah. Anda juga boleh menulis semua soalan teknikal anda di forum untuk mendapatkan jawapan atau memulakan perbincangan.