- Persediaan dan Keperluan Perkakasan
- Litar Antara Muka LED dan Tombol N76E003
- Rajah Pin-Out N76E003
- Program Kawalan GPIO Ringkas untuk N76E003
- Pengaturcaraan N76E003 dan Pengesahan Hasil
Dalam tutorial sebelumnya, kami menggunakan program LED berkedip asas sebagai permulaan dengan panduan N76E003, kami sudah belajar bagaimana mengkonfigurasi ID Keil dan mengatur persekitaran untuk memprogram unit mikrokontroler nuvoton N76E003. Inilah masanya untuk bergerak sedikit lebih jauh dan menggunakan antara muka GPIO asas untuk mengawal perkakasan tambahan. Sekiranya anda berminat, anda juga boleh melihat tutorial GPIO mikrokontroler lain yang disenaraikan di bawah-
- STM32 Nucleo64 dengan kawalan CubeMx dan TrueSTUDIO - LED
- STM8S dengan Kawalan GPIO Cosmic C
- PIC dengan Tutorial Blink LED MPLABX
- MSP430 dengan Code Composer Studio - Kawalan LED Ringkas
Sejak dalam tutorial sebelumnya, kami hanya menggunakan LED untuk berkedip dengan menggunakan pin IO sebagai output. Dalam tutorial ini, kita akan belajar bagaimana menggunakan pin IO lain sebagai input dan mengawal LED tambahan. Tanpa membuang banyak masa, mari kita menilai jenis persediaan perkakasan yang kita perlukan.
Persediaan dan Keperluan Perkakasan
Sebagai suis perlu digunakan sebagai input, perkara pertama yang kami perlukan adalah butang tekan. Kami juga memerlukan LED tambahan untuk dikendalikan dengan menekan butang itu. Selain daripada kedua-duanya, kami juga memerlukan perintang untuk membatasi arus LED dan perintang tambahan untuk tujuan penarik di seberang butang tekan. Ini akan ditunjukkan lebih lanjut di bahagian skematik. Komponen yang kita perlukan -
- Butang tekan (sebarang jenis suis sesaat secara khusus - Suis taktil)
- Sebarang warna LED
- Perintang 4.7k untuk tujuan tarik ke bawah
- Perintang 100R
Tidak ketinggalan, selain komponen di atas, kita memerlukan papan pengembangan berasaskan mikrokontroler N76E003 dan juga Pengaturcara Nu-Link. Selain itu, papan roti dan kabel penyambung juga diperlukan untuk menyambungkan semua komponen seperti yang ditunjukkan di bawah.
Litar Antara Muka LED dan Tombol N76E003
Seperti yang dapat kita lihat dalam skema di bawah ini, LED Uji yang berada di dalam papan pengembangan disambungkan pada port 1.4 dan LED tambahan disambungkan pada port 1.5. Perintang R3 digunakan untuk menghadkan arus LED.
Pada pin 1.6, butang tekan bernama SW disambungkan. Setiap kali butang ditekan, pin akan menjadi tinggi. Jika tidak, ia akan menjadi rendah oleh resistor tarik turun 4.7K R1. Anda boleh mengetahui lebih lanjut mengenai pull-up dan pull-down resistors sekiranya anda baru menggunakan konsep ini.
Pin juga merupakan pin berkaitan program yang dapat diakses oleh pengaturcara. Ia digunakan untuk mengirim data program. Walau bagaimanapun, kami akan melihat alasan di sebalik memilih pin tersebut serta mendapatkan maklumat yang adil mengenai pemetaan pin N76E003.
Rajah Pin-Out N76E003
The rajah pin N76E003 boleh dilihat di bawah Imej-
Seperti yang kita lihat, setiap pin mempunyai banyak fungsi dan dapat digunakan untuk tujuan yang berbeza. Mari kita ambil contoh. Pin 1.7 dapat digunakan sebagai interupsi, atau input analog atau sebagai operasi input-output tujuan umum. Oleh itu, jika ada pin digunakan sebagai pin I / O, fungsi masing-masing tidak akan tersedia.
Oleh kerana itu, pin 1.5 yang digunakan sebagai pin output LED, ia akan kehilangan PWM dan fungsi lain. Tetapi itu tidak menjadi masalah kerana fungsi lain tidak diperlukan untuk projek ini. Sebab di sebalik memilih pin 1.5 sebagai output dan pin 1.6 sebagai input, kerana adanya pin GND dan VDD terdekat untuk sambungan yang mudah.
Walau bagaimanapun, dalam mikrokontroler ini daripada 20 pin, 18 pin boleh digunakan sebagai pin GPIO. Pin 2.0 digunakan khusus untuk input Reset dan tidak dapat digunakan sebagai output. Selain pin ini, semua pin boleh dikonfigurasi dalam mod yang dijelaskan di bawah.
Seperti di lembar data, PxM1.n, dan PxM2.n adalah dua register yang digunakan untuk menentukan operasi pengendalian port I / O. Sekarang, menulis dan membaca port GPIO adalah perkara yang sama sekali berbeza. Kerana menulis ke daftar kawalan pelabuhan mengubah keadaan penyambungan port, sedangkan membaca port mendapat status keadaan logik. Tetapi untuk membaca port, mesti dimasukkan ke mod input.
Program Kawalan GPIO Ringkas untuk N76E003
Program lengkap yang digunakan dalam tutorial ini terdapat di bahagian bawah halaman ini, penjelasan kodanya adalah seperti berikut.
Menetapkan pin sebagai input
Mari mulakan dengan input terlebih dahulu. Seperti yang telah dibahas sebelumnya, untuk membaca status port, ia perlu ditetapkan sebagai input. Oleh itu, kerana kami telah memilih P1.6 sebagai pin suis input kami, kami telah menandakannya melalui baris coretan kod di bawah.
#tentukan SW P16
Pin yang sama ini perlu ditetapkan sebagai input. Oleh itu, pada fungsi persediaan, pin ditetapkan sebagai input menggunakan baris di bawah.
persediaan kosong (kekosongan) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Talian ini P16_Input_Mode; didefinisikan dalam fail header Function_define.h di "BSP include library" yang menetapkan bit pin sebagai P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . The SET_BIT6 juga ditakrifkan dalam fail header yang sama sebagai-
#tentukan SET_BIT6 0x40
Menetapkan pin sebagai output
Sama seperti pin input, pin output yang digunakan oleh LED Test onboard dan LED1 luaran juga ditentukan pada bahagian pertama kod dengan PIN masing-masing.
#define Test_LED P14 #define LED1 P15
Pin tersebut ditetapkan sebagai output dalam fungsi penyediaan menggunakan baris di bawah.
persediaan kosong (kekosongan) { P14_Quasi_Mode; // Output P15_Quasi_Mode; // Output P16_Input_Mode; }
Garis-garis ini juga ditakrifkan dalam fail tajuk Function_define.h di mana ia menetapkan bit pin sebagai P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . The SET_BIT6 juga ditakrifkan dalam fail header yang sama sebagai-
#tentukan SET_BIT4 0x10
Gelung Walaupun Tidak Terbatas
Perkakasan, jika disambungkan dengan kuasa dan berfungsi dengan sempurna yang semestinya memberikan output secara berterusan, aplikasi tidak akan berhenti. Ia melakukan perkara yang sama untuk masa yang tidak terbatas. Di sinilah fungsi loop tanpa had. Aplikasi di dalam gelung sementara berjalan tanpa had.
sementara (1) { Test_LED = 0; sw_delay (150); Ujian_LED = 1; sw_delay (150); jika (SW == 1) {LED1 = 0; } lain {LED1 = 1; }}}
Gelung di atas sementara berkedip dipimpin mengikut nilai sw_delay dan juga memeriksa status SW. Sekiranya suis ditekan, P1.6 akan tinggi, dan oleh itu apabila ditekan, status baca akan menjadi 1. Dalam keadaan ini, untuk sementara waktu, suis ditekan dan port P1.6 tetap tinggi, LED1 akan menyala.
Pengaturcaraan N76E003 dan Pengesahan Hasil
Semasa memulakan tutorial N76E003, kami telah mempelajari cara memprogram N76E003, jadi kami akan mengulangi langkah yang sama di sini untuk memprogram papan iklan kami. Kod berjaya disusun dan mengembalikan 0 amaran dan 0 Kesalahan dan berkelip menggunakan kaedah flashing lalai oleh Keil.
Seperti yang anda lihat dalam gambar di atas, LED luaran kami menyala ketika saya menekan butang tekan. Penyelesaian projek yang lengkap dapat dilihat dalam video yang dipautkan di bawah. Semoga anda menikmati tutorial dan mempelajari sesuatu yang berguna jika anda mempunyai sebarang pertanyaan, tinggalkan di bahagian komen di bawah. Anda juga boleh menggunakan forum kami untuk mengemukakan soalan teknikal yang lain.