Antarmuka LED adalah hal pertama, yang akan coba dilakukan saat memulai dengan mikrokontroler apa pun. Jadi di sini, di tutorial ini kita akan menghubungkan LED dengan mikrokontroler 8051, dan akan menulis Program C untuk mengedipkan LED. Kami telah menggunakan mikrokontroler AT89S52 yang sangat populer, dari keluarga 8.051, oleh ATMEL.
Sebelum membahas lebih detail, kita harus mendapatkan gambaran singkat tentang mikrokontroler AT89S52. Ini adalah mikrokontroler 40 pin, dan memiliki 4 port (P0, P1, P2, P3), setiap port memiliki 8 pin. Kita dapat menganggap setiap port sebagai register 8 bit, dari sudut pandang perangkat lunak. Setiap pin memiliki satu jalur Input / output, artinya setiap pin dapat digunakan untuk input maupun output, yaitu untuk membaca data dari suatu alat seperti sensor atau untuk memberikan outputnya kepada suatu perangkat output. Beberapa pin memiliki fungsi Ganda, yang telah disebutkan dalam braket pada Diagram Pin di bawah ini. Fungsi ganda seperti untuk interupsi, penghitung, pengatur waktu dll.
AT89S52 memiliki dua jenis memori, pertama RAM yang memiliki memori 256 Bytes dan kedua adalah EEPROM (Electronically Erasable and Programmable Read Only Memory) yang memiliki memori 8k byte. RAM digunakan untuk menyimpan data selama eksekusi program dan EEPROM digunakan untuk menyimpan Program itu sendiri. EEPROM adalah memori flash yang kami gunakan untuk membakar program.
Diagram Sirkuit dan Penjelasannya
Kami menggunakan pin salah satu port 1 untuk menghubungkan LED. Dalam pemrograman C embedded kita dapat mengakses PIN 1 dari port 1 dengan menggunakan P1_0. Kami telah menghubungkan osilator kristal dengan frekuensi 11.0592MHz ke PIN 19 dan 18 yaitu XTAL1 dan XTAL2. Osilator kristal digunakan untuk menghasilkan pulsa jam, dan pulsa jam digunakan untuk memberikan rata-rata perhitungan waktu, yang wajib untuk menyinkronkan semua peristiwa. Jenis kristal yang digunakan hampir di setiap peralatan digital modern seperti di komputer, jam tangan dll. Kristal yang paling umum digunakan adalah kuarsa. Ini adalah rangkaian osilator resonansi dan kapasitor digunakan untuk mengosilasi kristal, jadi kami telah menghubungkan kapasitor 22pf di sini. Anda dapat membaca tentang "sirkuit resonansi" untuk mengetahui lebih lanjut.
The diagram rangkaian untuk LED interfacing dengan mikrokontroler 8051 89S52 ditunjukkan pada gambar di atas. Pin 31 (EA) terhubung ke Vcc, yaitu pin rendah yang aktif. Ini harus terhubung ke Vcc saat kita tidak menggunakan memori eksternal. Pin 30 (ALE) dan pin 29 (PSEN) digunakan untuk menghubungkan mikrokontroler ke memori eksternal dan Pin 31 memberitahu mikrokontroler untuk menggunakan memori eksternal, saat terhubung ke Ground. Kami tidak menggunakan memori eksternal jadi kami menghubungkan Pin31 ke Vcc.
Pin 9 (RST) adalah PIN reset, digunakan untuk mereset mikrokontroler dan program dimulai lagi dari awal. Ini mengatur ulang mikrokontroler ketika terhubung ke TINGGI. Kami telah menggunakan rangkaian reset standar, resistor 10k ohm dan Kapasitor 1uF untuk menghubungkan pin RST.
Nah yang menarik disini adalah kita menghubungkan LED secara terbalik, artinya kaki negatif dengan PIN mikrokontroler, karena mikrokontroler tidak memberikan daya yang cukup untuk menyalakan LED, jadi disini LED berjalan pada logika negatif seperti saat pin P1_0 adalah 1 kemudian LED akan disetel OFF dan ketika pin output 0 maka LED akan ON. Jika keluaran PIN adalah 0, ia berperilaku seperti ground dan LED menyala.
Penjelasan Kode
Header REGX52.h telah dimasukkan untuk memasukkan definisi register dasar. Ada banyak jenis variabel dan konstanta dalam C tertanam seperti int, char, unsigned int, float dll, Anda dapat mempelajarinya dengan mudah. Disini kita menggunakan unsigned int yang range dari 0 sampai 65535. Kita menggunakan “for loop” untuk membuat delay, sehingga LED akan ON untuk beberapa waktu (P1_0 = 0, logika LED negatif) dan dan OFF (P1_0 = 1, logika LED negatif) untuk waktu tunda. Umumnya ketika “for loop” berjalan sebanyak 1275 kali, memberikan delay sebesar 1ms, maka kita telah membuat fungsi 'delay' untuk membuat DELAY dan memanggilnya dari program utama (main ()). Kita bisa melewatkan waktu DELAY (dalam ms) sambil memanggil fungsi "delay" dari fungsi utama. Dalam program, "While (1)" berarti program akan dijalankan tanpa batas.
Saya menjelaskan secara singkat, bagaimana 1275 kali menjalankan loop "for" memberikan penundaan 1ms:
Pada 8051, 1 siklus mesin membutuhkan 12 pulsa kristal untuk dieksekusi dan kami telah menggunakan kristal 11.0592Mhz.
Jadi waktu yang dibutuhkan untuk 1 siklus mesin: 12 / 11.0592 = 1.085us
Jadi 1275 * 1.085 = 1.3ms, 1275 kali loop "for" menghasilkan penundaan hampir 1ms.
Penundaan waktu yang tepat yang dihasilkan oleh program “C” sangat sulit untuk dihitung, jika diukur dari osiloskop (CRO), karena (j = 0; j <1275; j ++) memberikan penundaan hampir 1ms.
Sehingga kita dapat memahami hanya dengan melakukan interfacing LED dengan mikrokontroler 8051, bahwa dengan pengkodean sederhana itu kita dapat berinteraksi dan mengontrol perangkat keras melalui perangkat lunak (pemrograman) menggunakan mikrokontroler. Juga kita dapat memanipulasi setiap port dan pin mikrokontroler melalui pemrograman.