Pada 1980 intel memperkenalkan mikrokontroler MCS51 dengan tingkat integrasi tinggi yang mengandung lebih dari 6000 transistor, rom internal yang digunakan adalah EEROM dengan kapasitas memori 4 kbyte ROM (internal), 128 byte RAM internal, 32 I/O pin siap pakai, serial port 2 buah 16 bit timer/pencacah dan 6 sumber instruksi.
Figure 1. Diagram Blok mikrokontroler AT89s51
mikrokontroler AT89S51 terdiri dari 40 pin yaitu 32 pin I/O, 2 pin timer, 2 pin input dan output osilator, 2 pin serial input dan output serta 2 pin external input dan output
Figure 2. Susunan pin AT89S51
Fungsi kaki-kaki pin AT89S51
- Port 0 : merupakan Port I/O 8 bit dua-arah. Port ini digunakan sebagai multipleks bus alamat rendah dan bus data selama pengaksesan ke eksternal memori.
- Port 1 : merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung.
- Port 2 : merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung.
- Port 3 : merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung. Setiap pin dapat diakses secara operasi tiap bit atau byte
- RST : digunakan me-reset register internal.
- ALE : Address Latch Enable, digunakan untuk memberikan sinyal latch pada alamat rendah pada multipleks bus adress dan data jika memakai memori eksternal
- PSEN (Program Strobe Enable) : mengaktifkan EPROM luar.
- VPP atau EA (External Access) : kondisi high untuk menjalankan program memori internal dan low untuk menjalankan memori eksternal
- XTAL1, XTAL2 : merupakan input dan output kristal clock.
- VCC : tegangan catu +5 V
Konstruksi IC AT89S51 memerlukan tambahan seperti membentuk rangkaian reset, catu daya 5 Volt dan rangkaian osilator untuk clock dalam mempercepat kerja mikrokontroler Rangkaian reset memerlkan sebuah kapasitor 10 mikro-Farad dan resistor 10 kilo-Ohm Rangkaian osilator memerlukan dua buah kapasitor 30 pico-Farad dan Xtal maksimal 24 MHz
- Rangkaian reset memerlukan sebuah kapasitor 10 mikro-Farad dan resistor 10 kilo-Ohm
- Rangkaian osilator memerlukan dua buah kapasitor 30 pico-Farad dan Xtal maksimal 24 MHz
Figure 3. Fitur tambahan mikrokontroler
Ada 2 memori yang terpakai dalam mikrokontroler
- Read Only Memory (ROM) yang disebut dengan MEMORI PROGRAM karena berisikan program untuk kerja
- Read access Memory (RAM) yang disebut dengan MEMORI DATA karena berisi data yang telah program jalankan. Besar memori RAM adalah 128 byte
UART (Universal asynchronous Receive Transmiter) sebagai komunikasi data secara seri (RXD dan TXD) pada kaki P1.0 dan P1.1
Timer 0 dan Timer 1 masing-masing adalah untaian pencacah biner 16 bit di dalam chip yang dipakai sebagai sarana I/O dan bekerja menurut fungsi waktu yang berasal dari osilator kristal dan memakai kaki P3.4 dan P3.5
Terdapat lima sumber pembangkit interupsi yaitu INT0 dan INT1 pada kaki P3.2 dan P3.3 serta interpsi lainnay pada sarana komunikasi data seri dan dari sistem Timer 0 dan Timer 1
PENGENALAN BAHASA C
bahasa yang dipakai dalam membuat program yang akan diinputkan ke mikrokontroller AT89C51 adalah bahas C
Figure 4. Berikut contoh penulisan program bahasa C
Pada gambar terdapat titik-titik yang kosong yang mana akan diisikan
- tipe data (seperti Char, Int, Float, Double dan Void)
- konstanta (nilai yang tidak bisa diubah)
- variabel (mewakili nilai tertentudalam proses program)
- deklarasi (pengenal dalam program ; //......... atau #define .....)
- operator (seperti “+”,”-“,”/”.”*” dan “=” )
- komentar program ( tidak diproses dalam program)
- penyeleksian kondisi (seperti “if...”, “if...else” dan “switch ... case ... default ...”)
- Perulangan (seperti “While”, “Do ... While ...” dan “for ...”)
- Aray (kumpulan nilai data bertipe sama dalam urutan tertentu yang menggunakan nama sama)
- Fungsi ( bagian program yang bertujuan mengerjakan tugas tertentu dan terletak terpisah dari program yang memanggilnya)
- Struktur (merupakan sekelompok data (variabel) yang mempunyai tipe sama atau berbeda tetapi dikemas dalam satu nama)
- Pointer (suatu variabel yang berisi alamat memori variabel lain)
- Penyisipan nilai asembli
- fungsi naked (sebagai membangkitkan fungsi interupsi dengan kata kunci “_naked”.
APLIKASI LAMPU LED DENGAN MIKROKONTROLER
Berikut rangkaian lampu led yang terpasang engan memakai alat mikrokontroler AT89S51
Figure 5. Rangkaian lampu led
programnya sebagai berikut
//Program 3.1. LED Berkedip
/*------------------------------------------*/
/* deklarasi register AT89c51 */
/*------------------------------------------*/
#include <at89x51.h>
/*------------------------------------------*/
/* fungsi tunda 1 milidetik (kira-kira) */
/*------------------------------------------*/
void tunda1ms()
{
int i;
for(i=0;i<150;i++);
}
/*--------------------------------------------*/
/* fungsi tunda n milidetik */
/*--------------------------------------------*/
void tunda(int n)
{
int i;
for (i=0; i<n;i++)
tunda1ms();
}
/*----------------------------------------------*/
/* Program utama */
/*----------------------------------------------*/
void main()
{
char a;
char b;
a=0x0FF;
b=0x000;
/*-----------------------------------*/
/* melakukan loop terus-menerus */
/*-----------------------------------*/
while(1)
{
P0= a; //mengeluarkan dataLED satu persatu
tunda(1000); //sehingga efeknya seperti LED berjalan
P0= b; //mengeluarkan dataLED satu persatu
tunda(1000); //sehingga efeknya seperti LED berjalan
}
}
APLIKASI SEVEN SEGMENT DENGAN MIKROKONTROLER
Ada dua jenis seven segmen yaitu common catoda dan common anoda sehingga bentuk rangkaian akan berbeda. disini digunakan seven segmen common anoda
Figure 6. rangkaian aplikasi penggerak seven segment tunggal dengan BCD
Programnya sebagai berikut
// Program 7.2. Sevent Segmen Tunggal
/*-----------------------------------*/
/* deklarasi register AT89c51 */
/*-----------------------------------*/
#include <at89x51.h>
/*--------------------------------------*/
/* fungsi tunda 1 milidetik (kira-kira) */
/*--------------------------------------*/
void tunda1ms()
{
int i;
for(i=0;i<100;i++);
}
/*--------------------------*/
/* fungsi tunda n milidetik */
/*--------------------------*/
void tunda(int n)
{
int i;
for (i=0; i<n;i++)
tunda1ms();
}
/*----------------------*/
/* fungsi utama */
/*----------------------*/
void main()
{
/*-------------------------------*/
/* melakukan loop terus-menerus */
/*------------------------------*/
while(1)
{
P3=0x01;
tunda(1000);
P3=0x09;;
tunda(1000);
}
}
APLIKASI TOMBOL DENGAN MIKROKONTROLER
aplikasi tombol ini dipakai pada tombol yang dirangkai mengalir ke ground saat tombol ditekan sedangkan saat tombol tidak ditekan akan maka kondisi logika high
Figure 7. rangkaian pembacaan tombol 4X4
Programnya sebagai berikut:
//Program Tombol_4 program 8 buah tombol 2
/*---------------------------------*/
/* deklarasi register AT89c51 */
/*---------------------------------*/
#include <at89x51.h>
/*--------------------------------------*/
/* fungsi tunda 1 milidetik (kira-kira) */
/*--------------------------------------*/
void tunda1ms()
{
int i;
for(i=0;i<100;i++)
;
}
/*-------------------------------*/
/* fungsi tunda n milidetik */
/*-------------------------------*/
void tunda(int n)
{
int i;
for (i=0; i<n;i++)
tunda1ms();
}
void display(unsigned int x)
{
int digit1;
int digit2;
int digit3;
int digit4;
digit4=x/1000;
digit3=(x-digit4*1000)/100;
digit2=(x-digit4*1000-digit3*100)/10;
digit1=(x-digit4*1000-digit3*100-digit2*10);
P1=0x80+digit4;
tunda(10);
P1=0x40+digit3;
tunda(10);
P1=0x20+digit2;
tunda(10);
P1=0x10+digit1;
tunda(10);
}
/*---------------------------------*/
/* Program Utama */
/*---------------------------------*/
void main()
{
/* melakukan loop terus-menerus */
while(1)
{
if(P3==0x01)
{
display(1);
}
else if(P3==0x02)
{
display(2);
}
else if(P3==0x04)
{
display(3);
}
else if(P3==0x08)
{
display(4);
}
else if(P3==0x10)
{
display(5);
}
else if(P3==0x20)
{
display(6);
}
else if(P3==0x40)
{
display(7);
}
else if(P3==0x80)
{
display(8);
}
}
}
untuk rangkaian lainnya dapat didownload
disini
sumber referensi: Iswanto.2011.Belajar Mikrokontroler At89s51 Dengan Bahasa C.Yogyakarta:Penerbit Andi