Anda di halaman 1dari 54

Praktikum Mikrokontroler Percobaan 1 DASAR MIKROKONTROLER Tujuan :

Teori :

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

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 8051 8052 8031 2. ATMEL Mikrokontroler yang dikembangkan ATMEL adalah sebagai berikut: Jenis AT89C51 AT89LV51 AT89C1051 AT89C2051 AT89C52 AT89LV52 3. Dallas Mikrokontroler yang dikembangkan DALLAS adalah sebagai berikut : ROM 4K 4K 1K 2K 8K 8K RAM 128 256 64 128 256 128 TIMER 2 2 1 2 3 3 I/O PINS 32 32 15 15 32 32 SERIAL PORT 1 1 1 1 1 1 INTR Source 6 6 3 6 8 8 VCC 5 3 3 3 5 3 PACK 40 40 20 20 40 40 ROM 4K 8K 0K RAM 128 256 128 TIMER 2 3 2 I/O PINS 32 32 32 SERIAL PORT 1 1 1 INTR Source 6 8 6

Laboratorium Sistem Komputer STIKOM Surabaya

2 Jenis DS5000-8 DS5000-32 DS5000T-8 ROM 8K 32K 8K RAM 128 256 64 TIMER 2 2 2 I/O PINS 32 32 32 SERIAL PORT 1 1 1

Praktikum Mikrokontroler INTR Source 6 6 6 VCC 5 5 5 PACK 40 40 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 - 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 : bit (bit addressable)

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 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 MOV A,#55H ; data dikirimkan ke ACC 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 MOV A,#55H ; data dikirimkan ke ACC 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 MOV 3. P1,#FFH ; menulis data 1 ke semua pin A,P1 ; data dari P1 dikirimkan ke ACC

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 MOV A,#55H ; data dikirimkan ke ACC 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 MOV P2,#FFH ; menulis data 1 kesemua pin 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

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 MULAI ORG 100H MULAI : MOV ADD ADD SELESAI : JMP LJMP MULAI ORG 100H MULAI: MOV ADD ADDC SELESAI: JMP

A, #9CH A, #64H A, #07H SELESAI

b)

A, #9CH A, #64H A, #07H 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 MULAI ORG 100H MULAI: MOV MOV MUL SELESAI : JMP

A, #81H B, #25H AB SELESAI

b) LJMP MULAI ORG 100H MULAI: MOV A, #81H MOV B, #25H DIV AB SELESAI : JMP SELESAI Simpan program pada direktori kerja anda.

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler

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 MULAI ORG 100H MULAI : MOV MOV ULANG : ADD DJNZ SELESAI : JMP LJMP MULAI ORG 100H MULAI : MOV MOV ULANG : DEC DEC JNZ DUA : MOV ULANG2 : DEC JZ JMP SELESAI : JMP LJMP MULAI ORG 100H MULAI: MOV AWAL : CJNE MOV SJMP BANDING1 : JNC MOV SJMP NEXT: MOV 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;

A, #00H R2, #0AH A, #03H R2, ULANG SELESAI

b)

A, #10H R1, #0AH A R1 ULANG A, #0AH A SELESAI ULANG2 SELESAI

c)

A, #06H A, #07H, BANDING1 R0, A LOOP NEXT R1, A LOOP R2, A

Laboratorium Sistem Komputer STIKOM Surabaya

6 LOOP: INC CJNE STOP: 4. JMP A A, #09H, AWAL STOP }

Praktikum Mikrokontroler ACC++; } while(ACC != 0x09); while(1);

Ketik program dibawah ini : LJMP MULAI ORG 100H MULAI: MOV LOOP: MOV MOV MUL SJMP

A, #01H P1, A B, #02H AB 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

Praktikum Mikrokontroler Percobaan 2 AKSES PPI dan MOTOR STEPER Tujuan :

PPI 8255

Mengetahui cara untuk mengakses PPI melalui Mikrokontroler. Mengetahui cara untuk mengontrol motor steper.

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

Praktikum Mikrokontroler

POWER SUPLY

+5V GND

KONTROL GROUP A

GROUP A PORT A

I/O PA7-PA0

8 BIT BUS DATA INTERNAL BUS DATA BIDIRECTIONAL D7-D0


BUFFER BUS DATA

GROUP A PORT C

I/O PC7-PC4

GROUP B PORT C

I/O PC3-PC0

RD WR A1 A0 RESET
KONTROL LOGIKA BACA/ TULIS KONTROL GOUP B GROUP B PORT B

I/O PB7-PB0

CS

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 Tabel 2.1 : Nama pin dan keterangan chip PPI 8255 Simbol VCC GND D0 - D7 RESET Nomor Pin 26 7 27-34 35 6 36 8,9 1-4, 37-40 18-25 10-17 Jenis I/O I I I I I/O I/O I/O

CS

RD
AO A1 PA0 PA7 PB0 PB7 PC0 PC7

Keterangan Vcc: pin catu daya +5 volt. Pin Ground Data Bus : Jalur bus data bi-directional three-state yang terhubung dengan data bus sistem Reset : pin untuk menghapus data pada register kontrol, dan semua port dan menset pada posisi input. Chip Select : untuk mengaktifkan chip pada bus data agar dapat berkomunikasi dengan CPU. Write : sinyal control dari CPU yang dipergunakan untuk mengambil kontrol register dan data ke dalam chip. Address : mengontrol pemilihan salah satu dari tiga port atau kontrol register. Port A : 8-bit input dan output port Port B : 8-bit input dan output port 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 Operasi baca 0 0 1 Operasi tulis 0 0 1 1 A0 0 1 0 0 1 0 1 RD 0 0 0 1 1 1 1 WR 1 1 1 0 0 0 0 CS 0 0 0 0 0 0 0 Operasi yang terjadi Port A ke bus data Port B ke bus data Port C ke bus data Bus data ke port A Bus data ke port B Bus data ke port C 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 0PC3 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 digunakan sebagai sinyal kontrol perpindahan data dari atau menuju port A.

Praktikum Mikrokontroler

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 D 0 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 Group A D4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 D3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Port A Output Output Output Output Output Output Output Output Input Input Input Input Input Input Input Input Port C (Upper) Output Output Output Output Input Input Input Input Output Output Output Output Input Input Input Input Group B Port C (Lower) Output Output Output Input Input Output Input Input Output Output Output Input Input Output Input Input Output Output Output Input Input Output Input Input Output Output Output Input Input Output Input Input Port B Control Word (Hexadesimal) 80 81 82 83 88 89 8A 8B 90 91 92 93 98 99 9A 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 1000 0100 0010 0001 Step 1 Step 2 Step 3 Step 4

kembali ke Step 1 Untuk memutar ke arah yang berlawanan perlu manipulasi bit sebagai berikut: 0001 0010 0100 1000 2. Step 1 Step 2 Step 3 Step 4

kembali ke Step 1 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: 1100 0110 0011 1001 Step 1 Step 2 Step 3 Step 4

kembali ke Step 1

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler Untuk memutar ke arah yang berlawanan perlu manipulasi bit sebagai berikut: 0011 0110 1100 1001 Step 1 Step 2 Step 3 Step 4

13

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
2 3 4 5 6 7 8 9 1 19 A A A A A A A A 0 1 2 3 4 5 6 7 B B B B B B B B 0 1 2 3 4 5 6 7 1 1 1 1 1 1 1 1 8 7 6 5 4 3 2 1

D IR G 74LS245

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 DIRECTION CONTROL DIR L H X OPERATOIN B data to A bus A data to B bus isolation

G
L L H

Laboratorium Sistem Komputer STIKOM Surabaya

14 ULN2803

Praktikum Mikrokontroler

Rating Output Voltage InputVoltage(Except ULN2801) Collector Current Continuous Base Current Continuous Operating Ambient Temperature Range Storage Temperature Range Junction Temperature

Symbol VO VI IC IB TA Tstg TJ

Value 50 30 500 25 0 to +70 -55 to 150 125

Unit V V mA mA C C 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. EQU 0A000H EQU 0A003H #include <reg51.h> #include <timer.h> at 0x0A000 xdata unsigned char PORT_A; at 0x0A003 xdata unsigned char CW; ACC A, #0FFH ACC A, #0FFH A A, #00H, LOOP2 ACC ACC, LOOP1 ACC unsigned char simpan; void main() { TMOD = 0x01; delay(100); CW = 0x80; delay(100); simpan = 0x01; while(1) { PORT_A = simpan; delay(1000); Laboratorium Sistem Komputer STIKOM Surabaya simpan = simpan << 1; } }

PORT_A CW

LJMP MULAI ORG 100H DELAY: PUSH MOV LOOP1: PUSH MOV LOOP2: DEC CJNE POP DJNZ POP RET

Praktikum Mikrokontroler

15

MULAI: LCALL MOV MOV MOVX MOV MOV ULANG: MOVX RL LCALL SJMP DELAY DPTR, #CW A, #80H @DPTR, A DPTR, #PORT_A A, #01H @DPTR, A A DELAY ULANG

Modifikasi program diatas dengan mengganti RL menjadi RR

2. 3. 4.

Buat program port A sebagai input dan port C sebagai output. Kemudian data yang diinputkan di port A dapat ditampilkan di port C. Buat program untuk memutar stepper motor dengan metode half step dan full step. 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 Percobaan 3 Seven segment Tujuan :

Praktikum Mikrokontroler

Teori :

Mengetahui cara untuk mengakses seven segment dengan metode scanning.

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
5 v

1 2 3 4 5

A B C G 2A G 2B

Y Y Y Y Y Y Y Y

0 1 2 3 4 5 6 7

1 1 1 1 1 1 9 7

5 4 3 2 1 0

74LS138

Laboratorium Sistem Komputer STIKOM Surabaya

G 1

Praktikum Mikrokontroler

17

74LS47 74LS47 adalah driver untuk mengubah bilangan BCD menjadi data seven segmen, dan seven segmen yang digunakan adalah common anode.
5 v

5 v

7 1 2 6 3 5 4

16

D D D D

0 1 2 3

LT R BI B I/R B O

A B C D E F G 8 G N D

1 1 1 1 9 1 1

3 2 1 0 5 4

74LS47

Dec

Inputs

VC C

LT
0 1 2 3 4 5 6 7 8 H H H H H H H H H

RBI D C B A
H X X X X X X X X LLLL LLLH LLHL LLHH LHLL LHLH LHHL LHHH HLLL

BI
H H H H H H H H H

Output

a
ON OFF ON ON OFF ON OFF ON ON

b
ON ON ON ON ON OFF OFF ON ON

c
ON ON OFF ON ON ON ON ON ON

d
ON OFF ON ON OFF ON ON OFF ON

e
ON OFF ON OFF OFF OFF ON OFF ON

f
ON OFF OFF OFF ON ON ON OFF ON

g
OFF OFF ON ON ON ON ON OFF 0 1 2 3 4 5 6 7

Laboratorium Sistem Komputer STIKOM Surabaya

18 9 10 11 12 13 14 15 H H H H H H H X H X X X X X X X X L H HLLH HLHL HLHH HHLL HHLH HHHL HH H H XX X X LLLL XX X X H H H H H H H L L H ON OFF OFF OFF ON OFF OFF OFF OFF ON ON OFF OFF ON OFF OFF OFF OFF OFF ON ON OFF ON OFF OFF OFF OFF OFF OFF ON OFF ON ON OFF ON ON OFF OFF OFF ON

Praktikum Mikrokontroler OFF ON OFF OFF OFF ON OFF OFF OFF ON ON OFF OFF ON ON ON OFF OFF OFF ON ON ON ON OFF OFF OFF ON

BI

RBI L

LT
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 1 2 3 4 5 g f co1 a b 7-Segment


Laboratorium Sistem Komputer STIKOM Surabaya

10 9 8 7 6

e d co2 c .

20 Prosedure Percobaan: .1 Ketik program di bawah ini, kemudian jalankan. PORT_A EQU CW EQU LJMP MULAI ORG 100H DELAY : PUSH MOV LOOP1 : LOOP2 : PUSH MOV DEC CJNE POP DJNZ POP RET MULAI : LCALL MOV MOV MOVX MOV MOV MOVX ADD LCALL CJNE SJMP DELAY DPTR, #CW A, #80H @DPTR, A DPTR, #PORT_A A, #00H @DPTR, A A, #01H DELAY A, #0AH, ULANG ISI ACC A, #0FFH ACC A, #0FFH A A, #00H, LOOP2 ACC ACC, LOOP1 ACC 0A000H 0A003H #include <reg51.h> #include <timer.h>

Praktikum Mikrokontroler

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); }

ISI : ULANG :

2. 3. 4.

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. Buatlah program counter-up pada 2 seven segment yang paling kanan, jika angka sudah menunjukan 99 maka counter akan berhenti. 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

Praktikum Mikrokontroler Percobaan 4 TIMER dan COUNTER Tujuan :

21

Teori :

Mengetahui cara penggunaan Timer Mengetahui cara penggunaan Counter

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 TF1 Timer 1 Simbol TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Posisi Fungsi TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 Timer 1 overflow flag (1 = overflow) Timer/Counter1 ON/OFF Timer 0 overflow flag Timer/Counter 0 ON/OFF External Interrupt 1 edge flag Interrupt 1 type control bit. Set / clear oleh software untuk menspesifikasikan sisi turun / level rendah trigger dari interupsi eksternal External Interrupt 0 edge flag Interrupt 0 type control bit Bit 6 TR1 Bit 5 TF0 Timer 0 Bit 4 TR0 Bit 3 IE1 Bit 2 IT1 Bit 1 IE0 Bit 0 IT0

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 GATE Bit 6 C/T Bit 5 M1 Timer 1 Bit 4 M0 Bit 3 GATE Bit 2 C/T Bit 1 M1 Timer 0 Bit 0 M0

Laboratorium Sistem Komputer STIKOM Surabaya

22 Simbol GATE C/T M1 M0 Posisi Fungsi TMOD.7 TMOD.6 TMOD.5 TMOD.4

Praktikum Mikrokontroler

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 Pemilih Timer/Counter (0 = Timer , 1 = Counter) Pemilih mode Timer/Counter Pemilih mode Timer/Counter

Kombinasi M0 dan M1 adalah sebagai berikut : M1 0 0 1 1 M0 0 1 0 1 Nama Mode 0 Mode 1 Mode 2 Mode 3 Operasi Timer/Counter 13 bit Timer/Counter 16 bit Timer auto-reload 8 bit (pengisian otomatis) 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 : Clock =

1 1 freq. XTAL 12 = 1 1 12 10 6 12

=
a.

1 10 6

= 10 6 s = 1 s Sebagai timer 8 bit T=

( 256 TLx ) clock

dimana TLx adalah isi register TL0 atau TL1 b. Sebagai timer 16 bit T=

( 65536 THxTLx ) clock


Laboratorium Sistem Komputer STIKOM Surabaya

THx = isi register TH0 atau TH1

Praktikum Mikrokontroler TLx = isi register TL0 atau TL1

23

Laboratorium Sistem Komputer STIKOM Surabaya

24 Counter

Praktikum Mikrokontroler

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. #include <reg51.h> PORT_A EQU 0A000H CW EQU 0A003H at 0x0A000 xdata unsigned char PORT_A; at 0x0A003 xdata unsigned char CW; LJMP MULAI ORG 100H void delay(unsigned int lama) { MULAI : unsigned int t; MOV TMOD,#01H for (t=1; t<=lama; t++) MOV DPTR, #CW { MOV A, #80H TH0 = 0xD8; TL0 = 0xF0; MOVX @DPTR, A TR0 = 1; MOV DPTR, #PORT_A while(!TF0); LOOPING : TR0 = 0; TF0 = 0; MOV A, #00H } MOVX @DPTR, A } ACALL DELAY MOV A, #0FFH void main() MOVX @DPTR, A { ACALL DELAY TMOD = 0x01; delay(1); SJMP LOOPING DELAY : CW = 0x80; delay(1); MOV R0, #64H LAGI : while(1) MOV TH0, #0D8H { MOV TL0, #0F0H PORT_A = 0; delay(100); SETB TR0 PORT_A = 0b11111111; delay(100); ULANG : } JNB TF0, ULANG } CLR TF0 CLR TR0 DJNZ R0, LAGI RET Gantilah program diatas dengan menggunakan Timer 1.

2. 3. 4.

Buatlah program simulasi counter dengan menggunakan Counter 0 atau Counter 1. Buatlah program simulasi untuk menghitung sinyal input per detik dengan memanfaatkan counter dan jumlah counter ditampilkan di Port 1 mikrokontroler. 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

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 0 b. 0 0 0 0 0 0 DB0 1

Function Set Function set digunakan untuk mengeset panjang data. DB7 0 0 * : invalid bit 1 DL 1 * * DB0 *

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 0 0 0 0 1 D C DB0 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 B : B = 1, tampilan karakter pada posisi cursor berkedip B = 0, tampilan tidak berkedip

Praktikum Mikrokontroler

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler d. Entry Mode Set Entry mode set mengatur arah pergerakan cursor. DB7 0 I/D : S: 0 0 0 0 1 I/D DB0 S

27

I/D = 1, address di-increment dan cursor bergerak ke kanan I/D = 0, address di-decrement dan cursor bergerak ke kiri 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. 6116P-1 6116P-2 6116P-3 6116LP-1 6116LP-2 6116LP-3 6264P-10 6264LP-70 6264LP-12 62256LP-10 62256LP-12 Kapasitas 16K 16K 16K 16K 16K 16K 64K 64K 64K 256K 256K Org. 2Kx8 2Kx8 2Kx8 2Kx8 2Kx8 2Kx8 8Kx8 8Kx8 8Kx8 32Kx8 32Kx8 Speed 100 ns 120 ns 150 ns 100 ns 120 ns 150 ns 100 ns 70 ns 120 ns 100 ns 120 ns Pins 24 24 24 24 24 24 28 28 28 28 28 Vpp CMOS CMOS CMOS Low power CMOS Low power CMOS Low power CMOS CMOS Low power CMOS Low power CMOS Low power CMOS 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. 2. Menggunakan daya yang sangat efisien (konsumsi daya yang rendah) SRAM sel yang terbuat dari CMOS. Menggunakan sebuah baterai lithium di dalamnya sebagai sebuah back-up energy source. 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.

3.

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler Tabel 5.2 Beberapa jenis NV-RAM Part No. DS1220Y-150 DS1225AB-150 DS1230Y-85 - DRAM (Dynamic RAM) Kapasitas 16K 64K 256K Org. 2Kx8 8Kx8 32Kx8 Speed 150 ns 150 ns 85 ns Pins 24 28 28 Vpp

29

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 4164-15 41464-8 41256-15 41256-6 414256-10 511000P-8 514100-7 Speed 150 ns 80 ns 150 ns 60 ns 100 ns 80 ns 70 ns Kapasitas 64 K 256 K 256 K 256 K 1M 1M 4M Org 64Kx1 64Kx4 256Kx1 256Kx1 256Kx1 1Mx1 4Mx1 Pins 16 18 16 16 20 18 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. #include <reg51.h> 100H START at 0x0E000 xdata unsigned char LCD_C; at 0x0E001 xdata unsigned char LCD_D; DISPCLR EQU 00000001B FUNCSET EQU 00111000B unsigned char DISPCLR = 0b00000001; DISPON EQU 00001110B unsigned char FUNCSET = 0b00111000; ENTRMOD EQU 00000110B unsigned char DISPON = 0b00001110; LCD_C EQU 0E000H unsigned char ENTRMOD = 0b00000110; LCD_D EQU 0E001H ORG LJMP

Laboratorium Sistem Komputer STIKOM Surabaya

30

Praktikum Mikrokontroler

DELAY: LAGI:

MOV MOV MOV SETB JNB CLR CLR DJNZ RET LCALL MOV MOV MOVX CALL SJMP

R0, #0AH TH0, #0D8H TL0, #0F0H TR0 TF0, ULANG TF0 TR0 R0, LAGI

ULANG:

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);

START: INIT_LCD DPTR, #LCD_C A, #10000000B @DPTR,A DELAY TRAP

TRAP:

CONTROL_OUT: MOV DPTR, #LCD_C MOVX @DPTR, A LCALL DELAY RET INIT_LCD: MOV LCALL MOV LCALL MOV LCALL MOV LCALL RET A, #DISPCLR CONTROL_OUT A, #FUNCSET CONTROL_OUT A,#DISPON CONTROL_OUT A,#ENTRMOD CONTROL_OUT

Buatlah Kesimpulan dari program diatas.

2.
3.

Buatlah program untuk menampilkan kalimat 'LABORATORIUM MIKROKONTROLER' pada baris 1 dan 2 pada LCD. 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

Praktikum Mikrokontroler Percobaan 6 ADC & DAC Tujuan : Teori : ADC (Analog Digital Converter) Mengetahui cara mengakses ADC & DAC pada minimum sistem Mikrokontroler 8031

31

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 0 0 1 1 3. Port C.0 0 1 0 1 Input analog Potensio 0 Potensio 1 Potensio 2 Potensio 3

Rumus untuk mencari tegangan dan bit decimal yang dicari : Bit_Decimal =

Volt =

( Decimal 255) Vref

Vin Vref 255

DAC (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 analog 2. Untuk Perhitungan Penentuan Bit Decimal dan Volt hampir sama dengan Perhitungan ADC. Procedure percobaan Dengan menggunakan Voltmeter, ukurlah tegangan referensi ADC dan DAC

1. 2.

Buatlah program untuk membaca data dari ADC ditampilkan di PortB. 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 Percobaan 7 KOMUNIKASI SERIAL

Praktikum Mikrokontroler

Tujuan :

Teori :

Mengetahui cara mengakses serial port pada minimum sistem Mikrokontroler 8031 Mengetahui cara membangun komunikasi secara serial

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 SM0 Simbol SM0 SM1 SM2 REN TB8 RB8 SM1 Posisi Fungsi SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 Pemilih mode port serial Pemilih mode port serial Membuat enable komunikasi multiprosesor dalam mode2 dan 3. Set/clear oleh perangkat lunak untuk menjalankan/ melumpuhkan penerimaan. Bit ke-9 yang akan dikirim dalam mode 2 dan 3. Set/clear secara software. 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 0 0 1 SM1 0 1 0 Nama Mode 0 Mode 1 Mode 2 Keterangan Shift Register 8 bit UART 9 bit UART Baud Rate Frek. osc / 12 Variabel Frek. osc / 64 atau frek.osc / 32 SM2 REN TB8 RB8 T1 LSB R1

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler 1 1 Mode 3 9 bit UART Variabel

35

Laboratorium Sistem Komputer STIKOM Surabaya

36 A. Mode 0

Praktikum Mikrokontroler

Mode 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 B. Mode 1

1 12

frekuensi kristal yang digunakan.

Mode 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 2 Data 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 kristal yang digunakan. D. Mode 3 Mode ini sama dengan mode 2, tetapi baudrate dapat diatur sesuai dengan keperluan. E. Baudrate Baudrate 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 =

1 32

atau

1 64

frekuensi

frekuensi osilasi 12

Sedangkan baudrate yang digunakan pada Mode 2 tergantung dari isi bit SMOD yang ada pada register PCON. Bit 7 SMOD Bit 6 Tabel 7.1 Susunan bit dalam register PCON Bit 5 Bit 4 Bit 3 Bit 2 GF1 GF0 Bit 1 PD Bit 0 IDL

Jika SMOD = 0 baudrate yang digunakan adalah digunakan

K=

1 . 64

Jika SMOD = 1 baudrate yang

K=

1 . 32
Baudrate = K

frekuensi _ osilasi

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 = Prosedur Percobaan:

K frekuensi _ osilasi 32 12 [ 256 ( TH 1) ]

1.

Ketik program di bawah ini kemudian jalankan, gunakan file SerialNGBasicDemo.exe untuk menerima data yang telah dikirimkan dari mikrokontroler. BAUDLOAD LJMP ORG S_INIT: MOV MOV MOV MOV RET OUT: EQU 0F4H START 100H SCON, #01010000B TMOD, #00100000B TCON, #01000000B TH1, #BAUDLOAD #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); } }

CLR TI MOV SBUF,A TUNGGU: JNB TI, TUNGGU RET START: LCALL S_INIT MOV A, #'a' LCALL OUT SJMP START

Tulislah kesimpulan dari program diatas.

2. 3.

Buatlah program untuk mengirimkan kalimat mikrokontroler ke PC.

LABORATORIUM

MIKROKONTROLER dari

Buatlah program untuk menerima data angka yang dikirimkan PC kemudian ditampilkan di PortA.

Percobaan 8 Laboratorium Sistem Komputer STIKOM Surabaya

38 INTERRUPT Tujuan : Mengetahui dan dapat menggunaan fasilitas interupsi

Praktikum Mikrokontroler

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 Reset Int 0 Timer 0 Int 1 Timer 1 Sint Lokasi 00H 03H 0BH 13H 1BH 23H Alat interupsi Power on reset INT 0 Timer 0 INT 1 Timer 1 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 EA Simbol EA ES ET1 EX1 ET0 EX0 ES ET1 EX1 ET0 LSB EX0

Posisi Fungsi IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 Enable / disable interupsi (0 = disable , 1 = enable) Kosong Kosong Enable interupsi serial Enable interupsi timer 1 Enable INT 1 Enable interupsi timer 0 Enable INT 0 Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler

39

Bit-bit IP didefinisikan sebagai berikut : Simbol PS PT1 PX1 PT0 PX0 PS PT1 PX1 PT0 PX0

Posisi Fungsi IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 Kosong Kosong Kosong Prioritas interupsi serial (0 = prioritas rendah , 1 = prioritas tinggi) Prioritas interupsi timer 1 Prioritas INT 1 Prioritas interupsi timer 0 Prioritas INT 0

1.

Ketik program dibawah ini: LJMP MULAI

#include <reg51.h> void Interrupt0() interrupt 0; void { IE IP P1 } void Interrupt0() interrupt 0 { P1 = 0x7F; } main() = 0x81; = 0x01; = 0xFE;

ORG 100H MULAI: MOV IE, #81H MOV IP, #01H MOV P1, #0FEH ULANG: NOP SJMP ULANG ORG 03H MOV RETI P1, #7FH

while(1);

Simulasikan program tersebut. Setelah beberapa saat beri masukan low pada kaki INT 0 (lihat skematik minimum sistem). Amati apa yang terjadi.

2. 3.

Buatlah program simulasi untuk menyalakan semua LED pada Port 1 dan mematikan semua LED pada Port 1 apabila ada interupsi INT 1. 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

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 12jam 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 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.

41

VCC GND Function

: + 5 Volt Supply. : Ground. Decimal Range 0-59 0-59 0-59 0-59 1-12 0-23 1-12 0-23 1-7 1-31 1-12 0-99 0-255 0-255 0-255 Range Binary Data Mode BCD Data Mode 00-3B 00-59 00-3B 00-59 00-3B 00-59 00-3B 00-59 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM 00-17 00-23 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM 00-17 00-23 01-07 01-07 01-1F 01-31 01-0C 01-12 00-63 00-99 00-FF N/A 00-FF N/A 00-FF N/A

Address Location 0 1 2 3 4 5 6 7 8 9 A B C Register A MSB UIP

Seconds Seconds Alarm Minutes Minutes Alarm Hours (12 hours mode) Hours (24 hours mode) Hours Alarm (12 hours mode) Hours Alarm (24 hours mode) Day of the week (Sunday = 1) Date of Month Month Year Register A Register B Register C

LSB 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 SET PIE AIE UIE SQWE DM 24/12 LSB 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 IRQF PF AF UF 0 0 0 LSB 0

IRQF : Interrupt Request Flag bit adalah bit ini akan di set satu jika salah satu dari bit dibawah ini : PF = PIE = 1 AF = AIE = 1 UF = 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) AF (Alarm Interrupt Flag) UF (Update Ended Flag) : bit ini bernilai 1 saat sinyal berada pada posisi high. : bit ini akan bernilai 1 saat alarm aktif. : 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 MOV MOVX LCALL MOV MOV MOVX LCALL LAGI: MOV MOVX ANL JNB CLR LCALL MOV MOV MOVX SJMP DPTR, #0C00Ch A, @DPTR A, #80H ACC.7, LAGI ACC.7 DELAY DPTR, #0C000H A, #00H A, @DPTR LAGI DPTR, #0C00AH A, #20H @DPTR, A DELAY DPTR, #0C00BH A, #16H @DPTR, A DELAY 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);

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler 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 MOV MOVX LCALL MOV MOV MOVX DPTR, #0C00BH A, #86H @DPTR, A DELAY DPTR, #0C000H A, #10 @DPTR, A void tulis_detik(unsigned int dtk) { Register_B = 0x86; delay(10); detik = dtk; delay(10); }

45

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

46 Percobaan 10 Matrix LED Tujuan :

Praktikum Mikrokontroler

Teori :

Agar mahasiswa dapat membuat display dari Marix LED

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 Rangkaian Matrix Led


P 1 [0 ..6 ] P 1 .0 P 1 .1 P 1 .2 P 1 .3 P 1 .4 P 1 .5 P 1 .6 VC C

47

R 1 R Q 6 2N 2222 Q 1 2N 2222 R 9 220 R 10 220 R 11 220 R 12 220 R 13 220 R 14 220 R 15 220

R R R R R R R D A TA = P 3 .5 C C C C C 1 2 3 4 5

1 2 3 4 5 6 7

U 1? M a t r ix le d

3 2 4 5 6 7 1 1 1 1 D Q D Q D Q D Q D Q C LR C LK Q 6 15 C L K = P 3 .3 C L R = P 3 .4 1 1 2 2 3 3 4 4 5 5 U 2 7 4 1 7 4 (S H IF T R E G IS T E R )

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 menampilkan Huruf A ke Matrix LED : ;P3.3 = clock ;P3.4 = clear ;P3.5 = data LJMP MULAI ORG 50H DELAYLOAD : Laboratorium Sistem Komputer STIKOM Surabaya

14

D 6

1 0 3 2

48 PUSH MOV PUSH MOV LOOP2 : DEC CJNE POP DJNZ POP RET PUSH MOV PUSH MOV DEC CJNE POP DJNZ POP RET ; prosedur Clock CLOCK : CLOCKX: SETB LCALL CLR LCALL DJNZ RET CLEAR : CLR LCALL SETB LCALL RET AMBIL_DATA: MOV MOVC RET MULAI : LCALL LCALL MOV SETB MOV LCALL DELAYLOAD CLEAR P1, #0FFH P3.5 R0, #11 CLOCK P3.4 DELAY P3.4 DELAY LOOP2 : ACC A, #0FFH ACC A, #0FFH A A, #00H, LOOP2 ACC ACC, LOOP1 ACC

Praktikum Mikrokontroler

LOOP1 :

#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); }

DELAY : LOOP1 :

ACC A, #01H ACC A, #09FH A A, #00H, LOOP2 ACC ACC, LOOP1 ACC

P3.3 DELAY P3.3 DELAY R0, CLOCKX

A, #00H A, @A+DPTR

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler TRAP: P1 = 0; data_ = 1; clock(6); delay(5); } }

49

MOV LCALL MOV CLR MOV LCALL INC LCALL MOV SETB MOV LCALL INC LCALL MOV SETB MOV LCALL INC LCALL MOV SETB MOV LCALL INC LCALL MOV SETB MOV LCALL MOV MOV LCALL SJMP

DPTR, #HURUF_A AMBIL_DATA P1, A P3.5 R0, #1 CLOCK DPTR AMBIL_DATA P1,A P3.5 R0, #1 CLOCK DPTR AMBIL_DATA P1,A P3.5 R0, #1 CLOCK DPTR AMBIL_DATA P1,A P3.5 R0, #1 CLOCK DPTR AMBIL_DATA P1,A P3.5 R0, #1 CLOCK P1, #00H R0, #6 CLOCK TRAP

ORG 500H HURUF_A: DB DB DB DB DB END

11111110B 00011001B 00011001B 00011001B 11111110B

Laboratorium Sistem Komputer STIKOM Surabaya

50 Catatan : CLK = CLR = DATA = P1.0 P1.7

Praktikum Mikrokontroler

P3.3 //Digunakan untuk mengontrol Kolom P3.4 P3.5 digunakan untuk mengontrol Baris

Prosedur Percobaan :

1. 3.

Dari contoh program diatas ganti dengan huruf B, lalu tampilkan ke matrix LED ?

2. Dari program diatas tampilkan huruf A dan B secara bersamaan ? Buatlah program untuk membuat tulisan berjalan di matrix LED ?

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler LAMPIRAN PERANGKAT INSTRUKSI MIKROKONTROLER 8031 Periode Osilasi

51

Mnemonic

Deskripsi

Byte

Operasi Aritmatika ADD A,#data ADD A,@Rn ADD A,Rn ADD A,addr ADDC A,#data ADDC A,@Rn ADDC A,Rn ADDC A,addr SUBB A,#data SUBB A,@Rn SUBB A,Rn SUBB A,addr INC @Rn INC A INC DPTR INC Rn INC addr DEC @Rn DEC A DEC Rn DEC addr MUL AB DIV AB DA A Operasi Logika ANL A,#data ANL A,@Rn ANL A,Rn ANL A,addr ANL addr,#data ORL A,#data ORL A,@Rn ORL A,Rn ORL A,addr ORL addr,#data XRL A,#data XRL A,@Rn XRL A,Rn XRL A,addr XRL addr,#data

Add immediate data Add indirect address Add register Add memory Add carry plus immediate data to accumulator Add carry plus indirect address to accumulator Add carry plus register to accumulator Add carry plus memory to accumulator Subtract immediate data from accumulator with borrow Subtract indirect address from accumulator with borrow Subtract register from accumulator with borrow Subtract memory from accumulator with borrow Increment indirect address Increment accumulator Increment data pointer Increment register Increment memory Decrement indirect address Decrement accumulator Decrement register Decrement memory Multiply accumulator by B Divide accumulator by B Decimal adjust accumulator

2 1 1 2 2 1 1 2 2 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1

12 12 12 12 12 12 12 12 12 12 12 12 12 12 24 12 12 12 12 12 12 48 48 12

Logical AND immediate data to accumulator Logical AND indirect address to accumulator Logical AND register to accumulator Logical AND memory to accumulator Logical AND immediate data to memory Logical OR immediate data to accumulator Logical OR indirect address to accumulator Logical OR register to accumulator Logical OR memory to accumulator Logical OR immediate data to memory Logical Exclusive OR immediate data to accumulator Logical Exclusive OR indirect address to accumulator Logical Exclusive OR register to accumulator Logical Exclusive OR memory to accumulator Logical Exclusive OR immediate data to memory

2 1 1 2 3 2 1 1 2 2 2 1 1 2 3

12 12 12 12 24 12 12 12 12 12 12 12 12 12 24

Laboratorium Sistem Komputer STIKOM Surabaya

52 CLR CPL Operasi Bit RL RLC RR RRC SWAP A A Clear accumulator Complement accumulator

Praktikum Mikrokontroler 1 1 12 12

A A A A A

Rotate accumulator left Rotate accumulator and carry flag left Rotate accumulator right Rotate accumulator and carry flag right Exchange nibbles in accumulator

1 1 1 1 1 1

12 12 12 12 12 12

Transfer Data MOV A,Rn MOV A,addr MOV A,@Rn MOV A,#data MOV @Rn,#data MOV @Rn,A MOV @Rn,addr MOV DPTR,#data MOV addr,addr MOVX @DPTR,A MOVX MOVX MOVX PUSH POP XCH XCH XCHD @Rn,A A,@DPTR A,@Rn Addr Addr A,@Rn A,Rn A,@Rn

Move register to accumulator Move memory to accumulator Move indirect address to accumulator Move immediate data to accumulator Move immediate data to indirect address Move accumulator to indirect address Move memory to indirect address Move immediate data to data pointer Move memory to memory Move accumulator to external memory addressed by data pointer Move accumulator to external memory addressed by register Move external memory addressed by data pointer to accumulator Move external memory addressed by register to accumulator Push memory onto stack Pop stack to memory Exchange indirect address with accumulator Exchange register with accumulator Exchange low nibbles of indirect address with accumulator

1 2 1 2 2 1 2 3 3 1 1 1 1 2 2 1 1 1

12 12 12 12 12 12 24 24 24 24 24 24 24 24 24 12 12 12

Variabel Boolean Untuk Manipulasi CLR C Clear carry flag CLR Addr Clear bit SETB C Set carry flag SETB Addr Set bit CPL C Complement carry flag CPL Addr Complement bit ANL C,addr Logical AND bit to carry flag ANL C,/addr Logical AND complement of bit to carry flag ORL C,addr Logical OR bit to carry flag ORL C,/addr Logical OR complement of bit to carry flag MOV C,addr Move bit to carry flag JC Addr Jump if carry is set JNC Addr Jump if carry is not set JB Addr Jump if bit is set

1 2 1 2 1 2 2 2 2 2 2 2 2 3

12 12 12 12 12 12 24 24 24 24 12 24 24 24

Laboratorium Sistem Komputer STIKOM Surabaya

Praktikum Mikrokontroler JNB JBC Addr Addr Jump if bit is not set Jump and clear if bit is set 3 3 24 24

53

Program Percabangan ACALL Addr LCALL Addr RET RETI AJMP Addr LJMP Addr SJMP Addr JMP @A+DPTR JZ Addr JNZ Addr CJNE @Rn,#data,addr CJNE A,#data,addr CJNE A,addr,addr DJNZ Rn,addr DJNZ addr,addr NOP

Absolute call Long call Return from subroutine (Non interrupt) Return from interrupt routine Absolute jump within 2K byte page Long jump Short jump Jump to sum of accumulator and data pointer Jump if accumulator is zero Jump if accumulator is not zero Compareindirectaddresstoimmediatedata,Jumpifnotequal Compare immediate data to accumulator,Jump if not equal Compare memory to accumulator,Jump if not equal Decrement register and jump if not zero Decrement memory and jump if not zero No operation

2 3 1 1 2 3 2 1 2 2 3 3 3 2 3 1

24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 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

Anda mungkin juga menyukai