- Penyiapan dan Persyaratan Perangkat Keras
- N76E003 LED dan Sirkuit Antarmuka Tombol Tekan
- Diagram Pin-Out N76E003
- Program Kontrol GPIO Sederhana untuk N76E003
- Pemrograman N76E003 dan Memverifikasi Output
Dalam tutorial kami sebelumnya, kami menggunakan program berkedip LED dasar sebagai memulai dengan panduan N76E003, kami telah mempelajari cara mengkonfigurasi IDE Keil dan mengatur lingkungan untuk memprogram unit mikrokontroler nuvoton N76E003. Ini adalah waktu untuk melangkah lebih jauh dan menggunakan antarmuka GPIO dasar untuk mengontrol perangkat keras tambahan. Jika Anda tertarik, Anda juga dapat memeriksa tutorial GPIO mikrokontroler lainnya yang tercantum di bawah ini-
- STM32 Nucleo64 dengan CubeMx dan TrueSTUDIO - kontrol LED
- STM8S dengan Kontrol GPIO Cosmic C
- PIC dengan MPLABX LED Blink Tutorial
- MSP430 dengan Code Composer Studio - Kontrol LED Sederhana
Karena di tutorial kami sebelumnya, kami hanya menggunakan LED untuk berkedip dengan menggunakan pin IO sebagai output. Dalam tutorial ini, kita akan belajar cara menggunakan pin IO lain sebagai input dan mengontrol LED tambahan. Tanpa membuang banyak waktu, mari kita evaluasi jenis pengaturan perangkat keras yang kita butuhkan.
Penyiapan dan Persyaratan Perangkat Keras
Karena sakelar perlu digunakan sebagai input, hal pertama yang kami butuhkan adalah tombol tekan. Kami juga membutuhkan LED tambahan untuk dikendalikan oleh tombol tekan itu. Selain keduanya, kami juga memerlukan resistor untuk membatasi arus LED dan resistor tambahan untuk tujuan pull-down melintasi tombol tekan. Ini akan didemonstrasikan lebih lanjut di bagian skema. Komponen yang kami butuhkan -
- Tombol tekan (semua jenis sakelar sesaat khusus - Sakelar taktil)
- Warna apapun dari LED
- Resistor 4.7k untuk tujuan pull-down
- Resistor 100R
Belum lagi, selain komponen di atas, kita membutuhkan development board berbasis mikrokontroler N76E003 serta Nu-Link Programmer. Selain itu, kabel papan tempat memotong roti dan kabel pengait juga diperlukan untuk menghubungkan semua komponen seperti yang ditunjukkan di bawah ini.
N76E003 LED dan Sirkuit Antarmuka Tombol Tekan
Seperti yang dapat kita lihat pada skema di bawah ini, LED Tes yang ada di dalam papan pengembangan terhubung pada port 1.4 dan LED tambahan terhubung pada port 1.5. Resistor R3 digunakan untuk membatasi arus LED.
Di pin 1.6, tombol tekan bernama SW terhubung. Setiap kali tombol ditekan, pin akan menjadi tinggi. Jika tidak, itu akan menjadi rendah oleh resistor pull-down R1 4.7K. Anda dapat mempelajari lebih lanjut tentang resistor pull-up dan pull-down jika Anda baru mengenal konsep ini.
Pin juga merupakan pin terkait program yang diakses oleh programmer. Ini digunakan untuk mengirim data program. Namun, kami akan melihat alasan di balik pemilihan pin tersebut serta mendapatkan informasi yang adil tentang pemetaan pin N76E003.
Diagram Pin-Out N76E003
The diagram pin dari N76E003 dapat dilihat di bawah ini Image-
Seperti yang bisa kita lihat, setiap pin memiliki banyak fungsi dan dapat digunakan untuk tujuan yang berbeda. Mari kita ambil contoh. Pin 1.7 dapat digunakan sebagai interupsi, atau input analog atau sebagai operasi input-output tujuan umum. Jadi, jika ada pin yang digunakan sebagai pin I / O, fungsi masing-masing tidak akan tersedia.
Karena itu, pin 1.5 yang digunakan sebagai pin keluaran LED, akan kehilangan PWM dan fungsionalitas lainnya. Tapi itu bukan masalah karena fungsionalitas lain tidak diperlukan untuk proyek ini. Alasan di balik pemilihan pin 1.5 sebagai keluaran dan pin 1.6 sebagai masukan, karena terdekat ketersediaan pin GND dan VDD untuk kemudahan koneksi.
Namun, pada mikrokontroler dari 20 pin ini, 18 pin dapat digunakan sebagai pin GPIO. Pin 2.0 secara khusus digunakan untuk input Reset dan tidak dapat digunakan sebagai output. Selain pin ini, semua pin dapat dikonfigurasi dalam mode yang dijelaskan di bawah ini.
Sesuai lembar data, PxM1.n, dan PxM2.n adalah dua register yang digunakan untuk menentukan operasi kendali port I / O. Sekarang, menulis dan membaca port GPIO adalah hal yang sama sekali berbeda. Karena menulis ke register kontrol port mengubah status latching port, sedangkan membaca port mendapatkan status status logika. Tetapi untuk membaca port, itu harus diatur ke mode input.
Program Kontrol GPIO Sederhana untuk N76E003
Program lengkap yang digunakan dalam tutorial ini dapat ditemukan di bagian bawah halaman ini, penjelasan kodenya adalah sebagai berikut.
Mengatur pin sebagai input
Mari kita mulai dengan masukan dulu. Seperti yang telah dibahas sebelumnya, untuk membaca status port, perlu disetel sebagai input. Oleh karena itu, karena kami telah memilih P1.6 sebagai pin sakelar masukan kami, kami telah menunjukkannya melalui baris cuplikan kode di bawah ini.
# Tentukan SW P16
Pin yang sama ini perlu disetel sebagai masukan. Jadi pada fungsi setup, pin diset sebagai input menggunakan baris di bawah ini.
batal penyiapan (batal) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Baris ini P16_Input_Mode; didefinisikan dalam file header Function_define.h di "BSP include library" yang menetapkan bit pin sebagai P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . The SET_BIT6 juga didefinisikan dalam file header yang sama sebagai-
#tentukan SET_BIT6 0x40
Mengatur pin sebagai keluaran
Sama seperti pin input, pin output yang digunakan oleh Test LED onboard dan LED1 eksternal juga ditentukan di bagian pertama kode dengan masing-masing PIN.
# Tentukan Test_LED P14 # Tentukan LED1 P15
Pin-pin tersebut ditetapkan sebagai output dalam fungsi pengaturan menggunakan baris di bawah ini.
batal penyiapan (batal) { P14_Quasi_Mode; // Keluaran P15_Quasi_Mode; // Keluaran P16_Input_Mode; }
Baris ini juga didefinisikan dalam file header Function_define.h di mana ia menetapkan bit pin sebagai P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . The SET_BIT6 juga didefinisikan dalam file header yang sama sebagai-
#tentukan SET_BIT4 0x10
Loop Sementara Tak Terbatas
A Hardware, jika terhubung dengan power dan bekerja dengan sempurna yang seharusnya memberikan output secara terus menerus, aplikasi tidak pernah berhenti. Itu melakukan hal yang sama untuk waktu yang tidak terbatas. Di sinilah fungsi loop sementara yang tak terbatas. Aplikasi di dalam while loop berjalan tanpa batas.
sementara (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); jika (SW == 1) {LED1 = 0; } lain {LED1 = 1; }}}
Sementara loop di atas mengedipkan led sesuai nilai sw_delay dan juga memeriksa status SW. Jika sakelar ditekan, P1.6 akan tinggi, dan dengan demikian ketika ditekan, status baca akan menjadi 1. Dalam situasi ini, untuk saat ini, sakelar ditekan dan port P1.6 tetap tinggi, LED1 akan menyala.
Pemrograman N76E003 dan Memverifikasi Output
Dalam memulai tutorial N76E003, kami telah mempelajari cara memprogram N76E003, jadi kami hanya akan mengulangi langkah yang sama di sini untuk memprogram papan kami. Kode berhasil dikompilasi dan mengembalikan 0 peringatan dan 0 Kesalahan dan di-flash menggunakan metode flashing default oleh Keil.
Seperti yang Anda lihat pada gambar di atas, LED eksternal kami menyala ketika saya menekan tombol tekan. Pekerjaan lengkap proyek dapat ditemukan di video yang ditautkan di bawah ini. Semoga Anda menikmati tutorial ini dan mempelajari sesuatu yang berguna jika Anda memiliki pertanyaan, tinggalkan di bagian komentar di bawah. Anda juga dapat menggunakan forum kami untuk mengajukan pertanyaan teknis lainnya.