Paparan adalah bahagian yang diperlukan dari mana-mana mesin sama ada alat rumah atau mesin industri. Paparan tidak hanya menunjukkan pilihan kawalan untuk mengendalikan mesin tetapi juga menunjukkan status dan output tugas yang dilakukan oleh mesin tersebut. Terdapat banyak jenis paparan yang digunakan dalam elektronik seperti paparan 7 segmen, paparan LCD 16x2, paparan skrin sentuh TFT, paparan OLED dll.
Paparan LCD 16x2 adalah modul paparan paling asas dan juga digunakan dalam beberapa peralatan elektronik kecil seperti kalkulator, meter digital dan lain-lain. Kami telah melakukan banyak projek menggunakan LCD 16x2 termasuk antaramuka asas dengan mikrokontroler lain:
- Antara muka LCD dengan Mikrokontroler 8051
- Memadan LCD dengan Mikrokontroler ATmega32
- Antara muka LCD dengan PIC Microcontroller
- Memadankan LCD 16x2 dengan Arduino
- 16x2 LCD Berinteraksi dengan Raspberry Pi menggunakan Python
Dalam tutorial ini, kita akan melihat bagaimana untuk menghubungkan antara muka LCD 16x2 dengan mikrokontroler Atmega16 AVR dan memaparkan pesanan selamat datang.
Komponen Diperlukan
- Atmega16
- Modul LCD 16x2
- Pelompat
- Papan roti
Rajah Litar
Pengaturcaraan Atmega16 untuk Paparan LCD 16x2
Pengaturcaraan tidak memerlukan perpustakaan luaran. Di sini Atmega16 diprogramkan menggunakan USBASP dan Atmel Studio7.0. Program Lengkap dan Video Kerja diberikan pada akhir projek, cukup muat naik program di Atmega16 dan putar 10k POT untuk menyesuaikan kecerahan LCD.Mula-mula menentukan Frekuensi CPU dan memasukkan perpustakaan yang diperlukan yang dilengkapi dengan Atmel Studio Package seperti untuk mengakses pin IO dan
Tentukan pin RS dan EN LCD dalam program. Pins RS digunakan untuk memilih data dan daftar perintah. Pin aktif mengikat data.
#define en PA3 #define rs PA2
Tentukan juga PORT Atmega16 mana yang akan digunakan untuk menghubungkan LCD. Di sini, PORTA digunakan.
#define lcdDirection DDRA #define lcdPort PORTA
Langkah seterusnya adalah membina fungsi yang akan menerima perintah dengan melewati parameter. Terdapat banyak Perintah HEX LCD. Perintah Hex digunakan untuk menentukan fungsi LCD. Oleh kerana kita menggunakan Mod LCD 4-bit, bait (8-bit) akan dihantar dalam dua paket. Satu paket akan Nibble Atas (4-bit) dan paket lain akan Nibble Bawah (4-bit).
batal lcdCommand (perintah char yang tidak ditandatangani) { lcdPort = (lcdPort & 0x0F) - (perintah & 0xF0); lcdPort & = ~ (1 <
Langkah seterusnya ialah menerima watak dan memasukkannya ke port LCD. Watak-watak yang diterima kemudian dihantar ke LCD menggigit. Fungsi mengambil watak menggunakan parameter by by dan kemudian mengambil nibble atas dan bawah. Pin 'rs' diatur ke tinggi untuk daftar data dan kemudian denyut nadi dikirim untuk memasukkan data. Begitu juga nibble yang lebih rendah yang di hantar dengan mengubah nilai mengaktifkan dan menghantar nadi naik untuk diaktifkan.
batal lcdChar (rentetan char yang tidak ditandatangani) { lcdPort = (lcdPort & 0x0F) - (string & 0xF0); lcdPort - = (1 <
Fungsi ini hanya mengubah watak menjadi rentetan dan boleh digunakan dalam program kemudian di mana rentetan menulis diperlukan.
batal lcdString (char * str) { int j; untuk (j = 0; str! = 0; j ++) { lcdChar (str); } }
Sekarang fungsi ditulis hanya untuk membersihkan skrin. Anda hanya perlu menghantar arahan 01 dalam HEX dan kemudian tetapkan kursor ke kedudukan awal.
batal lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Sekarang dalam fungsi utama, LCD diinisialisasi. Mula-mula tetapkan arah PORT untuk LCD ke antara muka. Di sini, PORT ditetapkan sebagai OUTPUT jadi tetapkan FF.
lcdDirection = 0xFF; _delay_ms (20)
Kemudian tetapkan LCD dalam mod 4-bit dengan menghantar 02 dalam hex. Hantar juga 28 dalam hex untuk menetapkannya dalam baris 2, piksel matriks 15x7 dalam mod 4-bit.
lcdCommand (0x02); lcdCommand (0x28);
The 0C perintah dan 06 digunakan untuk mengawal kedudukan kursor. Dan akhirnya hanya kosongkan skrin dengan menghantar 01 dalam hex. Ini akan menyelesaikan inisialisasi LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Setelah inisialisasi selesai, hanya menguji LCD dengan menghantar rentetan. Di sini kita menghantar String " LCD Pengantaramukaan " dalam 1 yang st baris.
lcdString ("Interfacing LCD");
Kemudian gerakkan kursor ke baris seterusnya dengan menghantar arahan c0 dalam hex. Dan akhirnya pada kedudukan ini, tulis rentetan "Dengan Atmega1 6".
lcdCommand (0xC0); lcdString ("Dengan Atmega16");
Ini menyelesaikan tutorial lengkap Menghadapi LCD 16x2 dengan Atmega16. Perhatikan bahawa jika anda tidak mendapat gambar atau piksel, maka periksa pendawaian anda mengikut kod dan rajah litar atau ubah nilai POT yang dilekatkan pada pin LCD V0. Sekiranya anda mempunyai keraguan atau cadangan, anda boleh menghubungi kami dengan menulis ke forum kami atau memberi komen di bawah.