Interface LED adalah perkara pertama, yang akan cuba dilakukan semasa memulakan mikrokontroler mana pun. Jadi di sini dalam tutorial ini kita akan menghubungkan LED dengan mikrokontroler 8051, dan akan menulis Program C untuk mengedipkan LED. Kami telah menggunakan mikrokontroler AT89S52 yang sangat terkenal, dari keluarga 8051, oleh ATMEL.
Sebelum menerangkan secara terperinci, kita harus mendapatkan idea ringkas mengenai mikrokontroler AT89S52. Ini adalah mikrokontroler 40 pin, dan mempunyai 4 port (P0, P1, P2, P3), setiap port mempunyai 8 pin. Kita boleh menganggap setiap port sebagai daftar 8 bit, dari sudut perisian. Setiap pin memiliki satu baris Input / output, berarti setiap pin dapat digunakan untuk input dan juga untuk output, yaitu untuk membaca data dari beberapa perangkat seperti sensor atau untuk memberikan outputnya ke beberapa perangkat output. Beberapa pin mempunyai fungsi Dual, yang telah disebutkan dalam kurungan dalam Pin Diagram di bawah. Dual berfungsi seperti untuk gangguan, kaunter, pemasa dll.
AT89S52 mempunyai dua jenis memori, pertama ialah RAM yang mempunyai memori 256 Byte dan yang kedua adalah EEPROM (Memori yang Boleh Dihapus Secara Elektronik dan Memori Hanya Boleh Diprogram) yang mempunyai 8k byte memori. RAM digunakan untuk menyimpan data semasa pelaksanaan program dan EEPROM digunakan untuk menyimpan Program itu sendiri. EEPROM adalah memori kilat yang kami gunakan untuk membakar program.
Rajah dan Penjelasan Litar
Kami menggunakan pin satu dari port 1 untuk menyambungkan LED. Dalam pengaturcaraan C tertanam kita dapat mengakses PIN 1 dari port 1 dengan menggunakan P1_0. Kami telah menghubungkan pengayun kristal frekuensi 11.0592MHz ke PIN 19 dan 18 iaitu XTAL1 dan XTAL2. Pengayun kristal digunakan untuk menghasilkan denyutan jam, dan denyut nadi digunakan untuk memberikan nilai untuk pengiraan waktu, yang wajib dilakukan untuk menyegerakkan semua peristiwa. Jenis kristal ini digunakan di hampir setiap peralatan digital moden seperti di komputer, jam tangan dan lain-lain. Crystal yang paling biasa digunakan ialah kuarza. Ini adalah rangkaian pengayun resonan dan kapasitor digunakan untuk mengayunkan kristal, jadi kami telah menghubungkan kapasitor 22pf di sini. Anda boleh membaca mengenai "litar resonan" untuk mengetahui lebih lanjut.
The gambarajah litar untuk membawa antara muka dengan mikropengawal 8051 89S52 ditunjukkan dalam rajah di atas. Pin 31 (EA) disambungkan ke Vcc, yang merupakan pin rendah aktif. Ini harus disambungkan ke Vcc apabila kita tidak menggunakan memori luaran. Pin 30 (ALE) dan pin 29 (PSEN) digunakan untuk menyambungkan mikrokontroler ke memori luaran dan Pin 31 menyuruh mikrokontroler menggunakan memori luaran, ketika disambungkan ke Ground. Kami tidak menggunakan memori luaran sehingga kami menghubungkan Pin31 ke Vcc.
Pin 9 (RST) adalah PIN set semula, digunakan untuk menetapkan semula mikrokontroler dan program sekali lagi bermula dari awal. Ia menetapkan semula mikrokontroler apabila disambungkan ke TINGGI. Kami telah menggunakan litar semula standard, perintang 10k ohm dan Kapasitor 1uF untuk menyambungkan pin RST.
Bahagian yang menarik di sini ialah kita menyambungkan LED secara terbalik, bermaksud kaki negatif dengan PIN mikrokontroler, kerana mikrokontroler tidak memberikan daya yang cukup untuk menyala LED, jadi di sini LED berjalan pada logik negatif seperti ketika, pin P1_0 adalah 1 maka LED akan diatur MATI dan apabila output pin 0 maka LED akan dihidupkan. Apabila output PIN adalah 0, ia berkelakuan seperti tanah dan cahaya LED.
Penjelasan Kod
Header REGX52.h telah dimasukkan untuk memasukkan definisi daftar asas. Terdapat banyak jenis pemboleh ubah dan pemalar dalam C tertanam seperti int, char, int unsigned, float dll, anda dapat mempelajarinya dengan mudah. Di sini kita menggunakan int yang tidak ditandatangani yang jaraknya antara 0 hingga 65535. Kami menggunakan "untuk gelung" untuk membuat penundaan, sehingga LED akan AKTIF untuk beberapa waktu (P1_0 = 0, logik LED negatif) dan dan MATI (P1_0 = 1, logik LED negatif) untuk masa yang tertunda. Umumnya apabila "untuk gelung" berjalan selama 1275 kali, memberikan kelewatan 1ms, jadi kita telah membuat fungsi 'delay' untuk membuat DELAY dan memanggilnya dari program utama (main ()) Kita dapat melewati waktu DELAY (dalam ms) sambil memanggil fungsi "delay" dari fungsi utama. Dalam program, "While (1)" bermaksud program itu akan berjalan tanpa batas.
Saya menerangkan secara ringkas, bagaimana 1275 kali larian "untuk" gelung memberikan kelewatan 1ms:
Pada tahun 8051, 1 kitaran mesin memerlukan 12 denyutan kristal untuk dilaksanakan dan kami telah menggunakan kristal 11.0592Mhz.
Oleh itu, masa yang diperlukan untuk 1 kitaran mesin: 12 / 11.0592 = 1.085us
Jadi 1275 * 1.085 = 1.3ms, 1275 kali gelung "untuk" memberikan kelewatan hampir 1ms.
Kelewatan masa yang tepat yang dihasilkan oleh program "C" sangat sukar untuk dikira, ketika mengukur dari osiloskop (CRO), kerana (j = 0; j <1275; j ++) memberikan kelewatan hampir 1 ms.
Oleh itu, kita dapat memahami dengan hanya menghubungkan LED dengan 8051 mikrokontroler, bahawa dengan pengekodan sederhana itu, kita dapat berinteraksi dan mengawal perkakasan melalui perisian (pengaturcaraan) menggunakan mikrokontroler. Kita juga boleh memanipulasi setiap port dan pin mikrokontroler melalui pengaturcaraan.