- Bahan yang Diperlukan
- Modul Paparan LCD 16X2
- Diagram dan Sambungan Litar
- Pengaturcaraan ARM7-LPC2148
Paparan adalah bahagian mesin yang diperlukan 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, paparan skrin sentuh TFT, paparan LED dll. Paparan LCD 16x2 adalah yang paling asas dan juga paparan yang digunakan dalam beberapa peralatan elektronik kecil, kami telah melakukan banyak projek menggunakan LCD 16x2 termasuk antara muka asas dengan pengawal mikro 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 ARM7-LPC2148 dan memaparkan pesanan selamat datang. Sekiranya anda baru menggunakan ARM7, mulailah dengan asas-asas ARM7 LPC2148 dan pelajari bagaimana ia dapat diprogramkan menggunakan Keil uVision
Bahan yang Diperlukan
Perkakasan
- Papan mikrokontroler ARM7-LPC2148
- LCD (16X2)
- Potensiometer
- IC pengatur voltan 5V
- Papan roti
- Wayar Penyambung
- Bateri 9V
- Kabel USB mikro
Perisian
- Keil uVision 5
- Alat Kilat Ajaib
Sebelum masuk ke dalam projek, kita mesti mengetahui beberapa perkara mengenai mod operasi LCD dan mengenai kod LCD Hex.
Modul Paparan LCD 16X2
LCD 16X2 mengatakan bahawa ia mempunyai 16 Tiang dan 2 Baris. LCD ini mempunyai 16 pin. Gambar dan jadual di bawah menunjukkan nama pin paparan LCD dan fungsinya.
NAMA |
FUNGSI |
VSS |
Pin Tanah |
VDD |
+ Pin Input 5V |
VEE |
Pin Laraskan Kontras |
RS |
Daftar Pilih |
R / W |
Baca / Tulis Pin |
E |
Dayakan Pin |
D0-D7 |
Pin Data (8 Pin) |
LED A |
Pin Anod (+ 5V) |
LED K |
Pin katod (GND) |
LCD boleh berfungsi dalam dua mod yang berbeza, iaitu mod 4-bit dan mod 8-bit. Dalam mod 4 bit kami menghantar data menggigit dengan menggigit, menggigit atas pertama dan kemudian menggigit bawah. Bagi anda yang tidak tahu apa itu menggigit: menggigit adalah sekumpulan empat bit, jadi empat bit yang lebih rendah (D0-D3) byte membentuk nibble bawah sementara empat bit atas (D4-D7) dari bait membentuk semakin tinggi. Ini membolehkan kami menghantar data 8 bit.
Manakala dalam mod 8 bit kita dapat menghantar data 8-bit secara langsung dalam satu langkah kerana kita menggunakan semua 8 baris data.
Di sini, dalam projek ini kita akan menggunakan mod yang paling biasa digunakan iaitu mod 4-bit. Dalam mod empat bit kita dapat menjimatkan 4 pin mikrokontroler dan juga mengurangkan overhead pendawaian.
16x2 juga menggunakan kod HEX untuk mengambil sebarang arahan, terdapat banyak perintah hex untuk LCD seperti menggerakkan kursor, memilih mod, mengalihkan kawalan ke baris kedua dll. Untuk mengetahui lebih lanjut mengenai Modul Paparan LCD 16X2 dan perintah hex, ikuti pautan.
Diagram dan Sambungan Litar
Jadual di bawah menunjukkan sambungan litar antara LCD & ARM7-LPC2148.
ARM7-LPC2148 |
LCD (16x2) |
P0.4 |
RS (Pilih Pilih) |
P0.6 |
E (Aktifkan) |
P0.12 |
D4 (Pin data 4) |
P0.13 |
D5 (Pin data 5) |
P0.14 |
D6 (Pin data 6) |
P0.15 |
D7 (Pin data 7) |
Sambungan Voltage Regulator dengan LCD & ARM7 Stick
Jadual di bawah menunjukkan hubungan antara ARM7 & LCD dengan pengatur voltan.
IC Pengatur Voltan |
Fungsi pin |
LCD & ARM-7 LPC2148 |
1. Pin Kiri |
+ Ve dari Input bateri 9V |
NC |
2. Pin Pusat |
- Ve dari bateri |
VSS, R / W, K dari LCD GND ARM7 |
3. Pin Kanan |
Keluaran + 5V Teratur |
VDD, A dari LCD + 5V ARM7 |
Potensiometer dengan LCD
Potensiometer digunakan untuk mengubah kontras paparan LCD. Sebuah periuk mempunyai tiga pin, Pin kiri (1) disambungkan ke + 5V dan tengah (2) ke modul LCD VEE atau V0 dan pin kanan (3) disambungkan ke GND. Kita boleh menyesuaikan kontras dengan memutar tombol.
Tetapan Pelompat
Pin jumper terdapat di ARM7-Stick sehingga kita dapat memberi kuasa & memuat naik kod dengan menggunakan USB atau dengan menggunakan input DC 5V untuk kuasa sahaja. Anda dapat melihat gambar di bawah.
Gambar di bawah menunjukkan bahawa pelompat berada dalam kedudukan DC. Ini bermakna kita mesti menghidupkan papan dari bekalan 5V luaran.
Dan gambar ini menunjukkan bahawa pelompat disambungkan dalam mod USB. Di sini kuasa dan kod diberikan melalui port usb mikro.
CATATAN: Di sini dalam tutorial ini kita telah memuat naik kod dengan menggunakan USB dengan menetapkan jumper ke USB dan kemudian menukar jumper ke mod DC menjadi daya LPC2148 dari input pengatur 5v. Anda boleh melihatnya dalam video yang diberikan di akhir.
Litar terakhir untuk menghubungkan LCD 16x2 dengan Mikrokontroler ARM7 akan kelihatan seperti ini:
Pengaturcaraan ARM7-LPC2148
Untuk Program ARM7-LPC2148, kami memerlukan alat keil uVision & Flash Magic. Kami menggunakan Kabel USB untuk memprogram ARM7 Stick melalui port USB mikro. Kami menulis kod menggunakan Keil dan membuat fail hex dan kemudian fail HEX diturunkan ke tongkat ARM7 menggunakan Flash Magic. Untuk mengetahui lebih lanjut mengenai memasang keil uVision dan Flash Magic dan cara menggunakannya, ikuti pautan Memulakan Dengan Mikrokontroler ARM7 LPC2148 dan Program dengan menggunakan Keil uVision.
Kod lengkap untuk menghubungkan LCD dengan ARM 7 diberikan pada akhir tutorial ini, di sini kami menerangkan beberapa bahagiannya.
Pertama sekali kita perlu memasukkan fail tajuk yang diperlukan
#sertakan
Memulakan modul LCD adalah langkah yang sangat penting. Di sini kita menggunakan kod HEX tertentu, yang sebenarnya perintah, untuk memberitahu LCD mengenai modus operasi (4-bit), jenis LCD (16x2), garis permulaan dll.
void LCD_INITILIZE (void) // Fungsi untuk menyiapkan LCD { IO0DIR = 0x0000FFF0; // Set pin P0.4, P0.6, P0.12, P0.13, P0.14, P0.15as OUTPUT delay_ms (20); LCD_SEND (0x02); // Permulaan lcd dalam mod operasi 4-bit LCD_SEND (0x28); // 2 baris (16X2) LCD_SEND (0x0C); // Paparan pada kursor mati LCD_SEND (0x06); // Kursor kenaikan automatik LCD_SEND (0x01); // Paparkan jelas LCD_SEND (0x80); // Kedudukan pertama barisan pertama }
Untuk mod 4-Bit kami mempunyai pelbagai jenis fungsi tulis untuk pin, iaitu dengan menggunakan nibble atas & bawah. Mari kita lihat, bagaimana ia dilakukan
batal LCD_SEND (perintah char) // Fungsi untuk menghantar perintah hex menggigit dengan menggigit { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((perintah & 0xF0) << 8)); // Hantar arahan atas perintah IO0SET = 0x00000040; // Membuat Aktifkan TINGGI IO0CLR = 0x00000030; // Menjadikan RS & RW delay_ms RENDAH (5); IO0CLR = 0x00000040; // Menjadikan Mendayakan LOW_ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((arahan & 0x0F) << 12)); // Hantar arahan rendah IO0SET = 0x00000040; // ENABLE TINGGI IO0CLR = 0x00000030; // RS & RW RENDAH_ms (5); IO0CLR = 0x00000040; // AKTIFKAN LAGI delay_ms (5); }
Logik Penghantaran Nibble
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((arahan & 0x0F) << 12)); // Hantar arahan rendah IO0PIN = (((IO0PIN & 0xFFFF00FF) - ((perintah & 0xF0) << 8)); // Kirim arahan tinggi
Di atas dua pernyataan memainkan peranan penting dalam program ini. Perintah pertama menghantar nibble bawah & kedua menghantar nibble atas. Itu tanpa menjejaskan pin lain yang kita lakukan. Mari lihat bagaimana ia berlaku sebelum itu untuk mengetahui logik ini terlebih dahulu
ORing- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
Oleh itu, kami menggunakan konsep masking dan operasi shift logik tanpa menjejaskan pin yang lain. Bermakna hanya pin (P0.12-P0.15) yang digunakan dan tidak ada pin lain seperti P0.4, P0.6 yang terjejas. Ini akan dilakukan dengan menggeser data dalam empat bit dan membuat geser atas di tempat menggigit bawah dan menutupi gumpalan atas. Dan kemudian kita menjadikan bit bawah sifar (0XF0) dan ORed dengan data menggigit untuk mendapatkan data nibble atas pada output.
Proses serupa digunakan untuk data yang lebih rendah tetapi di sini kita tidak perlu mengalihkan data.
Semasa menulis data ke output, yaitu, dalam mod perintah RS harus RENDAH dan untuk melaksanakan memungkinkan harus TINGGI, dan dalam mod data RS harus TINGGI dan untuk melaksanakan memungkinkan harus TINGGI.
Sekarang untuk mengirim data rentetan yang akan dicetak pada output, prinsip yang sama digunakan nibble oleh nibble. Langkah penting di sini ialah REGISTER SELECT (RS) mestilah TINGGI untuk mod data.
batal LCD_DISPLAY (char * msg) // Fungsi untuk mencetak watak yang dihantar satu persatu { uint8_t i = 0; sementara (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // Menghantar Gigitan Atas IO0SET = 0x00000050; // RS TINGGI & BOLEH TINGGI untuk mencetak data IO0CLR = 0x00000020; // RW LOW Mode tulis kelewatan ms (2); IO0CLR = 0x00000040; // EN = 0, RS dan RW tidak berubah (iaitu RS = 1, RW = 0) kelewatan ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F) << 12)); // Menghantar gumpalan bawah IO0SET = 0x00000050; // RS & EN TINGGI IO0CLR = 0x00000020; kelewatan ms (2); IO0CLR = 0x00000040; kelewatan ms (5); saya ++; }
Video Pengekodan & Demonstrasi lengkap diberikan di bawah.