Percobaan 1 DASAR MIKROKONTROLER Teori · Bahasa pemrograman yang ... Ketiklah algoritmanya dari...
Transcript of Percobaan 1 DASAR MIKROKONTROLER Teori · Bahasa pemrograman yang ... Ketiklah algoritmanya dari...
Praktikum Mikrokontroler 1
Percobaan 1
DASAR MIKROKONTROLER
Tujuan :
- Mengetahui rangkaian minimum sistem Mikrokontroler MCS-51
- Mengenal software pemrograman Mikrokontroler MCS-51
- Mengenal instruksi-instruksi pada Mikrokontroler MCS-51
- Dapat mengakses Port pada Mikrokontroler
Teori :
Mikrokontroler adalah suatu single chip yang didalamnya terdapat mikroprosesor, RAM, ROM, Timer
dan I/O Port dalam satu kesatuan, sehingga dalam menggunakannya tidak diperlukan penambahan RAM, ROM,
Timer dan I/O Port. Mikrokontroler juga ada yang memiliki Address Bus sehingga memungkinkan mikrokontroler
untuk menambahkan RAM, ROM, I/O Port dan Timer.
MCS-51 adalah nama keluarga mikrokontroler yang dibuat oleh Intel pada tahun 1981 yang produk
pertamanya adalah 8051 dan kemudian dikembangkan oleh perusahaan-perusahan lain. Beberapa jenis
mikrokontroler tersebut antara lain :
1. Intel
Mikrokontroler yang dikembangkan Intel adalah sebagai berikut:
Jenis ROM RAM TIMER I/O PINS
SERIALPORT
INTRSource
8051 4K 128 2 32 1 68052 8K 256 3 32 1 88031 0K 128 2 32 1 6
2. ATMEL
Mikrokontroler yang dikembangkan ATMEL adalah sebagai berikut:
Jenis ROM RAM TIMER I/O PINS
SERIALPORT
INTRSource
VCC PACK
AT89C51 4K 128 2 32 1 6 5 40AT89LV51 4K 256 2 32 1 6 3 40AT89C1051 1K 64 1 15 1 3 3 20AT89C2051 2K 128 2 15 1 6 3 20AT89C52 8K 256 3 32 1 8 5 40
AT89LV52 8K 128 3 32 1 8 3 40
3. Dallas
Mikrokontroler yang dikembangkan DALLAS adalah sebagai berikut :
Laboratorium Sistem Komputer STIKOM Surabaya
2 Praktikum Mikrokontroler
Jenis ROM RAM TIMER I/OPINS
SERIALPORT
INTRSource
VCC PACK
DS5000-8 8K 128 2 32 1 6 5 40DS5000-32 32K 256 2 32 1 6 5 40DS5000T-8 8K 64 2 32 1 6 5 40
Pada RAM internal 128 byte:
- 32 byte (00H-1FH) digunakan sebagai 4 bank register umum (R0-R7)
- 16 byte (20H-2FH) merupakan bagian internal memori yang dapat dialamati secara bit (bit addressable)
- 80 byte (30H-7FH) merupakan memori bebas (stack)
Berikutnya 128 byte SFR (Special Function Register) yang berisi kumpulan register yang mempunyai
fungsi khusus antara lain pengontrol timer, interupsi, komunikasi serial, dsb. 8031 mengijinkan penggunaan RAM
eksternal maksimal 64 Kbyte yang hubungannya digambarkan di bawah ini :
Dalam praktikum ini digunakan mikrokontroler jenis AT89C51 atau AT89S51, karena mikrokontroler
tersebut sangat mudah didapat, murah dan mempunyai fasilitas yang canggih. Bahasa pemrograman yang
digunakan adalah Assembly dan C/C++ untuk keluarga MCS-51.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 3
Parallel Port
Untuk melakukan hubungan dengan piranti di luar sistem, dibutuhkan alat I/O (input/output). Sesuai dengan namanya, alat I/O dapat menerima data dari mikrokontroler dan dapat pula memberi data ke mikrokontroler.
Ada dua macam perantara I/O yang dipakai yaitu piranti untuk hubungan serial (UART) dan piranti untuk hubungan paralel (PIO). Parallel port pada 89C51 adalah sebagai berikut:
1. Port 0 sebanyak 8 pins dan terletak di pin 32-39. Untuk menggunakan Port 0 sebagai output maupun input, masing-masing pin dihubungkan ke resistor pull up sebesar 10K. Ini karena P0 itu adalah open colector yang digunakan TTL chip, berbeda dengan P1, P2 dan P3. Contoh untuk mengirimkan data ke P0 dengan nilai 55H.
MOV A,#55H ; data dikirimkan ke ACC MOV P0,A ; data dari ACC dikirimkan ke P0
Selain sebagai output, port 0 juga dapat digunakan untuk input. Sebelum data dibaca oleh port 0, port 0 menulis data 1 ke semua pin. Setelah itu data dapat dibaca oleh port 0. Contoh program untuk membaca data :
MOV P0,#FFH ; menulis data 1 ke semua pin MOV A,P0 ; data dari P0 dikirimkan ke ACC
2. Port 1 berjumlah 8 pin (pin 1-8). Untuk menggunakan Port 1 sebagai output maupun input, port ini tidak memerlukan pull up external karena sudah tersedia pull up internal. Contoh program untuk mengirimkan data sebesar 55H:
MOV A,#55H ; data dikirimkan ke ACC MOV P1,A ; data dari ACC dikirimkan ke P1
Selain sebagai output port 1 juga dapat digunakan untuk input. Sebelum data dibaca oleh port 1, port 1 menulis data 1 ke semua pin. Setelah itu data dapat dibaca oleh port 1. Contoh program untuk membaca data :
MOV P1,#FFH ; menulis data 1 ke semua pin MOV A,P1 ; data dari P1 dikirimkan ke ACC
3. Port 2 jumlahnya ada 8 pin (pin 1-8). Untuk menggunakan Port 2 sebagai output maupun input, port ini tidak memerlukan pull up external karena sudah tersedia pull up internal. Contoh program untuk mengirimkan data sebaesar 55H:
MOV A,#55H ; data dikirimkan ke ACC MOV P2,A ; data dari ACC dikirimkan ke P2
Selain sebagai output, port 0 juga dapat digunakan untuk input. Sebelum data dibaca oleh port 2, port 2 menulis data 1 ke semua pin. Setelah itu data dapat dibaca oleh port 2. Contoh program untuk membaca data :
MOV P2,#FFH ; menulis data 1 kesemua pin MOV A,P2 ; data dari P2 dikirimkan ke ACC
Untuk program verify port 2 digunakan sebagai address MSB.
4. Port 3 menempati pin 10 sampai dengan pin 17 dengan jumlah 8 pin. Port 3 dapat digunakan sebagai input atau output. Port 3 tidak memerlukan pull-up resistor, sama dengan P1 dan P2 yang tidak memerlukannya. Port 3 mempunyai tambahan fungsi seperti Interrupt. P3.0 dan P3.1 digunakan untuk RxD dan TxD serial
Laboratorium Sistem Komputer STIKOM Surabaya
4 Praktikum Mikrokontroler
komunikasi signal. P3.2 dan P3.3 digunakan untuk Interrupt eksternal. Bit P3.4 dan P3.5 digunakan untuk Timer 0 dan 1. Sedangkan, P3.6 dan P3.7 digunakan untuk signal WR dan RD.
Prosedur Percobaan :
1. Aktifkan program FSI, kemudian ketik program di bawah ini :
a) LJMP MULAIORG 100H MULAI :
MOV A, #9CHADD A, #64HADD A, #07H
SELESAI :JMP SELESAI
b) LJMP MULAIORG 100H MULAI:
MOV A, #9CHADD A, #64HADDC A, #07H
SELESAI:JMP SELESAI
Simpan program pada direktori kerja anda
Jalankan program (Debug → Start), tekan F7 atau F8 untuk melakukan tracing program kemudian amati
perubahan nilai pada register ACC dan C pada kedua program diatas setelah itu tulis kesimpulan perbedaan
apa yang ada pada kedua program diatas.
2. Aktifkan program FSI, kemudian ketik program di bawah ini :
a) LJMP MULAIORG 100H MULAI:
MOV A, #81HMOV B, #25HMUL AB
SELESAI :JMP SELESAI
b) LJMP MULAIORG 100H MULAI:
MOV A, #81HMOV B, #25HDIV AB
SELESAI :JMP SELESAI
Simpan program pada direktori kerja anda.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 5
Jalankan program (Debug → Start), tekan F7 atau F8 untuk melakukan tracing program kemudian amati
perubahan nilai pada register ACC dan B pada kedua program diatas setelah itu tulis kesimpulan perbedaan
apa yang ada pada kedua program diatas.
3. Ketiklah algoritmanya dari program Assembly dibawah ini, kemudian jalankan tiap perintah :
Catatan : Listing program C/C++ berikut tidak dapat disimulasikan, karena hanya listing padanan dari
program Assembly disebelahnya.
a) LJMP MULAIORG 100HMULAI :
MOV A, #00HMOV R2, #0AH
ULANG :ADD A, #03HDJNZ R2, ULANG
SELESAI : JMP SELESAI
b) LJMP MULAIORG 100HMULAI :
MOV A, #10HMOV R1, #0AH
ULANG :DEC ADEC R1JNZ ULANG
DUA :MOV A, #0AH
ULANG2 :DEC AJZ SELESAIJMP ULANG2
SELESAI :JMP SELESAI
c) LJMP MULAIORG 100HMULAI:
MOV A, #06HAWAL :
CJNE A, #07H, BANDING1MOV R0, ASJMP LOOP
BANDING1 :JNC NEXTMOV R1, ASJMP LOOP
NEXT:MOV R2, A
Laboratorium Sistem Komputer STIKOM Surabaya
void main(){ ACC = 0; for (R2 = 0x0A; R2 > 0; R2 --) { ACC = ACC + 0x03; } while(1);}
void main(){ ACC = 0x10; R1 = 0x0A; do { ACC --; R1 --; } while (ACC != 0); ACC = 0x0A; while(ACC != 0) { ACC --; } while(1);}
void main(){ ACC = 0x06; do { if (ACC != 0x07) { if (C != 1)
R2 = ACC; else
R1 = ACC; } else R0 = ACC;
6 Praktikum Mikrokontroler
LOOP:INC ACJNE A, #09H, AWAL
STOP:JMP STOP
4. Ketik program dibawah ini :
LJMP MULAIORG 100HMULAI:
MOV A, #01HLOOP:
MOV P1, AMOV B, #02HMUL ABSJMP LOOP
Jalankan program dan perhatikan P1 (View → Hardware). Modifikasi program diatas agar P1 dibuat lampu berjalan mulai dari P1.7 sampai dengan P1.0 kemudian kembali lagi ke P1.7 begitu seterusnya.
5. Buat program untuk membaca nilai pada Port1, kemudian hasil pembacaan dibagi dengan 3, kemudian
hasilnya ditampilkan di Port2 dan sisanya ditampilkan di Port3.
Laboratorium Sistem Komputer STIKOM Surabaya
ACC++; } while(ACC != 0x09); while(1);}
Praktikum Mikrokontroler 7
Percobaan 2
AKSES PPI dan MOTOR STEPER
Tujuan :
- Mengetahui cara untuk mengakses PPI melalui Mikrokontroler.
- Mengetahui cara untuk mengontrol motor steper.
PPI 8255
Apabila kita memerlukan tambahan port paralel, kita dapat menggunakan IC 8255. PPI 8255 memiliki 3
buah port paralel yang masing-masing panjangnya 8 bit yaitu Port A, Port B dan Port C. Dan mempunyai alamat
sendiri-sendiri dan pada modul praktikum ini, Port A beralamat 0x0A000, Port B beralamat 0x0A001, Port C
beralamat 0x0A002 dan Control Word beralamat 0x0A003.
PPI 8255 merupakan chip I/O produksi Intel yang memiliki 3 buah port I/O yang masing-masing diberi
nama Port A, B dan C. Ketiga port tersebut dibagi menjadi 2 kelompok yaitu kelompok A yang terdiri atas Port A
dan Port C tinggi (bit 4 sampai dengan bit 7) dan kelompok B yang terdiri atas Port B dan Port C rendah (bit 0
sampai dengan bit 3). Tiap-tiap kelompok tersebut diatur oleh rangkaian kontrol untuk masing-masing kelompok.
Blok diagram PPI 8255 ditunjukkan dalam gambar 2.1.
Laboratorium Sistem Komputer STIKOM Surabaya
8 Praktikum Mikrokontroler
KONTROLGROUP A
GROUP A
PORT A
GROUP A
PORT C
GROUP B
PORT C
GROUP B
PORT B
KONTROLGOUP BKONTROL
LOGIKABACA/TULIS
BUFFERBUS DATA
8 BIT BUS DATAINTERNAL
POWERSUPLY
+5V
GND
D7-D0
RD
WR
A1
A0
RESET
CS
BUS DATABIDIRECTIONAL
I/OPA7-PA0
I/OPC7-PC4
I/OPC3-PC0
I/OPB7-PB0
Gambar 2.1 : Blok diagram PPI 8255
Di dalam PPI 8255 terdapat 8 bit penyangga bidirectional tiga keadaan (Buffer 3-state) untuk data
yang terhubung ke CPU, yang berarti bahwa data dapat dikirim atau diterima oleh penyangga dari komputer,
sedangkan keluaran masing-masing port memiliki penyangga (buffer) dan bersifat menahan (latch), sehingga data
yang dikeluarkan ke port akan tetap keadaannya selama tidak diubah atau chip di-reset.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 9
Tabel 2.1 : Nama pin dan keterangan chip PPI 8255
Simbol Nomor Pin Jenis KeteranganVCC 26 - Vcc: pin catu daya +5 volt.GND 7 - Pin GroundD0 - D7 27-34 I/O Data Bus : Jalur bus data bi-directional three-state yang
terhubung dengan data bus sistemRESET 35 I Reset : pin untuk menghapus data pada register kontrol,
dan semua port dan menset pada posisi input.
CS 6 I Chip Select : untuk mengaktifkan chip pada bus data agar dapat berkomunikasi dengan CPU.
RD 36 I Write : sinyal control dari CPU yang dipergunakan untuk mengambil kontrol register dan data ke dalam chip.
AO – A1 8,9 I Address : mengontrol pemilihan salah satu dari tiga port atau kontrol register.
PA0 – PA7 1-4, 37-40 I/O Port A : 8-bit input dan output portPB0 – PB7 18-25 I/O Port B : 8-bit input dan output portPC0 – PC7 10-17 I/O Port C : 8-bit input dan output port
Operasi PPI 8255 yang berhubungan dengan pin-pin masukan dapat dilihat dalam tabel 2.4.
Tabel 2.2 : Mode Operasi PPI 8255
A1 A0 RD WR CS Operasi yang terjadiOperasi baca0 0 0 1 0 Port A ke bus data0 1 0 1 0 Port B ke bus data1 0 0 1 0 Port C ke bus dataOperasi tulis0 0 1 0 0 Bus data ke port A0 1 1 0 0 Bus data ke port B1 0 1 0 0 Bus data ke port C
1 1 1 0 0 Bus data ke control register
Terdapat 3 macam mode operasi PPI 8255 yang dapat diprogram ke masing-masing port, yaitu :
♦ Mode 0 : Basic I/O
Pada mode 0, port A, B dan C dapat dioperasikan sebagai port masukan atau port keluaran. Untuk port C pada mode ini
dibagi menjadi 2 saluran keluaran atau masukan, yang masing-masing saluran terdiri atas 4 bit. Saluran pertama pin PC 0-
PC3 dan saluran kedua pin PC4 - PC7.
♦ Mode 1 : Strobe I/O
Pada mode 1 port A dan port B bisa digunakan sebagai port masukan atau keluaran. Sedangkan port C berfungsi sebagai
sinyal kontrol perpindahan data dari atau menuju port A dan port B.
♦ Mode 2 : Bidirectional Bus
Sedangkan untuk mode 2, port yang dapat digunakan untuk port masukan atau keluaran hanya port A, dan port C
Laboratorium Sistem Komputer STIKOM Surabaya
10 Praktikum Mikrokontroler
digunakan sebagai sinyal kontrol perpindahan data dari atau menuju port A.
Pemilihan mode tersebut dilakukan dengan cara mengisikan suatu control word pada control word
register. Format control word register dapat dilihat dalam gambar 2.10. Dalam control word tersebut berisi
informasi tentang mode operasi yang diprogramkan untuk suatu port. Bila diprogram untuk operasi mode 1 atau
mode 2, maka ada dua port yang bekerja sama untuk melaksanakan penerimaan dan pengeluaran data dan
memberikan sinyal untuk kontrol.
Dalam mode 0, ketiga port PPI 8255 hanya berfungsi sebagai port masukan atau keluaran biasa, artinya
data dapat diambil atau diletakkan dari dan ke port secara langsung dengan instruksi IN/OUT ke Port 8255 tanpa
ada sinyal lain yang mengatur proses pengambilan atau peletakan data.
Semua port yang bekerja sebagai port keluaran akan bersifat menahan ( latch), artinya data yang sudah
diletakkan ke port keluaran masih tetap selama tidak diubah oleh data lain yang ditulis ke port yang sama atau
akibat adanya sinyal RESET.
Gambar 2.2 : Format control word PPI 8255
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 11
Dalam mode 0 tersebut ada 16 macam fungsi port yang dapat dibentuk dari kombinasi bit-bit D0 sampai D4 pada
control word register. Ke-enambelas macam fungsi port dan control word dapat dilihat pada tabel 2.3
Tabel 2.3 : Enam belas macam control word pada mode 0
D4 D3 D1 D0
Group A Group BControl Word(Hexadesimal)Port A
Port C(Upper)
Port BPort C
(Lower)0 0 0 0 Output Output Output Output 800 0 0 1 Output Output Output Input 810 0 1 0 Output Output Input Output 820 0 1 1 Output Output Input Input 830 1 0 0 Output Input Output Output 880 1 0 1 Output Input Output Input 890 1 1 0 Output Input Input Output 8A0 1 1 1 Output Input Input Input 8B1 0 0 0 Input Output Output Output 901 0 0 1 Input Output Output Input 911 0 1 0 Input Output Input Output 921 0 1 1 Input Output Input Input 931 1 0 0 Input Input Output Output 981 1 0 1 Input Input Output Input 991 1 1 0 Input Input Input Output 9A1 1 1 1 Input Input Input Input 9B
MOTOR STEPER
Gambar 2.3 Blok diagram steper motor
Stepper motor, baik yang mempunyai magnet permanen dan hybrid mempunyai 5 atau 6 kabel
sebagaimana yang ditunjukkan Gambar 2.3, kedua stepping motor tersebut mempunyai center tap pada dua
winding-nya. Pada saat digunakan center tap dari kedua winding tersebut dihubungkan dengan power negatif, dan
kedua kabel winding dihubungkan ke power positif untuk membalik arah.
Laboratorium Sistem Komputer STIKOM Surabaya
12 Praktikum Mikrokontroler
Gambar 2.3 menunjukkan bagian motor yang mempunyai magnet permanen maupun hybrid yang
bergerak 30 derajat tiap step, dalam hal tersebut perbedaan antara kedua tipe motor ini tidak begitu besar. Winding
motor nomor 1 akan didistribusikan antara kutub stator bagian atas dan bawah, sementara winding motor no 2 akan
didistribusikan pada kutub bagian kanan dan kiri. Rotor ini bersifat permanen dengan 6 kutub, 3 kiri dan 3 kanan,
disusun melingkar.
Untuk memperoleh sudut stepping yang lebih akurat, rotor harus mempunyai kutub-kutub yang lebih
banyak dan haruslah proporsional. Motor 30 derajat pada Gambar 2.3 adalah design motor permanen yang paling
umum. Meskipun untuk stepping sebesar 15 dan 7.5 derajat juga dapat dilakukan. Motor magnet permanen dengan
step 1.8 derajat juga bisa dibuat, deimikian juga dengan motor hybrid yang memiliki stepping sebesar 3.6 dan 1.8
dengan ketepatan resolusi stepping sebesar 0.72 juga dapat dibuat.
Untuk memutar stepper motor ada beberapa cara sebagai berikut:
1. Half step yaitu dengan menggeser 1 bit baik ke arah kanan ataupun sebaliknya tergantung dari arah putaran
yang diinginkan.
Contohnya manipulasi bitnya adalah sebagai berikut
1 0 0 0 Step 1
0 1 0 0 Step 2
0 0 1 0 Step 3
0 0 0 1 Step 4
kembali ke Step 1
Untuk memutar ke arah yang berlawanan perlu manipulasi bit sebagai berikut:
0 0 0 1 Step 1
0 0 1 0 Step 2
0 1 0 0 Step 3
1 0 0 0 Step 4
kembali ke Step 1
2. Full step dengan meggeser 2 bit yang saling berdekatan sebanyak 1 pergeseran baik ke arah kanan maupun
kiri tergantung putaran motornya.
Contoh manipulasi bitnya adalah sebagai berikut:
1 1 0 0 Step 1
0 1 1 0 Step 2
0 0 1 1 Step 3
1 0 0 1 Step 4
kembali ke Step 1
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 13
Untuk memutar ke arah yang berlawanan perlu manipulasi bit sebagai berikut:
0 0 1 1 Step 1
0 1 1 0 Step 2
1 1 0 0 Step 3
1 0 0 1 Step 4
kembali ke Step 1
Pada modul mikrokontroler ini stepper motor dihubungkan dengan PPI 8255 yaitu PortA.0 s.d. PortA.3.
Untuk menghubungkan PPI 8255 dengan motor steper perlu interface lagi yaitu IC buffer 74LS245 dan
ULN2803. Mengenai karakteristik dari komponen itu dijelaskan sebagai berikut :
• 74LS245
7 4 L S 2 4 5
A 02
A 13
A 24
A 35
A 46
A 57
A 68
A 79
G1 9 D I R
1
B 01 8
B 11 7
B 21 6
B 31 5
B 41 4
B 51 3
B 61 2
B 71 1
- Supply Voltage 7V- Input Voltage :- DIR or G 7V- A or B 5.5V- Operating Free Air Temperature Range 0º C to 70º C
- Storage Temperature range 65º C to 150º C
74LS245 digunakan sebagai buffer didalam mikroprosesor dan juga dapat digunakan untuk transfer data
dua arah. 74LS245 mempunyai trnasfer data dua arah bus A dan bus B dimana bus tersebut diatur oleh DIR, lihat
tabel kebenaranya.
ENABLE
GDIRECTION CONTROL
DIROPERATOIN
LLH
LHX
B data to A busA data to B bus
isolation
Laboratorium Sistem Komputer STIKOM Surabaya
14 Praktikum Mikrokontroler
• ULN2803
Rating Symbol Value UnitOutput Voltage VO 50 VInputVoltage(Except ULN2801) VI 30 VCollector Current – Continuous IC 500 mABase Current – Continuous IB 25 mAOperating Ambient Temperature
Range
TA 0 to +70 C
Storage Temperature Range Tstg -55 to 150 CJunction Temperature TJ 125 C
8-bit 50V 500 mA TTL compatibel dengan driver input NPN Darlington. Driver ini sangat baik untuk
beban seperti lampu, relay head printer dan juga cocok untuk alat lain yang mempunyai beban yang hampir sama
baik untuk computer, industri, aplikasi praktis. Driver ini mempunyai kemampuan output open collector dan diode
penahan untuk tekanan. ULN2803 adalah didesign compatible dengan standart TTL families.
Prosedur Percobaan:
1. Ketik program di bawah ini kemudian jalankan.
PORT_A EQU 0A000HCW EQU 0A003H
LJMP MULAIORG 100HDELAY: PUSH ACC
MOV A, #0FFHLOOP1: PUSH ACC
MOV A, #0FFHLOOP2: DEC A
CJNE A, #00H, LOOP2POP ACCDJNZ ACC, LOOP1POP ACCRET
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>#include <timer.h>
at 0x0A000 xdata unsigned char PORT_A;at 0x0A003 xdata unsigned char CW;
unsigned char simpan;
void main(){ TMOD = 0x01; delay(100); CW = 0x80; delay(100); simpan = 0x01; while(1) { PORT_A = simpan; delay(1000); simpan = simpan << 1; }}
Praktikum Mikrokontroler 15
MULAI:LCALL DELAYMOV DPTR, #CWMOV A, #80HMOVX @DPTR, AMOV DPTR, #PORT_AMOV A, #01H
ULANG:MOVX @DPTR, ARL ALCALL DELAYSJMP ULANG
Modifikasi program diatas dengan mengganti RL menjadi RR
2. Buat program port A sebagai input dan port C sebagai output. Kemudian data yang diinputkan di port A
dapat ditampilkan di port C.
3. Buat program untuk memutar stepper motor dengan metode half step dan full step.
4. Buat program untuk memutar stepper motor ke kiri selama beberapa saat kemudian ke arah sebaliknya
dengan metode full step.
Laboratorium Sistem Komputer STIKOM Surabaya
16 Praktikum Mikrokontroler
Percobaan 3
Seven segment
Tujuan :
- Mengetahui cara untuk mengakses seven segment dengan metode scanning.
Teori :
Pada praktikum ini menggunakan seven segment jenis common anoda (common positif) sebanyak 8
buah. Metode scanningnya menggunakan IC decoder 74LS138 yang digunakan untuk memilih salah satu dari 8
buah seven segment. Karena seven segment yang digunakan berjenis common anoda, maka output dari 74LS138
harus di inverter terlebih dahulu sebelum dihubungkan ke common seven segment. Input dari 74LS138
dihubungkan ke PA.4 s.d. PA.6 pada PPI. Sedangkan sebagai driver seven segment digunakan IC 74LS47 (BCD to
seven segment) yang dipararelkan ke semua seven segment. Sedangkan input dari 74LS47 dihubungkan ke PA.0
s.d. PA.3 pada PPI sebagai penentu bilangan berapa yang akan ditampilkan ke seven segment.
• 74LS138
7 4 L S 1 3 8
A1
B2
C3
G1
6
G 2 A4
G 2 B5
Y 01 5
Y 11 4
Y 21 3
Y 31 2
Y 41 1
Y 51 0
Y 69
Y 77
5 v
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 17
• 74LS47
74LS47 adalah driver untuk mengubah bilangan BCD menjadi data seven segmen, dan seven segmen yang
digunakan adalah common anode.
7 4 L S 4 7
D 07
D 11
D 22
D 36
B I / R B O4 R B I5 L T3
A1 3
B1 2
C1 1
D1 0
E9
F1 5
G1 4
VC
C16
GN
D8
5 v
5 v
Dec Inputs BI Output
LT RBI D C B A a b c d e f g
0
1
2
3
H
H
H
H
H
X
X
X
L L L L
L L L H
L L H L
L L H H
H
H
H
H
ON
OFF
ON
ON
ON
ON
ON
ON
ON
ON
OFF
ON
ON
OFF
ON
ON
ON
OFF
ON
OFF
ON
OFF
OFF
OFF
OFF
OFF
ON
ON
0
1
2
34
5
6
7
H
H
H
H
X
X
X
X
L H L L
L H L H
L H H L
L H H H
H
H
H
H
OFF
ON
OFF
ON
ON
OFF
OFF
ON
ON
ON
ON
ON
OFF
ON
ON
OFF
OFF
OFF
ON
OFF
ON
ON
ON
OFF
ON
ON
ON
OFF
4
5
6
78 H X H L L L H ON ON ON ON ON ON
Laboratorium Sistem Komputer STIKOM Surabaya
18 Praktikum Mikrokontroler
9
10
11
H
H
H
X
X
X
H L L H
H L H L
H L H H
H
H
H
ON
OFF
OFF
ON
OFF
OFF
ON
OFF
ON
OFF
ON
ON
OFF
ON
OFF
ON
OFF
OFF12
13
14
15
H
H
H
H
X
X
X
X
H H L L
H H L H
H H H L
HH H H
H
H
H
H
OFF
ON
OFF
OFF
ON
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
ON
ON
OFF
OFF
OFF
ON
OFF
ON
ON
ON
OFF
ON
ON
ON
OFF
BI
RBI
LT
X
H
L
X
L
H
XX X X
L L L L
XX X X
L
L
H
OFF
OFF
ON
OFF
OFF
ON
OFF
OFF
ON
OFF
OFF
ON
OFF
OFF
ON
OFF
OFF
ON
OFF
OFF
ON
• Seven Segmen
Seven segment adalah sebuah display yang dapat menampilkan angka mulai 0 s.d. 9, dengan menggunakan
driver 74LS47. Ada dua model dari seven segment yaitu : common anode dan common cathode.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 19
SS1
7-Segment1 2 3 4 5
678910g f
co1a b
.cco2de
Laboratorium Sistem Komputer STIKOM Surabaya
20 Praktikum Mikrokontroler
Prosedure Percobaan:
.1 Ketik program di bawah ini, kemudian jalankan.
PORT_A EQU 0A000HCW EQU 0A003H
LJMP MULAIORG 100H
DELAY :PUSH ACCMOV A, #0FFH
LOOP1 :PUSH ACCMOV A, #0FFH
LOOP2 :DEC ACJNE A, #00H, LOOP2POP ACCDJNZ ACC, LOOP1POP ACCRET
MULAI :LCALL DELAYMOV DPTR, #CWMOV A, #80HMOVX @DPTR, AMOV DPTR, #PORT_A
ISI : MOV A, #00H
ULANG :MOVX @DPTR, AADD A, #01HLCALL DELAYCJNE A, #0AH, ULANGSJMP ISI
2. Buatlah program untuk menampilkan angka 1 pada seven segment yang paling kiri, angka 2 untuk seven
segment di sampingnya dan seterusnya sampai angka 8 pada seven segment yang paling kanan.
3. Buatlah program counter-up pada 2 seven segment yang paling kanan, jika angka sudah menunjukan 99 maka
counter akan berhenti.
4. Buatlah program counter pada 2 seven segment LSB. Jika Port C bernilai 1, maka counter-up akan berjalan
dan akan berhenti saat Port C bernilai 0. Counter akan kembali bernilai 0 jika telah mencapai nilai maksimal.
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>#include <timer.h>
at 0x0A000 xdata unsigned char PORT_A;at 0x0A003 xdata unsigned char CW;
unsigned char simpan;
void main(){ TMOD = 0x01; delay(100); CW = 0x80; delay(100);
while(1) { simpan = 0; do { PORT_A = simpan; delay(1000); simpan ++; } while(simpan != 10); }}
Praktikum Mikrokontroler 21
Percobaan 4
TIMER dan COUNTER
Tujuan :
- Mengetahui cara penggunaan Timer
- Mengetahui cara penggunaan Counter
Teori :
Pada mikrokontroler 8051 terdapat dua buah Timer/Counter 16 bit yang dapat diatur melalui perangkat
lunak, yaitu Timer-Counter 0 dan Timer-Counter 1.
Pengontrol kerja Timer/Counter adalah register TCON (Timer Control) yang didefinisikan sebagai
berikut :
Tabel 4.1 Susunan bit dalam register TCON
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Simbol Posisi Fungsi
TF1 TCON.7 Timer 1 overflow flag (1 = overflow)
TR1 TCON.6 Timer/Counter1 ON/OFF
TF0 TCON.5 Timer 0 overflow flag
TR0 TCON.4 Timer/Counter 0 ON/OFF
IE1 TCON.3 External Interrupt 1 edge flag
IT1 TCON.2 Interrupt 1 type control bit. Set / clear oleh software untuk
menspesifikasikan sisi turun / level rendah trigger dari interupsi eksternal
IE0 TCON.1 External Interrupt 0 edge flag
IT0 TCON.0 Interrupt 0 type control bit
Pengontrol pemilihan mode operasi timer / counter adalah register TMOD (Timer Mode) yang
didefinisikan sebagai berikut :
Tabel 4.2 Susunan bit dalam register TMOD
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GATE C/T M1 M0 GATE C/T M1 M0
Laboratorium Sistem Komputer STIKOM Surabaya
Timer 1 Timer 0
Timer 1 Timer 0
Clock =
22 Praktikum Mikrokontroler
Simbol Posisi Fungsi
GATE TMOD.7 Jika GATE = 0, maka Timer/Counter x akan berjalan saat TRx = 1
Jika GATE = 1, maka Timer/Counter x akan berjalan saat TRx=1dan INTx =1
C/T TMOD.6 Pemilih Timer/Counter (0 = Timer , 1 = Counter)
M1 TMOD.5 Pemilih mode Timer/Counter
M0 TMOD.4 Pemilih mode Timer/Counter
Kombinasi M0 dan M1 adalah sebagai berikut :
M1 M0 Nama Operasi
0 0 Mode 0 Timer/Counter 13 bit
0 1 Mode 1 Timer/Counter 16 bit
1 0 Mode 2 Timer auto-reload 8 bit (pengisian otomatis)
1 1 Mode 3 TL0 adalah Timer/Counter 8 bit yang dikontrol oleh
kontrol bit standar Timer 0
TH0 adalah Timer 8 bit dan dikontrol oleh kontrol bit Timer 1
Periode waktu timer secara umum ditentukan dari persamaan berikut :
Jika kita menggunakan crystal 12 MHz maka :
XTALfreq.
12
11
×
6101212
11
ו=
610
1=
= 10 –6 s = 1 µs
a. Sebagai timer 8 bit
T = clockTLx ×− )256(
dimana TLx adalah isi register TL0 atau TL1
b. Sebagai timer 16 bit
T = ( ) clockTHxTLx ×−65536
THx = isi register TH0 atau TH1
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 23
TLx = isi register TL0 atau TL1
Laboratorium Sistem Komputer STIKOM Surabaya
24 Praktikum Mikrokontroler
• Counter
Pada dasarnya prinsip kerja Counter dan Timer adalah sama, perbedaannya yaitu pada sinyal clock yang
menyebabkan naiknya THn dan TLn. Kalau pada Timer adalah sinyal oscilator (crystal) sedangkan pada
Counter berasal dari eksternal yaitu pin Tn. Untuk kontrol dan modenya sama dengan Timer.
Prosedur Percobaan:
1. Ketik program di bawah ini, kemudian jalankan.
PORT_A EQU 0A000HCW EQU 0A003H
LJMP MULAIORG 100H
MULAI :MOV TMOD,#01HMOV DPTR, #CWMOV A, #80HMOVX @DPTR, AMOV DPTR, #PORT_A
LOOPING :MOV A, #00HMOVX @DPTR, AACALL DELAYMOV A, #0FFHMOVX @DPTR, AACALL DELAYSJMP LOOPING
DELAY :MOV R0, #64H
LAGI :MOV TH0, #0D8HMOV TL0, #0F0HSETB TR0
ULANG :JNB TF0, ULANGCLR TF0CLR TR0DJNZ R0, LAGI
RET
Gantilah program diatas dengan menggunakan Timer 1.
2. Buatlah program simulasi counter dengan menggunakan Counter 0 atau Counter 1.
3. Buatlah program simulasi untuk menghitung sinyal input per detik dengan memanfaatkan counter dan jumlah
counter ditampilkan di Port 1 mikrokontroler.
4. Buatlah program timer dengan ketentuan sebagai berikut :
- Saat timer diaktifkan, semua LED pada Port B akan menyala sedangkan pada Port C akan padam semua.
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>
at 0x0A000 xdata unsigned char PORT_A;at 0x0A003 xdata unsigned char CW;
void delay(unsigned int lama){ unsigned int t; for (t=1; t<=lama; t++) { TH0 = 0xD8; TL0 = 0xF0; TR0 = 1; while(!TF0); TR0 = 0; TF0 = 0; }}
void main(){ TMOD = 0x01; delay(1); CW = 0x80; delay(1); while(1) { PORT_A = 0; delay(100); PORT_A = 0b11111111; delay(100); }}
Praktikum Mikrokontroler 25
- Setiap ½ detik, LED pada Port B akan padam satu persatu mulai dari MSB sampai LSB.
- Jika semua LED pada Port B padam, maka counter akan bertambah 1. Nilai counter ditampilkan di Port C.Percobaan 5
LCD, Keypad dan RAM
Tujuan :
- Mengetahui cara menghubungkan LCD dengan minimum sistem Mikrokontroler 8031
- Mengetahui cara pengontrolan LCD
- Mengetahui cara mengakses Keypad menggunakan mikrokontroler
Teori :
Salah satu peralatan I/O yang sering digunakan dalam minimum sistem mikrokontroler 8031 adalah
LCD. LCD dapat dihubungkan melalui jalur port I/O atau secara Address-Data. Untuk meng-inisialisasi LCD perlu
dilakukan beberapa hal :
a. Display Clear
Display clear digunakan untuk membersihkan display/tampilan dan meletakkan cursor pada posisi awal
(address 0).
DB7 DB00 0 0 0 0 0 0 1
b. Function Set
Function set digunakan untuk mengeset panjang data.
DB7 DB00 0 1 DL 1 * * *
* : invalid bit
DL (Data Length) = 1, panjang data 8 bit (DB7-DB0)
DL (Data Length) = 0, panjang data 4 bit (DB7-DB4)
c. Display ON / OFF
Display ON / OFF mengontrol on/off tampilan, tampilan cursor dan tampilan berkedip.
DB7 DB00 0 0 0 1 D C B
D : D = 1, display ON
D = 0, display OFF
C : C = 1, cursor ditampilkan
C = 0, cursor tidak ditampilkan
Laboratorium Sistem Komputer STIKOM Surabaya
26 Praktikum Mikrokontroler
B : B = 1, tampilan karakter pada posisi cursor berkedip
B = 0, tampilan tidak berkedip
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 27
d. Entry Mode Set
Entry mode set mengatur arah pergerakan cursor.
DB7 DB00 0 0 0 0 1 I/D S
I/D : I/D = 1, address di-increment dan cursor bergerak ke kanan
I/D = 0, address di-decrement dan cursor bergerak ke kiri
S : S = 1 dan I/D = 1, display bergeser ke kanan
S = 1 dan I/D = 0, display bergeser ke kiri
S = 0, display tidak bergeser
Keypad
Keypad pada modul ini terdiri atas 16 buah tombol yang tersusun dalam bentuk matrix 4x4. Metode
pengaksesan keypad ini menggunakan metode scanning baris. Pemilihan baris dapat dilakukan dengan mengirim
data ke Port C upper (bit 7 s.d. bit 4). Sedangkan Port C lower (bit 3 s.d. bit 0) digunakan untuk menampung data
kolom tombol yang ditekan. Bila tombol ditekan, keypad akan mengeluarkan output 1 (high), sedangkan jika tidak
ditekan akan mengeluarkan output 0 (low).
Laboratorium Sistem Komputer STIKOM Surabaya
28 Praktikum Mikrokontroler
Memori RAM
RAM disebut sebagai volatile memory ketika daya hilang dari IC akan mengakibatkan hilangnya data.
RAM juga dapat disebut sebagai RAWM (read and write memory). Ada tiga tipe dari RAM, yaitu static RAM
(SRAM), NV-RAM (nonvolatile RAM) dan dynamic RAM (DRAM).
- SRAM (Static RAM)
Penyimpanan sel dalam static RAM memory terbuat dari flip-flop. Oleh karena itu tidak memerlukan
refreshing dalam penyimpanan data. Dengan menggunakan flip-flop untuk penyimpanan sel, masing-masing sel
paling sedikit memiliki 6 transistor, dimana sel tersebut hanya menahan satu bit data. Beberapa tahun belakangan
ini, sel terbuat dari 4 transistor, tetapi masih terlalu banyak. Dengan menggunakan 4 transistor sel ditambah
menggunakan CMOS teknologi melahirkan SRAM dengan kapasitas yang lebih tinggi. Tetapi kapasitas SRAM
jauh di bawah DRAM.
Tabel 5.1 Beberapa jenis SRAM
Part No. Kapasitas Org. Speed Pins Vpp6116P-1 16K 2Kx8 100 ns 24 CMOS6116P-2 16K 2Kx8 120 ns 24 CMOS6116P-3 16K 2Kx8 150 ns 24 CMOS6116LP-1 16K 2Kx8 100 ns 24 Low power CMOS6116LP-2 16K 2Kx8 120 ns 24 Low power CMOS6116LP-3 16K 2Kx8 150 ns 24 Low power CMOS6264P-10 64K 8Kx8 100 ns 28 CMOS6264LP-70 64K 8Kx8 70 ns 28 Low power CMOS6264LP-12 64K 8Kx8 120 ns 28 Low power CMOS62256LP-10 256K 32Kx8 100 ns 28 Low power CMOS62256LP-12 256K 32Kx8 120 ns 28 Low power CMOS
- NV-RAM (nonvolatile RAM)
Mengingat SRAM adalah volatile, ada sebuah tipe baru dari nonvolatile RAM, yang disebut sebagai
NV-RAM. Seperti RAM yang lain, NV-RAM mengijinkan CPU untuk membaca dan menulis kepadanya, tetapi
ketika kehilangan daya, isi di dalam chip tidak hilang. NV-RAM adalah kombinasi dari RAM dan ROM: membaca
dan menulis adalah kemampuan dari RAM, ditambah dengan nonvolatile dari ROM. Pada setiap NV-RAM, chip di
dalamnya terbuat dari komponen berikut:
1. Menggunakan daya yang sangat efisien (konsumsi daya yang rendah) SRAM sel yang terbuat dari CMOS.
2. Menggunakan sebuah baterai lithium di dalamnya sebagai sebuah back-up energy source.
3. Menggunakan intelligent control circuitry. Kontrol ini digunakan untuk memonitor Vcc pin untuk mendeteksi
hilangnya power supply dari luar. Jika power pada Vcc di bawah toleransi kondisi, kontrol sirkuit
memindahkan secara otomatis ke internal power source, yang disebut baterai lithium. Internal lithium power
source digunakan untuk menyimpan isi NV-RAM ketika external power source dalam keadaan off.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 29
Tabel 5.2 Beberapa jenis NV-RAM
Part No. Kapasitas Org. Speed Pins VppDS1220Y-150 16K 2Kx8 150 ns 24DS1225AB-150 64K 8Kx8 150 ns 28DS1230Y-85 256K 32Kx8 85 ns 28
- DRAM (Dynamic RAM)
Pada tahun 1970, perusahaan Intel memperkenalkan dynamic RAM (random access memory) untuk
pertama kalinya. Kapasitas DRAM untuk pertama kalinya 1024 bits dan menggunakan sebuah kapasitor untuk
penyimpanan masing-masing bit. Menggunakan sebuah kapasitor artinya untuk penyimpanan data mengurangi
jumlah transistor yang diperlukan untuk membuat sel. Selama memerlukan kapasitor, refreshing dilakukan karena
terjadi kebocoran. Dalam keadaan refresh, data tidak dapat diakses. Dibandingkan dengan SRAM (static RAM),
dimana masing-masing sel terbuat dari flip-flop. Karena masing-masing bit di dalam SRAM menggunakan sebuah
single flip-flop dan masing-masing flip-flop memerlukan 6 transistor, dimana SRAM tidak membutuhkan
refreshing dalam penyimpanan data sehingga data dapat diakses setiap waktu. SRAM memiliki memori sel yang
lebih besar, maka dari itu kepadatannya lebih rendah. Penggunaan kapasitor sebagai penyimpanan sel di dalam
DRAM menghasilkan ukuran memori sel yang lebih kecil. DRAM memori chip memiliki pin data x1, x4, x8 atau
x16. didalam memori chip data pin juga disebut sebagai I/O. Di dalam DRAM ada bagian DIN dan DOUT.
Tabel 5.3 Beberapa jenis DRAM
Part Number Speed Kapasitas Org Pins4164-15 150 ns 64 K 64Kx1 1641464-8 80 ns 256 K 64Kx4 1841256-15 150 ns 256 K 256Kx1 1641256-6 60 ns 256 K 256Kx1 16414256-10 100 ns 1 M 256Kx1 20511000P-8 80 ns 1 M 1Mx1 18514100-7 70 ns 4 M 4Mx1 20
Pada desain ini RAM diletakan pada alamat C000H sampai dengan kapasitas RAM, untuk mengakses
RAM caranya sama dengan mengakses PPI8255 hanya mengubah alamatnya saja.
Prosedur Percobaan:
1. Jalankan program di bawah ini dan perhatikan apa yang terjadi pada LCD display.
ORG 100HLJMP START
DISPCLR EQU 00000001BFUNCSET EQU 00111000BDISPON EQU 00001110BENTRMOD EQU 00000110BLCD_C EQU 0E000HLCD_D EQU 0E001H
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>
at 0x0E000 xdata unsigned char LCD_C;at 0x0E001 xdata unsigned char LCD_D;
unsigned char DISPCLR = 0b00000001;unsigned char FUNCSET = 0b00111000;unsigned char DISPON = 0b00001110;unsigned char ENTRMOD = 0b00000110;
30 Praktikum Mikrokontroler
DELAY:MOV R0, #0AH
LAGI:MOV TH0, #0D8HMOV TL0, #0F0HSETB TR0
ULANG:JNB TF0, ULANGCLR TF0CLR TR0DJNZ R0, LAGIRET
START:LCALL INIT_LCDMOV DPTR, #LCD_CMOV A, #10000000BMOVX @DPTR,ACALL DELAY
TRAP:SJMP TRAP
CONTROL_OUT:MOV DPTR, #LCD_CMOVX @DPTR, ALCALL DELAYRET
INIT_LCD:MOV A, #DISPCLRLCALL CONTROL_OUTMOV A, #FUNCSETLCALL CONTROL_OUTMOV A,#DISPONLCALL CONTROL_OUTMOV A,#ENTRMODLCALL CONTROL_OUTRET
Buatlah Kesimpulan dari program diatas.
2. Buatlah program untuk menampilkan kalimat 'LABORATORIUM MIKROKONTROLER' pada baris 1
dan 2 pada LCD.
3. Buatlah program untuk menyimpan nama dan NIM anda di RAM eksternal, kemudian menampilkannya
di LCD. (NIM anda tampil di baris 1 dan nama anda di baris 2).
4. Buatlah program untuk menampilkan angka atau huruf pada LCD sesuai dengan penekanan keypad.
Untuk percobaan pertama gunakan satu baris saja. Setelah satu baris berhasil maka lanjutkan ke baris
berikutnya.
Laboratorium Sistem Komputer STIKOM Surabaya
void delay(unsigned int w){ unsigned int t; for (t=1; t<=w; t++) { TH0 = 0xD8; TL0 = 0xF0; TR0 = 1; while(!TF0); TR0 = 0; TF0 = 0; }}
void init_LCD(){ LCD_C = DISPCLR; delay(10); LCD_C = FUNCSET; delay(10); LCD_C = DISPON; delay(10); LCD_C = ENTRMOD; delay(10);}
void main(){ TMOD = 0x01; delay(1); init_LCD();
LCD_C = 0x80; delay(10); while(1); }
Praktikum Mikrokontroler 31
Percobaan 6
ADC & DAC
Tujuan :
- Mengetahui cara mengakses ADC & DAC pada minimum sistem Mikrokontroler 8031
Teori :
ADC (Analog Digital Converter)
ADC 0804 berfungsi untuk mengubah signal analog menjadi signal digital, agar komputer dapat membaca
signal analog maka diperlukan IC ADC 0804 untuk mengubah signal analog menjadi signal digital. ADC 0804
mempunyai input analog maksimal 5 volt, untuk setiap kenaikan bit pada ADC 0804 adalah 0,02 volt.
ADC 0804 mempuyai 1 inputan saja, agar ADC0804 ini mempunyai lebih dari satu inputan diperlukan
multiplexer analog MC4051. Multiplexer ini mempunyai dua buah selector dan 4 input yang akan dipilih.
Keterangan :
1. Port A sebagai keluaran data ADC
2. Port C.0 dan Port C.1 untuk selector input dari potensio yang akan diubah ke digital
Port C.1 Port C.0 Input analog
0 0 Potensio 0
0 1 Potensio 11 0 Potensio 21 1 Potensio 3
3. Rumus untuk mencari tegangan dan bit decimal yang dicari :
Bit_Decimal = 255×
Vref
Vin
Volt = ( ) VrefDecimal ×255DAC (Digital Analog Converver)
DAC adalah suatu rangkaian yang mengkonversikan sinyal digital menjadi sinyal analog. Ada beberapa
jenis rangkaian DAC antara lain Binary Weight Resistor Ladder dan R-2R Resistor Ladder.
Rangkaian DAC Binary Weight Ladder memiliki nilai R yang saling berhubungan, jika nilai resistor yang
terkecil adalah R maka nilai resistor selanjutnya adalah 2R, 4R, 8R dan seterusnya.
Karakteristik DAC 0808
Resolusi adalah 1 bagian dibagi dengan banyaknya tingkatan yang tesedia, atau dengan rumus dapat ditulis :
Laboratorium Sistem Komputer STIKOM Surabaya
32 Praktikum Mikrokontroler
- Resolusi : 1 / ( 2n – 1 )
- Untuk DAC 4 bit, didapat resolusi = 1 / ( 24 – 1 ) = 1 / 15
- Untuk DAC 8 bit, didapat resolusi = 1 / ( 28 – 1 ) = 1 / 255
Semakin besar digit suatu DAC resolusi semakin kecil, dan akan membuat DAC semakin baik. Tegangan
skala penuh ditentukan oleh nilai arus referensi dan resistor umpan balik op-amp. Biasanya mempunyai nilai +5V,
+10V, +15V tergantung pada aplikasi yang diinginkan. Tegangan maksimum yang sebenarnya selalu 1 LSB lebih
kecil dari tegangan keluaran skala penuh.
Ketelitian adalah seberapa dekat keluaran secara praktek dari nilai sebenarnya. Ketelitian akan bergantung
pada nilai tegangan referensi, toleransi resistor, dan kecocokan transistor. Ketelitian ini biasanya dinyatakan
sebagai kesalahan dalam penambahan LSB. Kesalahan 1 LSB artinya keluaran yang sebenarnya berbeda keluaran
idealnya sebesar 1 LSB. Secara ideal kesalahan suatu DAC harus lebih kecil dari ½ LSB.
Monotonisasi adalah keluaran yang terus bertambah bila masukan bertambah besar. Suatu DAC akan
monoton bila mempunyai kesalahan lebih kecil atau sama dengan ½ LSB.
Waktu pemantapan adalah waktu yang diperlukan untuk menghasilkan keluaran yang benar (biasanya dari
nanodetik sampai mikrodetik). Nilai waktu pemantapan akan menentukan kecepatan dalam mengubah masukan
digital.
Keistimewaan DAC 0808
DAC 0808 series adalah merupakan IC monolitik 8 bit, dengan kelebihan sebagai berikut :- Akurasi relatif + 0.19 %- Arus skala penuh + 1 LSB- Settling time cepat : 150 ns- Non-inverting digital input : TTL dan CMOS Compatible- High speed multiplying slew rate : 8 mA/s- Tegangan supply + 4.5 V sampai +18 V- Low power 33 mW untuk tegangan supply +5 V
Keterangan :1. PORT B sebagai masukan data digital yang akan diubah menjadi analog2. Untuk Perhitungan Penentuan Bit Decimal dan Volt hampir sama dengan Perhitungan ADC.
Procedure percobaan
Dengan menggunakan Voltmeter, ukurlah tegangan referensi ADC dan DAC
1. Buatlah program untuk membaca data dari ADC ditampilkan di PortB.
2. Buatlah program agar pada DAC mengeluarkan tegangan output 3,25 Volt.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 33
Laboratorium Sistem Komputer STIKOM Surabaya
34 Praktikum Mikrokontroler
Percobaan 7
KOMUNIKASI SERIAL
Tujuan :
- Mengetahui cara mengakses serial port pada minimum sistem Mikrokontroler 8031
- Mengetahui cara membangun komunikasi secara serial
Teori :
Mikrokontroler 8031 juga dilengkapi dengan port serial. Port serial memungkinkan kita mengirim data
dalam format serial. Port serial dalam mikrokontroler 8031 memiliki sifat full duplex, yang berarti dapat mengirim
dan menerima data secara bersamaan. Register penerima dan pengirim pada port serial diakses pada SBUF (serial
buffer). Register pengontrol kerja port serial ini adalah SCON (serial control). Bit-bit SCON didefinisikan sebagai
berikut :
MSB LSB
SM0 SM1 SM2 REN TB8 RB8 T1 R1
Simbol Posisi Fungsi
SM0 SCON.7 Pemilih mode port serial
SM1 SCON.6 Pemilih mode port serial
SM2 SCON.5 Membuat enable komunikasi multiprosesor dalam mode2 dan 3.
REN SCON.4 Set/clear oleh perangkat lunak untuk menjalankan/ melumpuhkan penerimaan.
TB8 SCON.3 Bit ke-9 yang akan dikirim dalam mode 2 dan 3. Set/clear secara software.
RB8 SCON.2 Dalam mode 2 dan 3 adalah bit data ke-9 yang diterima. Dalam mode 1 jika
SM2=0, RB8 merupakan bit stop yang diterima. Dalam mode 0 RB8 tidak
digunakan.
T1 SCON.1 Transmit interrupt flag. Di-set oleh perangkat keras pada akhir waktu bit ke-8
dalam mode 0, atau pada permulaan dari bit stop dalam mode lainnya. Di-clear
secara software.
R1 SCON.0 Receive interrupt flag. Di-set oleh perangkat keras pada akhir waktu bit ke-8
dalam mode 0.
Pemilihan mode port serial :
SM0 SM1 Nama Keterangan Baud Rate
0 0 Mode 0 Shift Register Frek. osc / 12
0 1 Mode 1 8 bit UART Variabel
1 0 Mode 2 9 bit UART Frek. osc / 64 atau frek.osc / 32
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 35
1 1 Mode 3 9 bit UART Variabel
Laboratorium Sistem Komputer STIKOM Surabaya
36 Praktikum Mikrokontroler
A. Mode 0Mode ini bekerja secara sinkron, data serial dikirim dan diterima melalui kaki P3.0 (Rx), sedangkan
kaki P3.1 (Tx) digunakan untuk menyalurkan detak pendorong data serial yang dibangkitkan mikrokontroler. Data dikirim/diterima 8 bit sekaligus, dimulai dari bit ke-0 sampai dengan bit ke-7. Kecepatan pengiriman data
(baudrate) adalah 12
1 frekuensi kristal yang digunakan.
B. Mode 1Mode ini tetap, yaitu data dikirim melalui kaki P3.1 (Tx) dan diterima melalui kaki P3.0 (Rx), secara
asinkron (juga seperti Mode 2 dan Mode 3). Data dikirim/diterima 10 bit sekaligus, diawali dengan 1 bit start, 8 bit data mulai dari bit ke-0 sampai dengan bit ke-7, dan 1 bit stop. Pada MCS-51 yang berfungsi sebagai penerima bit stop adalah RB8 pada register SCON. Baud rate dapat diatur sesuai keperluan. Mode 1, Mode 2, dan Mode 3 dikenal dengan Universal Asynchronous Receiver/Transmitter (UART).
C. Mode 2Data dikirim/diterima 11 bit sekaligus, diawali dengan 1 bit start, 8 bit data mulai dari bit ke-0 sampai
dengan bit ke-7, bit ke-9 dan 1 bit stop. Pada MCS-51 yang berfungsi sebagai pengirim, bit ke-9 berasal data bit TB8 dalam register SCON. Pada MCS-51 yang berfungsi sebagai penerima, bit ke-9 ditampung di data bit RB8
dalam register SCON, sedangkan bit stop tidak ditampung. Baud rate bisa dipilih 32
1 atau
64
1frekuensi
kristal yang digunakan.
D. Mode 3Mode ini sama dengan mode 2, tetapi baudrate dapat diatur sesuai dengan keperluan.
E. BaudrateBaudrate menunjukkan laju kecepatan pengiriman data digital secara seri. Laju baudrate sama dengan
banyaknya bit yang dikirim setiap detik. Pada MCS-51 pengiriman secara serial ditentukan oleh Mode yang telah ditentukan. Baudrate yang digunakan juga bersesuaian dengan Mode yang digunakan. Pada Mode 0 baudrate yang digunakan adalah
Baudrate = 12
osilasifrekuensi
Sedangkan baudrate yang digunakan pada Mode 2 tergantung dari isi bit SMOD yang ada pada register PCON.
Tabel 7.1 Susunan bit dalam register PCONBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SMOD - - - GF1 GF0 PD IDL
Jika SMOD = 0 baudrate yang digunakan adalah 64
1K = . Jika SMOD = 1 baudrate yang
digunakan 32
1K = .
Baudrate = K osilasifrekuensi _×Sedangkan baudrate yang digunakan untuk Mode 1 dan 3 dapat ditentukan melalui register Timer 1
dan juga bit SMOD pada register PCON. Jika SMOD = 0 baudrate yang digunakan adalah K=1. Jika SMOD = 1 Baud rate yang digunakan K=2.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 37
Baudrate = ( )[ ]125612
_
32 TH
osilasifrekuensiK
−××
Prosedur Percobaan:
1. Ketik program di bawah ini kemudian jalankan, gunakan file SerialNGBasicDemo.exe untuk menerima data
yang telah dikirimkan dari mikrokontroler.
BAUDLOAD EQU 0F4HLJMP STARTORG 100H
S_INIT:MOV SCON, #01010000BMOV TMOD, #00100000BMOV TCON, #01000000BMOV TH1, #BAUDLOADRET
OUT:CLR TIMOV SBUF,A
TUNGGU:JNB TI, TUNGGURET
START:LCALL S_INITMOV A, #'a'LCALL OUTSJMP START
Tulislah kesimpulan dari program diatas.
2. Buatlah program untuk mengirimkan kalimat “LABORATORIUM MIKROKONTROLER” dari
mikrokontroler ke PC.
3. Buatlah program untuk menerima data angka yang dikirimkan PC kemudian ditampilkan di PortA.
Percobaan 8
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>#include <timer.h>
void Serial_init(){ SCON = 0b01010000; TMOD = 0b00100000; TCON = 0b01000000; TH1 = 0xF4;}
void data_out(unsigned char dt_in){ TI = 0; SBUF = dt_in; while(!TI);}
void main(){ TMOD = 0x01; delay(10); Serial_init(); while(1) { data_out('a'); delay(500); }}
38 Praktikum Mikrokontroler
INTERRUPT
Tujuan :
- Mengetahui dan dapat menggunaan fasilitas interupsi
Apabila CPU pada mikrokontroler sedang melaksanakan suatu program, kita dapat menghentikan
sementara pelaksanaan program tersebut dengan melakukan interupsi. CPU kemudian melaksanakan rutin
pelayanan interupsi tersebut. Setelah selesai CPU akan kembali ke program utama yang ditinggalkan.
Alamat layanan interupsi dapat dilihat pada tabel di bawah ini :
Nama Lokasi Alat interupsi
Reset 00H Power on reset
Int 0 03H INT 0
Timer 0 0BH Timer 0
Int 1 13H INT 1
Timer 1 1BH Timer 1
Sint 23H Port I/O serial
Ada dua buah register yang mengontrol interupsi, yaitu IE (Interrupt Enable) dan IP (Interrupt Priority).
Bit-bit IE didefinisikan sebagai berikut:
MSB LSB
EA - - ES ET1 EX1 ET0 EX0
Simbol Posisi Fungsi
EA IE.7 Enable / disable interupsi
(0 = disable , 1 = enable)
- IE.6 Kosong
- IE.5 Kosong
ES IE.4 Enable interupsi serial
ET1 IE.3 Enable interupsi timer 1
EX1 IE.2 Enable INT 1
ET0 IE.1 Enable interupsi timer 0
EX0 IE.0 Enable INT 0
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 39
Bit-bit IP didefinisikan sebagai berikut :
- - - PS PT1 PX1 PT0 PX0
Simbol Posisi Fungsi
- IP.7 Kosong
- IP.6 Kosong
- IP.5 Kosong
PS IP.4 Prioritas interupsi serial
(0 = prioritas rendah , 1 = prioritas tinggi)
PT1 IP.3 Prioritas interupsi timer 1
PX1 IP.2 Prioritas INT 1
PT0 IP.1 Prioritas interupsi timer 0
PX0 IP.0 Prioritas INT 0
1. Ketik program dibawah ini:
LJMP MULAI
ORG 100HMULAI:
MOV IE, #81HMOV IP, #01HMOV P1, #0FEH
ULANG:NOPSJMP ULANG
ORG 03HMOV P1, #7FHRETI
Simulasikan program tersebut. Setelah beberapa saat beri masukan low pada kaki INT 0 (lihat skematik
minimum sistem). Amati apa yang terjadi.
2. Buatlah program simulasi untuk menyalakan semua LED pada Port 1 dan mematikan semua LED pada Port 1
apabila ada interupsi INT 1.
3. Buatlah program simulasi menampilkan data 0x84 jika ada INT0 dan 0x25 jika ada INT1, tetapi INT1
mempunyai prioritas utama. Data tersebut ditampilkan di Port 1
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>
void Interrupt0() interrupt 0;
void main(){ IE = 0x81; IP = 0x01; P1 = 0xFE; while(1);}
void Interrupt0() interrupt 0{ P1 = 0x7F;}
40 Praktikum Mikrokontroler
4. Buatlah program penerima data secara serial dengan konsep interrupt.
Percobaan 9
RTC DS12887
Tujuan :
- Mengetahui cara mengakses RTC DS12887 dengan MCS 51
Teori
Ciri-ciri khusus RTC• Dapat menggantikan waktu dan kalender pada komputer IBM AT.• Keseluruhan data di dalam RTC dapat bertahan dan dioperasikan selama 10 tahun tanpa adanya power.
• Subsistem yang ada di dalamnya terdiri dari lithium, crystal, dan rangkaian yang dapat mendukung dari RTC.
• Perhitungan detik, menit, jam , hari dalam seminggu, tanggal, bulan dan tahun dengan tahun kabisat yang mempunyai kompensasi valid sampai tahun 2100.
• waktu, kalender dan alarm ditunjukkan secara binary atau BCD.• Mempunyai dua mode waktu yaitu 12 atau 24-jam, mode 12–jam ditambah dengan AM dan PM.• Pemilihan waktu Daylight saving.• Pemilihan bus timing antara motorola dan intel.• Multiplex pin untuk efisiensi pin.• Memori yang dihubungkan dengan software sebanyak 128 RAM lokasi.
14 byte untuk clock dan kontorl register. 114 byte untuk general purpose RAM.
• Signal gelombang yang dapat diprogram.• Bus – cocok untuk sinyal interrupt (IRQ).
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 41
• Tiga interupt secara terpisah, dengan menggunakan software dapat diuji dan tidak digunakan. Time-of-day alarm once/second untuk once/day Rata-rata periode dari 122 ms sampai 500 ms. End of clock update cycle.
Fungsi Pin dari RTC• AD0-AD7 : Multiplex address atau data• NC : Not Connection.• MOT : Bus Type selection.• CS : Chip Select.• AS : Address Strobe.• DS : Data Strobe.• RESET : Reset Input.• IRQ : Interrupt Request Ouput.• SQW : Square Wave Output.
• VCC : + 5 Volt Supply.• GND : Ground.
AddressLocation
Function DecimalRange
Range
Binary Data Mode BCD Data Mode0 Seconds 0-59 00-3B 00-591 Seconds Alarm 0-59 00-3B 00-592 Minutes 0-59 00-3B 00-593 Minutes Alarm 0-59 00-3B 00-594 Hours (12 hours mode) 1-12 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM
Hours (24 hours mode) 0-23 00-17 00-235 Hours Alarm (12 hours mode) 1-12 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM
Hours Alarm (24 hours mode) 0-23 00-17 00-236 Day of the week (Sunday = 1) 1-7 01-07 01-077 Date of Month 1-31 01-1F 01-318 Month 1-12 01-0C 01-129 Year 0-99 00-63 00-99A Register A 0-255 00-FF N/AB Register B 0-255 00-FF N/AC Register C 0-255 00-FF N/A
Register A
MSB LSB
UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
UIP :Update Interrupt Progress merupakan flag status yang dapat dipantau. Pada saat UIP bernilai 1, maka update transfer akan terjadi. Pada saat UIP bernilai 0, maka update transfer tidak akan terjadi sekurang-kurangnya 244 µs. Informasi waktu, kalender dan alarm di dalam RAM dapat diakses secara penuh pada saat UIP bernilai 0. Ketika SET bit pada register B bernilai 1, maka update transfer akan dihalangi dan UIP akan bernilai 0.
DV0, DV1 dan DV2 :
Laboratorium Sistem Komputer STIKOM Surabaya
42 Praktikum Mikrokontroler
Tiga bit ini digunakan untuk menghidupkan atau mematikan osilator dan untuk mereset countdown chain. Sebuah susunan 010 adalah kombinasi dari bit yang digunakan untuk menyalakan osilator dan mengijinkan RTC untuk memelihara waktu. Sebuah susunan dari 11X akan mengaktifkan osilator tetapi countdowm chain dalam keadaan reset. Update data selanjutnya dapat terjadi setiap 500 ms setelah susunan bit dari DV0, DV1 dan DV2 adalah 010.
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 43
RS0, RS1, RS2 dan RS3 :Merupakan bit-bit pemilih periode sinyal interrupt atau sinyal persegi yang dihasilkan oleh RTC. Keempat bit-bit pemilih ini tidak dipengaruhi oleh RESET. Tabel kebenaran dari bit-bit pemilih ini, terdapat dalam datasheet RTC DS12C887.
Register B
MSB LSB
SET PIE AIE UIE SQWE DM 24/12 DSE
SET :Ketika SET bit adalah 0, Fungsi Update Transfer dalam keadaan normal dengan kecepatan perhitungan setiap satu detik. Ketika SET bit adalah 1, semua update transfer tidak diijinkan dan program dapat inisialisasi bytes waktu dan kalender tanpa terjadi sebuah update ditengah-tengah inisialisasi.
PIE :Periodic Interrupt Enable (PIE). Pada bit ini dapat dibaca atau ditulis yang digunakan untuk mengijinkan atau tidak mengijinkan Periodic Interrupt Flag (PF) pada register C. Jika pada bit ini bernilai 1, maka periodic interrupt akan dibangkitkan oleh pin IRQ sebesar kombinasi R3, R2, R1 dan R0 pada register A. Jika pada bit ini bernilai 0, maka periodic interrupt yang dibangkitkan oleh pin IRQ akan ditahan, tetapi Periodic Flag (PF) pada register C tetap diset pada periodic rate. Pada pin IRQ digunakan untuk interrupt pada mikrokontroller dan untuk menggunakannya perlu resistor pull-up.
AIE :Alarm Interrupt Enable (AIE) bit adalah sebuah bit yang dapat dibaca dan ditulis, ketika bit ini diset 1, mengijinkan Alarm Flag (AF) bit didalam register C untuk mengintialisasi signal IRQ . Ketika bit AIE diset 0, bit AF tidak menginitialisasi signal IRQ.. Fungsi yang terdapat di dalam dari DS12887 tidak dapat mempengaruhi bit AIE.
UIE :The Update Ended Interrupt Enable (UIE) adalah suatu flag bit yang dapat dibaca atau ditulis dan digunakan untuk mengaktifkan Update End Flag (UF) didalam register C untuk menyatakan (IRQ).Flag ini akan update secara otomatis setiap satu detik, flag ini diguanakan untuk mennadakan bahwa RTC sudah update. RESET dalam keadaan low atau SET keadaan high menyebabkan UIE bit menjadi low.
SQWE :Square Wave Enable (SQWE). Jika pada bit ini bernilai 1, maka besar sinyal yang telah diset melalui kombinasi RS3, RS2, RS1 dan RS0 akan dikeluarkan melalui pin SQW. Jika pada bit ini bernilai 0, maka pin SWQ akan berada pada kondisi low.
DM :Data Mode (DM) adalah bit indikasi apakah informasi waktu dan kalender dalam format BCD atau binary. DM bit dapat di set dengan program untuk memilih format yang sesuai dan dapat dibaca sesuai dengan keperluan. Bit ini tidak dapat diubah oleh fungsi internal atau reset. Sebuah kondisi high pada DM menandakan bahwa data adalah binary sedangkan sebuah low kondisi pada DM maka data adalah Binary Code Data (BCD).
12/24 :12/24 adalah bit control untuk menetapkan format dari hours bit. Sebuah keadaan high pada pin ini menandakan mode 24-hours dan sebuah 0 pada pin ini menandakan mode 12-hours. Bit ini adalah dapat dibaca dan ditulis, bit ini tidak dipengaruhi oleh fungsi internal dari reset.
Laboratorium Sistem Komputer STIKOM Surabaya
44 Praktikum Mikrokontroler
DSE :Daylight Saving Enable (DSE) adalah bit yang dapat dibaca atau ditulis. Jika bit ini bernilai 1, maka update akan terjadi pada saat hari Minggu pertama pada bulan April jam 1:59:59 berubah menjadi 3:00:00 atau pada hari Minggu terakhir pada bulan Oktober pada saat jam 1:59:59 akan berubah menjadi 1:00:00. Jika bit ini bernilai 0, maka update waktu tersebut tidak akan terjadi. Bit ini tidak dipengaruhi oleh fungsi-fungsi internal atau RESET.
Register C
MSB LSB
IRQF PF AF UF 0 0 0 0
IRQF :Interrupt Request Flag bit adalah bit ini akan di set satu jika salah satu dari bit dibawah ini :PF = PIE = 1AF = AIE = 1UF = UIE = 1
IRQF = PF * PIE + AF * AIE + UF * UIE.Ketika bit IRQF diset 1, maka bit IRQ menjadi low. Flag bit AF, UF, dan PF menjadi 0 setelah register C di baca dengan program atau direset secara hardware.
PF (Periodic Interrupt Flag) : bit ini bernilai 1 saat sinyal berada pada posisi high.AF (Alarm Interrupt Flag) : bit ini akan bernilai 1 saat alarm aktif.UF (Update Ended Flag) : bit ini akan bernilai 1 saat proses update waktu telah selesai tiap 500 µs.
Cara membaca detik di RTC:1. Pertama kali kita harus menyalakan osilator pada RTC dengan cara menyeting register A dengan nilai 20 H.2. Setting Register B dengan nilai 16 H, dimana data ditampilakan dalam metode binary code, menggunakan
metode 24-hour, dan flag bit UF akan berubah setap satu detik.3. Baca data pada alamat detik yang telah ditentukan.
MOV DPTR, #0C00AHMOV A, #20HMOVX @DPTR, ALCALL DELAYMOV DPTR, #0C00BHMOV A, #16HMOVX @DPTR, ALCALL DELAY
LAGI:MOV DPTR, #0C00ChMOVX A, @DPTRANL A, #80HJNB ACC.7, LAGICLR ACC.7LCALL DELAYMOV DPTR, #0C000HMOV A, #00HMOVX A, @DPTRSJMP LAGI
Laboratorium Sistem Komputer STIKOM Surabaya
unsigned int baca_detik(){ Register_A = 0x20; delay(10); Register_B = 0x16; delay(10);
do { ACC = Register_C; ACC7 = ACC7 & 0x80; } while(ACC7 == 0); ACC7 = 0; return(detik); delay(10);}
Praktikum Mikrokontroler 45
Cara menulis detik di RTC :1. Pertama kali kita memberi nilai di register B = 86h.2. Data ditulis di alamat RTC yang sudah ditentukan .
MOV DPTR, #0C00BHMOV A, #86HMOVX @DPTR, ALCALL DELAYMOV DPTR, #0C000HMOV A, #10MOVX @DPTR, A
Prosedure percobaan :
1. Baca detik pada RTC lalu tampilkan ke LCD, setelah anda berhasil menampilkan detik ke LCD
lanjutkan ke Jam dan menit ?
2. Seting Jam, Menit, dan Detik sesuai dengan waktu saat ini, kemudian tampilkan di LCD ?
Laboratorium Sistem Komputer STIKOM Surabaya
void tulis_detik(unsigned int dtk){ Register_B = 0x86; delay(10); detik = dtk; delay(10);}
46 Praktikum Mikrokontroler
Percobaan 10
Matrix LED
Tujuan :
- Agar mahasiswa dapat membuat display dari Marix LED
Teori :
Matrix LED sering kita jumpai di jalan raya digunakan untuk tampilan jam, informasi dll. Pada percobaan ini kita belajar bagaimana membuat display matrix LED dengan menggunakan mikrokontroler AT89S51. Matrix LED yang digunakan adalah dot matrix 7 x 5 dan Common Row katoda. Driver yang digunakan untuk mengontrol kolom menggunakan 74LS174, dimana IC ini adalah D flip-flop array yang di gunakan untuk shift register. Sedangkan untuk mengontrol baris menggunakan 7 transistor 2N222 dengan arus maksimal yang diloloskan oleh kolektor sebesar 1 A.
74LS174
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 47
Rangkaian Matrix Led
R 92 2 0
C L R = P 3 . 4
R 1 32 2 0
P 1 . 4P 1 . 2 P 1 . 3
D A T A = P 3 . 5
Q 12 N 2 2 2 2
P 1 . 6
R 1 42 2 0
R 1 52 2 0
V C C
R 1R
P 1 . 0
U 2
7 4 1 7 4 ( S H I F T R E G I S T E R )
3 4 6 11 13149 1
2 5 7 10 12
15
D1
D2
D3
D4
D5
D6
CL
K
CL
RQ
1
Q2
Q3
Q4
Q5
Q6
P 1 . 5P 1 . 1
R 1 22 2 0
P 1 [ 0 . . 6 ]
C L K = P 3 . 3
R 1 02 2 0
R 1 12 2 0
Q 62 N 2 2 2 2
U 1 ?
M a t r i x l e d
C1
R3
C2
R5
R6
R7
C4
C5
R4
C3
R2
R1
Cara memprogram driver matrix diatas, terlebih dahulu pastikan output pada shift register high, dengan cara set data pada P3.5 lalu beri pulsa dari high ke low sebanyak 5 kali. Setelah semua data output dari Q1-Q5 = 1, maka kita dapat mulai menggambar di matrix led dengan cara memberikan data pada P1.0-P1.6, lalu Q1 diberi diclearkan dengan cara clear data pada P3.5 lalu memberi pulsa clock pada pin P3.4.
Contoh Program Untuk m enampilkan Huruf A ke Matrix LED :
;P3.3 = clock;P3.4 = clear;P3.5 = data
LJMP MULAI ORG 50H
DELAYLOAD :
Laboratorium Sistem Komputer STIKOM Surabaya
48 Praktikum Mikrokontroler
PUSH ACC MOV A, #0FFH
LOOP1 : PUSH ACC
MOV A, #0FFHLOOP2 :
DEC A CJNE A, #00H, LOOP2 POP ACC
DJNZ ACC, LOOP1 POP ACC
RET
DELAY : PUSH ACC
MOV A, #01HLOOP1 :
PUSH ACC MOV A, #09FH
LOOP2 : DEC A
CJNE A, #00H, LOOP2 POP ACC DJNZ ACC, LOOP1 POP ACC
RET ; prosedur Clock
CLOCK :CLOCKX:
SETB P3.3LCALL DELAYCLR P3.3LCALL DELAYDJNZ R0, CLOCKXRET
CLEAR :CLR P3.4LCALL DELAYSETB P3.4LCALL DELAYRET
AMBIL_DATA: MOV A, #00HMOVC A, @A+DPTR RET
MULAI : LCALL DELAYLOAD
LCALL CLEAR MOV P1, #0FFH SETB P3.5 MOV R0, #11 LCALL CLOCK
Laboratorium Sistem Komputer STIKOM Surabaya
#include <reg51.h>#include <timer.h>
at 0x50 idata unsigned char Huruf_A[5] = {0b11111110, 0b00011001, 0b00011001, 0b00011001, 0b11111110};
unsigned int i;sbit data_ = P3^5;sbit clk = P3^3;sbit clr = P3^4;
void clock (unsigned int jum){ unsigned int w; for (w=1; w<=jum; w++) { clk = 1; delay(1); clk = 0; delay(1); }}
void clear(){ clr = 0; delay(1); clr = 1; delay(1);}
void main(){ TMOD = 0x01; delay(10);
clear(); P1 = 0xFF; data_ = 1; clock(11);
while (1) { P1 = Huruf_A [0]; data_ = 0; clock(1); delay(5);
for (i=1; i<5; i++) { P1 = Huruf_A [i]; data_ = 1; clock(1); delay(5); }
Praktikum Mikrokontroler 49
TRAP: MOV DPTR, #HURUF_A LCALL AMBIL_DATAMOV P1, ACLR P3.5MOV R0, #1LCALL CLOCK
INC DPTRLCALL AMBIL_DATAMOV P1,ASETB P3.5MOV R0, #1LCALL CLOCK INC DPTRLCALL AMBIL_DATAMOV P1,ASETB P3.5MOV R0, #1LCALL CLOCK
INC DPTRLCALL AMBIL_DATAMOV P1,ASETB P3.5MOV R0, #1LCALL CLOCK
INC DPTRLCALL AMBIL_DATAMOV P1,ASETB P3.5MOV R0, #1LCALL CLOCK
MOV P1, #00HMOV R0, #6 LCALL CLOCK
SJMP TRAP
ORG 500HHURUF_A:
DB 11111110BDB 00011001BDB 00011001BDB 00011001BDB 11111110B
END
Laboratorium Sistem Komputer STIKOM Surabaya
P1 = 0; data_ = 1; clock(6); delay(5); }}
50 Praktikum Mikrokontroler
Catatan :CLK = P3.3 //Digunakan untuk mengontrol KolomCLR = P3.4DATA = P3.5P1.0 – P1.7 digunakan untuk mengontrol Baris
Prosedur Percobaan :
1. Dari contoh program diatas ganti dengan huruf B, lalu tampilkan ke matrix LED ?
2. Dari program diatas tampilkan huruf A dan B secara bersamaan ?
3. Buatlah program untuk membuat tulisan berjalan di matrix LED ?
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 51
LAMPIRAN
PERANGKAT INSTRUKSI MIKROKONTROLER 8031
Mnemonic Deskripsi BytePeriodeOsilasi
Operasi AritmatikaADD A,#data Add immediate data 2 12ADD A,@Rn Add indirect address 1 12ADD A,Rn Add register 1 12ADD A,addr Add memory 2 12ADDC A,#data Add carry plus immediate data to accumulator 2 12ADDC A,@Rn Add carry plus indirect address to accumulator 1 12ADDC A,Rn Add carry plus register to accumulator 1 12ADDC A,addr Add carry plus memory to accumulator 2 12SUBB A,#data Subtract immediate data from accumulator with borrow 2 12SUBB A,@Rn Subtract indirect address from accumulator with borrow 1 12SUBB A,Rn Subtract register from accumulator with borrow 1 12SUBB A,addr Subtract memory from accumulator with borrow 2 12INC @Rn Increment indirect address 1 12INC A Increment accumulator 1 12INC DPTR Increment data pointer 1 24INC Rn Increment register 1 12INC addr Increment memory 2 12DEC @Rn Decrement indirect address 1 12DEC A Decrement accumulator 1 12DEC Rn Decrement register 1 12DEC addr Decrement memory 2 12MUL AB Multiply accumulator by B 1 48DIV AB Divide accumulator by B 1 48DA A Decimal adjust accumulator 1 12
Operasi LogikaANL A,#data Logical AND immediate data to accumulator 2 12ANL A,@Rn Logical AND indirect address to accumulator 1 12ANL A,Rn Logical AND register to accumulator 1 12ANL A,addr Logical AND memory to accumulator 2 12ANL addr,#data Logical AND immediate data to memory 3 24ORL A,#data Logical OR immediate data to accumulator 2 12ORL A,@Rn Logical OR indirect address to accumulator 1 12ORL A,Rn Logical OR register to accumulator 1 12ORL A,addr Logical OR memory to accumulator 2 12ORL addr,#data Logical OR immediate data to memory 2 12XRL A,#data Logical Exclusive OR immediate data to accumulator 2 12XRL A,@Rn Logical Exclusive OR indirect address to accumulator 1 12XRL A,Rn Logical Exclusive OR register to accumulator 1 12XRL A,addr Logical Exclusive OR memory to accumulator 2 12XRL addr,#data Logical Exclusive OR immediate data to memory 3 24
Laboratorium Sistem Komputer STIKOM Surabaya
52 Praktikum Mikrokontroler
CLR A Clear accumulator 1 12CPL A Complement accumulator 1 12
Operasi BitRL A Rotate accumulator left 1 12RLC A Rotate accumulator and carry flag left 1 12RR A Rotate accumulator right 1 12RRC A Rotate accumulator and carry flag right 1 12SWAP A Exchange nibbles in accumulator 1 12
1 12
Transfer DataMOV A,Rn Move register to accumulator 1 12MOV A,addr Move memory to accumulator 2 12MOV A,@Rn Move indirect address to accumulator 1 12MOV A,#data Move immediate data to accumulator 2 12MOV @Rn,#data Move immediate data to indirect address 2 12MOV @Rn,A Move accumulator to indirect address 1 12MOV @Rn,addr Move memory to indirect address 2 24MOV DPTR,#data Move immediate data to data pointer 3 24MOV addr,addr Move memory to memory 3 24MOVX @DPTR,A Move accumulator to external memory addressed by data
pointer1 24
MOVX @Rn,AMove accumulator to external memory addressed by register
1 24
MOVX A,@DPTR Move external memory addressed by data pointer to accumulator
1 24
MOVX A,@RnMove external memory addressed by register to accumulator
1 24
PUSH Addr Push memory onto stack 2 24POP Addr Pop stack to memory 2 24XCH A,@Rn Exchange indirect address with accumulator 1 12XCH A,Rn Exchange register with accumulator 1 12XCHD A,@Rn Exchange low nibbles of indirect address with
accumulator1 12
Variabel Boolean Untuk ManipulasiCLR C Clear carry flag 1 12CLR Addr Clear bit 2 12SETB C Set carry flag 1 12SETB Addr Set bit 2 12CPL C Complement carry flag 1 12CPL Addr Complement bit 2 12ANL C,addr Logical AND bit to carry flag 2 24ANL C,/addr Logical AND complement of bit to carry flag 2 24ORL C,addr Logical OR bit to carry flag 2 24ORL C,/addr Logical OR complement of bit to carry flag 2 24MOV C,addr Move bit to carry flag 2 12JC Addr Jump if carry is set 2 24JNC Addr Jump if carry is not set 2 24JB Addr Jump if bit is set 3 24
Laboratorium Sistem Komputer STIKOM Surabaya
Praktikum Mikrokontroler 53
JNB Addr Jump if bit is not set 3 24JBC Addr Jump and clear if bit is set 3 24
Program PercabanganACALL Addr Absolute call 2 24LCALL Addr Long call 3 24RET Return from subroutine (Non interrupt) 1 24RETI Return from interrupt routine 1 24AJMP Addr Absolute jump within 2K byte page 2 24LJMP Addr Long jump 3 24SJMP Addr Short jump 2 24JMP @A+DPTR Jump to sum of accumulator and data pointer 1 24JZ Addr Jump if accumulator is zero 2 24JNZ Addr Jump if accumulator is not zero 2 24CJNE @Rn,#data,addr Compare indirect address to immediate data, Jump if not equal 3 24CJNE A,#data,addr Compare immediate data to accumulator,Jump if not equal 3 24CJNE A,addr,addr Compare memory to accumulator,Jump if not equal 3 24DJNZ Rn,addr Decrement register and jump if not zero 2 24DJNZ addr,addr Decrement memory and jump if not zero 3 24NOP No operation 1 12
Laboratorium Sistem Komputer STIKOM Surabaya
54 Praktikum Mikrokontroler
DAFTAR PUSTAKA
- Bereksperimen dengan Mikrokontroler 8031 - Moh. Ibnu Malik & Anistardi
- The 8051 Microcontroller (Hardware, Software and Interfacing) - James W. Stewart and Kai X. Miao
- The 8051 Microcontroller - I. Scott MacKenzie
- The 8051 Microcontroller And Embeded Systems – Muhammad Ali Mazidi dan Janice Gillispie Mazidi
Laboratorium Sistem Komputer STIKOM Surabaya