YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 1 | Politeknik Jambi – Irwan Kurniawan, ST

PENGENALAN MIKROKONTROLER

Mikrokontroler, jika diterjemahkan secara harfiah, berarti pengendali yang berukuran mikro. Sekilas mikrokontroler hampir sama dengan mikroprosesor. Namun mikrokontroler memiliki banyak komponen yang terintegrasi didalamnya, misalnya timer/counter.Sedangkan pada mikroprosesor, komponen tersebut tidak terintegrasi. Mikroprosesor umumnya terdapat pada komputer dimana tugas dari mikroprosesor adalah untuk memproses berbagai macam data input maupun output dari berbagai sumber. Mikrokontroler lebih sesuai untuk tugas-tugas yang lebih spesifik

Gambar 1 Perbedaan mikrokontroler dengan mikroprosesor

MCS-51 pertama kali dikembangkan oleh Intel Corporation pada tahun 70-an sehingga dapat dibilang usia MCS-51 sudah lebih dari 23-tahun. MCS-51 merupakan salah satu keluarga mikrokontroler yang sampai sekarang masih banyak dikembangkan oleh berbagai produsen semacam Atmel Corp., Philips Semiconductors, Cygnal Integrated Products, Inc., dan Winbond Electronics Corp. Beberapa contoh mikrokontroler yang

merupakan keluarga MCS-51, yaitu AT89C51, AT89C52, dll.

Gambar 2. Arsitektur MCS51

Page 2: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 2 | Politeknik Jambi – Irwan Kurniawan, ST

REGISTER DAN MEMORI INTERNAL MCS-51

Memori Internal MCS51 terdiri dari 3 bagian yaitu ROM, RAM, SFR

ROM/Read Onli Memory adalah adalah memori tempat menyimpan program / source code. Sifat ROM adalah non-volatile, data / program tidak akan hilang walaupun tegangan supply tidak ada. Kapasitas ROM tergantung dari tipe mikrokontroler. Untuk MCS-51 kapasitas ROM adalah 4 Kbyte yang menempati address 0000 s/d 0FFF. RAM/Random Acces Memoryadalah memori tempat menyimpan data sementara. Sifat RAM adalah volatile, data akan hilang jika tegangan supply tidak ada. RAM pada

MCS-51 memiliki kapasitas 128 byte yang menempati alamat (00h-7Fh). Yang dapat diakses dengan pengalamatan langsung(direct) maupun tidak langsung (indirect). Contoh:

>>direct mov 30h,#120 ;pindahkan data 120 ke alamat 30h >>indirect mov R0, #30h ;isi register R0 dengan 30h mov @R0, #120 ;isikan data 120 ke alamat sesuai isi R0

SFR/Special Function Registeradalah register dengan fungsi tertentu menempati alamat (80h-FFh). Penjelasan SFR akan dipaparkan pada bagian lain dari modul ini. Peta Memori Internal MCS-51

Gambar 3. Peta Memori Internal MCS51

Berdasarkan penggunaannya ROM disebut sebagai Program Memory, sedangkan RAM dan SFR disebut sebagai Data Memory. Program Memori digunakan untuk menyimpan

program / source code dari user. Sedangkan data memori digunakan untuk menyimpan data. Internal Program Memory Program Memory berfungsi untuk menyimpan kode program user yang akan dijalankan. User dapat menggunakan internal program memory yang tertanam dalam IC MCS-51 dan external program memory. Internal Program Memory selain berisi instruksi user,

juga memiliki beberapa alamat khusus yang ditujukan untuk reset address (alamat yang dituju saat pertama kali mikrokontroler bekerja) dan interrupt vector address.

Page 3: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 3 | Politeknik Jambi – Irwan Kurniawan, ST

Alamat Reset dan Interrupt Vektor

0023h Serial Interrupt

001Bh Timer 1 Interrupt

0013h External Interrupt 1

000Bh Timer 0 Interrupt

0003h External Interrupt 0

0000h Reset

Internal Data Memory Untuk internal data memory meliputi : - Register Banks - Bit-addressable RAM - General Purpose RAM (Stratch Pad Area) - Special Function Registers (SFR)

Organisasi Internal data Memory

80h-FFh Special Function Register

30h-7Fh General Purpose RAM

20h-2Fh Bit-addressable RAM

00h-1Fh Register Banks

General Purpose RAM (30h-7Fh)

General Purpose RAM atau sering disebut juga sebagai Stratch Pad Area adalah ruang data memory yang bebas digunakan user sebagai tempat penyimpanan variabel atau sebagai alamat inisialisasi Stack Pointer.General Purpose RAM hanya dapat diakses per byte.

Bit-Addressable RAM (20h-2Fh)

Bit-addressable RAM memiliki fungsi yang sama dengan General Purpose RAM. User juga dapat menggunakan ruang ini untuk menyimpan variabel atau alamat inisialisasi Stack Pointer.Berbeda dengan General Purpose RAM, Bit-addressable RAM tidak hanya dapat diakses per byte namun juga dapat diakses per bit.

Register Banks (00h-1Fh)

Internal data memory memuat 4 register banks, yaitu: Register Bank0, Register Bank 1, Register Bank 2, Register Bank 3. Register Banks ini digunakan sebagai alamat untuk menampung delapan register selebar 1 byte yang diberi nama R0, R1, dan seterusnya hingga R7. Secara default, kedelapan register ini akan menempati Register Bank 0.

Pembagian Register Bank

00h-007h Register Bank 0

08h-0Fh Register Bank 1

10h-17h Register Bank 2

18h-1Fh Register Bank 3

Special Function Register

SFR merupakan sejumlah register khusus yang mencakup alamat port, Accumulator, register B, timer, dan sejumlah register kontrol. Beberapa dari SFR juga dapat diakses per bit (bit-addressable).

80h P0 Port 0

81h SP Stack Pointer

Page 4: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 4 | Politeknik Jambi – Irwan Kurniawan, ST

82h DPL Data Pointer Low Byte

83h DPH Data Pointer High Byte

87h PCON Power Control

88h TCON Time Control

89h TMOD Time Mode

8Ah TL0 Register Timer 0 Low Byte

8Bh TL1 Register Timer 1 Low Byte

8Ch TH0 Register Timer 0 High Byte

8Dh TH1 Register Timer 0 High Byte

90h P1 Port 1

98h SCON Serial Port Control

99h SBUF Serial Port Buffer

A0h P2 Port 2

A8h IE Interrupt Enable

B0h P3 Port 3

B8h IP Interrupt Periority

D0 PSW Program Status Word

E0 ACC Accumlator

F0 B Register B

Program Status Word

Program Status Word (PSW) selebar 1 byte mencakup status bit dengan

konfigurasi dari Most Significant Bit (MSB) hingga Least Significant Bit (LSB)

Alokasi Bit PSW

CY AC F0 RS1 RS0 OV - P

7 6 5 4 3 2 1 0

Keterangan : CY

Carry Flag bernilai ‗1‘ jika sebuah penjumlahan menghasilkan nilai lebih dari 255 atau FFh. Carry flag juga akan bernilai ‗1‘ jika sebuah pengurangan menghasilkan nilai kurang dari 0. Selain itu, carry flag juga dapat diakses oleh user secara langsung.

AC Auxiliary carry flag bernilai ‗1‘ jika penjumlahan Binary Coded Decimal (BCD) menghasilkan nilai lebih dari 9.

F0 Flag 0 merupakan general purpose flag yang dapat digunakan untuk aplikasi user. RS0 RS1 Register bank select digunakan untuk menentukan register bank yang aktif untuk

R0 hingga R7.contoh: 00(RS1=0, RS0=0) – register bank 0 , 01(RS1=0, RS0=1) register bank 1 dst. OV Overflow flag bernilai ‗1‘ jika ada penambahan atau pengurangan signed number yang menghasilkan nilai lebih dari +127 atau kurang dari -128. Jika proses penambahan atau pengurangan tidak menggunakan signed number, maka

perubahan OV dapat diabaikan.

Page 5: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 5 | Politeknik Jambi – Irwan Kurniawan, ST

P Parity Flag digunakan untuk menggenapi jumlah bit yang bernilai ‗1‘ pada accumulator. Parity flag bernilai ‗1‘ jika jumlah bit yang bernilai 1 pada accumulator berjumlah ganjil dan bernilai ‗0‘ jika jumlah bit yang bernilai 1 pada accumulator berjumlah genap. Register ACC (Accumulator)

Register Accumulator (ACC) banyak digunakan dalam berbagai instruksi. ACC

bersama dengan register B dalam proses perkalian dan pembagian. ACC akan

menyimpan hasil perkalian 8 bit terbawah (low byte) dan hasil bagi. Selain itu

register ACC juga merupakan general purpose register selebar 8 bit yang dapat

digunakan untuk aplikasi user.

Register B

Register B digunakan bersama dengan Accumulator dalam proses perkalian dan

pembagian. Register B akan menyimpan hasil perkalian 8 bit teratas (high byte)

dan sisa pembagian. Selain itu register B juga merupakan general purpose

register selebar 8 bit yang dapat digunakan untuk aplikasi user.

Stack Pointer Stack Pointer (SP) merupakan register 8 bit yang berisi lokasi dimana data alamat stack teratas disimpan. Instruksi PUSH, LCALL, proses interrupt, dan sejenisnya akan menambah nilai pada SP. Sedangkan instruksi POP, RET, RETI, dan sejenisnya akan mengurangi nilai pada SP.

Data Pointer Data Pointer (DPTR) merupakan register 16 bit yang terdiri dari 8 bit Data Pointer High (DPH) dan 8 bit Data Pointer Low (DPL). DPTR umumnya digunakan untuk mengakses alamat pada memori eksternal. Port Register (P0,P1,P2 dan P3) Port register merupakan register yang mewakili alamat port. Register input/output ini meliputi Port 0 (P0), Port 1 (P1), Port 2 (P2), dan Port 3 (P3).

Timer Register Timer Register merupakan register yang digunakan untuk mengatur operasi timer. Register ini meliputi Timer 1 High Byte (TH1), Timer 0 High Byte (TH0), Timer 1 Low Byte (TL1), Timer 0 Low Byte (TL0), Timer Mode (TMOD), dan Timer Control (TCON).

Serial Port Register

Serial Port register merupakan register yang digunakan dalam proses komunikasi serial. Register ini meliputi Serial Data Buffer (SBUFF) dan Serial Port Control (SCON).

Interrupt Register

Interrupt register merupakan register yang digunakan untuk mengatur proses interrupt. Register ini meliputi Interrupt Enable (IE) dan Interrupt Priority (IP).

Page 6: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 6 | Politeknik Jambi – Irwan Kurniawan, ST

PIN OUT MCS-51

Pin adalah kaki fisik dari sebuah IC MCS-51. Masing-masing pin memiliki fungsi dan karakteristik tersendiri yang harus diperhatikan oleh user. MCS-51 memiliki beberapa

pin, ada yang berfungsi sebagai jalur input/output (I/O), ada ang berfungsi sebagai jalur kontrol, dan ada juga yang berfungsi sebagai address bus atau data bus.

Gambar 4. Pin Out IC AT89C51

Keterangan:

Port 0 merupakan salah satu port yang berfungsi sebagai general purpose I/O dengan lebar 8 bit. Port 0 terdiri dari P0.0, P0.1, hingga P0.7. Selain sebagai jalur I/O, port 0 juga berfungsi sebagai multiplexed address(A0-A7)/data(D0-

D7) bus.

Port 1 merupakan salah satu port yang berfungsi sebagai general purpose I/O dengan lebar 8 bit. Port 0 terdiri dari P1.0, P1.1, hingga P1.7. Port 1 tidak memiliki fungsi lain.

Port 2 merupakan salah satu port yang berfungsi sebagai general purpose I/O

dengan lebar 8 bit. Port 2 terdiri dari P2.0, P2.1, hingga P2.7. Selain sebagai jalur I/O, port 2 juga berfungsi sebagai high byte (A8-A15) address bus.

Port 3 merupakan salah satu port yang berfungsi sebagai general purpose I/O

dengan lebar 8 bit. Port 3 terdiri dari P3.0, P3.1, hingga P3.7. Selain sebagai jalur I/O, port 0 juga berfungsi sebagai jalur penerimaan/pengiriman data pada komunikasi serial, external interrupt, timer/counter, dan external data memory write/read strobe.

Page 7: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 7 | Politeknik Jambi – Irwan Kurniawan, ST

Bit Nama Fungsi Lain

P3.0 RXD Jalur penerimaan data pada komunikasi serial

P3.1 TXD Jalur pengiriman data pada komunikasi serial

P3.2 External Interrupt 0

P3.3 External Interrupt 1

P3.4 T0 Timer/Counter 0 External Input

P3.5 T1 Timer/Counter 1 External Input

P3.6 External data memory write strobe

P3.6 External data memory read strobe

PSEN

Program Store Enable ( PSEN) merupakan jalur kontrol untuk mengakses external program memory. PSEN umumnya dihubungkan dengan output enable pada external memory. PSEN akan bernilai low pada saat pembacaan program dari external memory. PSEN akan bernilai high pada saat pembacaan program dari internal memory.

ALE Address Latch Enable (ALE) berfungsi sebagai demultiplexer pada saat port 0 bekerja sebagai multiplexed address/data bus.

EA External Access ( EA) merupakan pin yang berfungsi sebagai input kontrol.

Jika EA bernilai low, maka program hanya akan dijalankan dari external program memory. Jika EA bernilai high, maka program akan dijalankan dari internal program memory.

RST Pin ini berfungsi sebagai input untuk melakukan reset terhadap MCS-51. Jika RST bernilai high selama minimal 2 machine cycle, MCS-51 akan di-reset dan nilai internal register akan dikembalikan seperti keadaan awal pada saat MCS-51 baru mulai bekerja.

OSC (On-Chip Oscillator) Koneksi dengan on-chip oscillator terdiri dari dua pin yaitu XTAL1 dan XTAL2. Pin XTAL1 merupakan input bagi inverting oscillator amplifier yang terdapat dalam IC MCS-51. Pin XTAL2 merupakan output dari inverting oscillator

amplifier tersebut. Dalam mikrokontroler dikenal istilah Machine Cycle (MC) / Siklus Mesin, dimana : 1 MC= 6 state = 12 periode clock. Jika frekuensi crystal yang digunakan adalah 12 MHz maka 1 MC = 12/frekuensi crystal = 12/12 MHz =1uS

Page 8: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 8 | Politeknik Jambi – Irwan Kurniawan, ST

SISTEM MINIMUM MIKROKONTROLER MCS51

Proses perancangan minimum system merupakan tahap yang harus dikuasai agar sistem yang dirancang dapat berfungsi sebagaimana mestinya. Langkah pertama dalam

merancang sistem adalah menentukan mikrokontroler yang akan digunakan. Varian yang sering digunakan dalam minimum system adalah 89C51.IC 89C51 memiliki kemampuan dan fasilitas yang cukup lengkap untuk aplikasi sederhana dan umum.

Minimum system yang baik memiliki kemampuan untuk mengakses external

memory atau perangkat I/O dengan alamat maksimum selebar 16 bit (A0-A15). Untuk menghubungkan antara mikrokontroler dan memori atau pun perangakat i/o lainnya

dibutuhkan sebuah IC latch pada proses de-multipleks alamat/data (AD0-AD7). Komponen yang sering digunakan sebagai latch adalah 74LS373.

Gambar 5. Sistem Minimum MCS51

Untuk proses de-multipleks address dan data dilakukan melalui sinyal kontrol ALE (pin ALE) yang terhubung ke IC Latch 74LS373. Ketika MCS51 mengeluarkan alamat melalui pin P0.0-P0.7, sinyal ALE akan diset ke kondisi ‗1‘ sehingga IC latch akan melewatkan alamat (A0-A7) ke bus alamat. Selama ALE berada pada kondisi ‗0‘ maka alamat pada keluaran IC Latch akan tertahan atau tidak berubah. Ketika MCS51

mengeluarkan data (D0-D7) maka sinyal akan ALE diset ke kondisi ‗0‘.

Page 9: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 9 | Politeknik Jambi – Irwan Kurniawan, ST

PENDEKODEAN ALAMAT MEMORI DAN I/O Agar MCS51 dapat mengirim/membaca data dari sebuah lokas memori atau port I/O maka diperlukan alamat atau lokasi data dari perangkat yang terhubung baik memori

atau port I/O. Kemudian perpindahan data disebut valid jika nilai alamat yang dikeluarkan oleh MCS51 hanya terhubung ke satu perangkat memori atau port I/O saja. Artinya alamat tersebut hanya untuk satu lokasi data saja apakah itu dari memori atau dari port I/O. Penulisan/pembacaan data dilakukan melalui bus data. Agar alamat yang digunakan hanya terhubung ke satu lokasi data saja, maka perlu dilakukan pendekodean alamat memori dan port I/O. Dalam proses pendekodean alamat memori pemetaan lokasi memori dan port I/O harus digabung.

IC yang sering digunakan pada pendekodean alamat memori / port I/O adalah IC

dekoder 74LS138. Keluaran dari Y0-Y7 akan aktif (low) sesuai dengan data yang

diinputkan pada pin A,B,C, dengan ketentuan input E1,E2,E3 diberi kondisi sesuai logika

pengaktifnya yaitu E1=1, E2=0 dan E3=0.

Gambar 7. IC Dekoder 74LS138

Perhatikan contoh berikut !

Sistem dirancang dengan pemetaan alamat seperti berikut:

Alamat Perangkat

30h-37h 8 buah PORT I/O

800h s/d FFFh 1 Buah RAM 2 KB (11 bit Alamat)

Pada pemetaan diatas ketika MCS51 mengakses alamat 800h maka data yang terhubung ke Bus data adalah data dari/ke perangkat memori. Misalkan MCS51 mengeluarkan

alamat 800h dan data 40h maka data 40h tersebut akan dikirimkan ke perangkat

Page 10: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 10 | Politeknik Jambi – Irwan Kurniawan, ST

memori bukan port I/O. Contoh lainya, misalkan MCS51 mengeluarkan alamat 35h dan data 23h maka data 23h tersebut akan dikeluarkan melalui Port I/O (8 LED) bukan ke perangkat lain. Pendekodean alamat akses memori: Pada kasus ini alamat memori yang digunakan 800h s/d FFFh

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 800h

0 0 0 0 1 x x x x x X x x x x x s/d

0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 FFFh

x => 0 atau 1

Perhatikan bit alamat A0-A10 mengalami perubahan jika MCS 51 mengakses lokasi alamat dari 800h sampai FFFh. Sehingga bit alamat A11-A15 yang digunakan untuk proses pendekodean alamat.

A15 A14 A13 A12 A11

0 0 0 0 1

Ketika MCS51 mengeluarkan alamat dengan kondisi A11-A15 seperti pada tabel maka MCS51 akan mengakses data dari memori dengan lokasi sesuai nilai alamat yang ditunjukan oleh A0-A10. Proses pendekodean alamat memori dilakukan dengan memperhatikan bit A11-A15. Bit-bit alamat ini diinputkan ke rangkaian pendekodean yang dirancang sedemikian rupa agar ketika bit alamat A11-A15 pada kondisi seperti tabel diatas, maka keluaran dari

rangkaian decoder akan meng-aktifkan IC memori yang terhubung melalui pin CE atau CS atau OE tergantung IC memori yang digunakan.

Pendekodean alamat untuk akses Port I/O:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 30h

0 0 0 0 0 0 0 0 0 0 1 1 0 x x x s/d

0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 37h

x => bisa 0 atau 1

Sama seperti pendekodean alamat akses memori, dari tabel diatas terlihat bit alamat A4 – A15 tidak berubah ketika MCS51 mengakses 8 Port I/O.

Sehingga bit penentu alamat akses memori dan 8 Port I/O tersebut dapat dilihat pada tabel berikut: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 1 1 0 - - - 30h-37h

0 0 0 0 1 - - - - - - - - - - - 800h- FFFh

Perhatikan nomor bit alamat yang dilingkari, bit A11-A13 digunakan untuk membedakan pengaksesan memori 800h-FFFh (001) atau pengaksesan Port 30h-37h (000) sedangkan bit A0-A2 digunakan menentukan Port mana yang dipilih dari 8 buah port yang ada (000-111) yaitu port 30h s/d 37h. Sementara itu bit lainnya dihubung ke gerbang logika atau dihubungkan langsung ke IC dekoder 74LS138. Bentuk rangkaiannya dapat dilihat pada gambar berikut:

Page 11: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 11 | Politeknik Jambi – Irwan Kurniawan, ST

Gambar 8 Rangkaian dekoder memori dan port I/O

Page 12: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 12 | Politeknik Jambi – Irwan Kurniawan, ST

ANTARMUKA / INTERFACING MEMORI DAN PORT I/O

Untuk melakukan interfacing antara MCS51 dengan memori RAM dibutuhkan sinyal

kontrol RD /WR sebagai sinyal baca/ sinyal tulis dan sinyal Chip Enable(CE), alamat

yang digunakan untuk mengakses memori akan berpengaruh pada pin CE (Chip Enable),

ketika alamat yang diakses berada dalam range lokasi memori yang telah dirancang

sebelumnya, maka pin CE diinputkan sinyal aktif (LOW). Pin CE dihubungkan langsung

ke rangkaian pendekodean alamat memori, seperti yang telah dijelaskan sebelumnya.

Pin hubungan alamat pada memori (misalnya A0-A10 – 2KB) terhubung ke bus alamat

A0-A10 dari MCS51, sedangkan bus data terhubung ke hubungan data (D0-D7) dari

perangkat memori .perhatikan gambar berikut:

Gambar 9. Contoh Antarmuka MCS51 dengan Memori RAM 2 KB

Pin CE terhubung ke keluaran CS-RAM dari rangkaian pendekodean alamat memori. Pin

OE (Output Enable) terhubung ke pin RD dari MCS51 sebagai sinyal baca (aktif low). Pin

WE (Write Enable) terhubung ke pin WR dari MCST51 sebagai sinyal tulis (aktif low).

Untuk melakukan antar muka PORT I/O ke MCS51 sebagai jalur input, biasanya

digunakan sebuah IC Buffer Bidireksional 74LCS245. Prinsip kerja IC ini adalah

melewatkan data dari A ke B atau sebaliknya. Arah perpindahan data ditentukan dari pin

input AB/BA. Jika pin ini diberi logika ‗0‘ maka arah perpindahan data adalah dari B ke A,

sebaliknya jika pin ini diberi logika ‗1‘ maka arah data adalah dari A ke B. Pin CE

digunakan sebagi pengaktif chip (Chip Enable) ketika CE bernilai 0 maka IC 74LS245

dapat berfungsi, jika CE bernilai 1 maka IC 74LS245 tidak berfungsi (non-aktif).

Perhatikan gambar berikut :

Page 13: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 13 | Politeknik Jambi – Irwan Kurniawan, ST

Gambar 10. Antarmuka Port Input

Pin CE dan AB/BA dihubungkan ke keluaran gerbang OR dari CS-PORT-35H dan sinyal

kontrol RD sebagai sinyal pembacaan data input.

Untuk antarmuka MCS51 dengan PORT sebagai jalur Output, dapat menggunakan IC

Latch 74LS373, IC ini berfungsi sebagai penyangga data. Data keluaran akan tertahan

selama sinyal LE(Latch Enable) berlogika ‗0‘ dan akan berubah ketika diberikan sinyal LE

(Latch Enable) logika ‗1‘. Perhatikan gambar dibawah ini:

Gambar 11. Antarmuka Port Output

Sinyal LE diperoleh dari keluaran gerbang NOR yang dihubungkan dengan sinyal CS-

PORT dan sinyal WR sebagai sinyal write dari MCS51. Ketika MCS51 ingin mengeluarkan

data pada alamat PORT tersebut, sinyal CS-PORT akan berlogika 0 dimana sinyal CS-

PORT adalah keluaran dari rangkaian pendekodean alamat PORT. Pada selang waktu

berikutnya sinyal WR akan berlogika 0 yang menandakan MCS51 melakukan proses

penulisan data ke alamat PORT tersebut. Sehingga keluaran dari gerbang NOR adalah

logika ‗1‘ yang kemudian mengaktifkan Latch Enable dari IC 74LS373 dan menyebabkan

data keluaran Q0-Q7 berubah sesuai dengan data yang dikirimkan MCS1.

Page 14: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 14 | Politeknik Jambi – Irwan Kurniawan, ST

Pengenalan Bahasa C untuk MCS51

Bahasa pemrograman C adalah sebuah bahasa 'mid-level', namun memiliki fitur 'high-level' (seperti support pada fungsi dan modul) dan juga memiliki fitur 'lowlevel' (seperti mengakses hardware melalui pointer). Dengan menggunakan bahasa C, kita dapat dengan mudah untuk pindah ke jenis mikrokontroler yang lain, lebih mudah dan cepat dalam menulis kode program, dan lebih mudah dimengerti, dan lebih mudah dalam melakukan debugging. Berikut penjelasan kode kode dasar bahasa C untuk pemrograman mikrokontroler

keluarga MCS51 yang sering digunakan:

Preprosesor

Merupakan bagian program yang digunakan untuk mendefenisikan library

berupa file header (*.h) yang ikutkan (include) ke dalam program. Beberapa

contoh penggunaannya: #include <at89x51.h> //mengikutsertakan file at89x51.h

#include <string.h>

#include <math.h>

Tipe Data

char : 1 byte ( -128 s/d 127 )

unsigned char : 1 byte ( 0 s/d 255 )

int : 2 byte ( -32768 s/d 32767 )

unsigned int : 2 byte ( 0 s/d 65535 )

long : 4 byte ( -2147483648 s/d 2147483647 )

unsigned long : 4 byte ( 0 s/d 4294967295 )

float : bilangan desimal

array : kumpulan data-data yang sama tipenya.

Terkadang untuk mendefenisikan tipe data dengan nama tersendiri dapat

menggunakan keyword typedef. Perhatikan contoh berikut : typedef unsigned char ubyte;

ubyte merupakan nama lain dari tipe data unsigned char

Deklarasi Variabel , Konstanta dan Alamat I/O

Variabel merupakan lokasi memori tempat penyimpanan data yang nilai

datanya dapat diubah pada saat program dijalankan.

Sementara Konstanta merupakan lokasi memori penyimpan data yang nilai

datanya tetap/konstan.

Ketika kita mendeklarasikan suatu variabel atau konstanta secara

otomatis compiler bahasa C akan mengalokasikan sebuah lokasi

memori pada RAM internal MCS51 yang akan digunakan untuk

menyimpan nilai data dari variabel/konstanta tersebut.

Untuk mendeklarasikan variabel data penulisan kode programnya sebagai

berikut:

[tipe data] [nama variabel] [= nilai awal (Optional)] Contoh:

int counter = 0;

unsigned char sum;

Page 15: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 15 | Politeknik Jambi – Irwan Kurniawan, ST

Untuk mendeklarasikan konstanta penulisannya adalah sebagai berikut:

[#define] [nama konstanta] [nilai konstanta]

Contoh:

#define phi 3.14

#define data_led 0xFF

Selain variabel dan konstanta kita juga dapat mendeklarasikan sebuah

variabel data dari sebuah PORT I/O atau Memori External dengan

alamat tertentu. Yaitu dengan cara mengalokasikan lokasi memori

/alamat PORT I/O secara manual menggunakan kata kunci xdata

at(alamat)

Contoh penggunaan xdata at(0x4002)

#include <at89x51.h>

xdata at(0x4002) unsigned char PORT_LED;

unsigned char data_led

void main(){

PORT_LED = 0x40;

}

Pada contoh program diatas, alamat 0x4002 dialokasikan sebagai alamat

PORT_LED.Alamat external ini merupakan alamat yang dikeluarkan melaui

Bus Alamat dari MCS51. Tipe data yang harus digunakan untuk

mendeklarasikan sebuah PORT adalah unsigned char.

Contoh

menuliskan/mengeluarkan data ke sebuah PORT Output

[nama_port] = [data_port] PORT_LED = 0x40;

membaca data dari sebuah PORT Input

[variabel_data] = [nama_port] data_led = PORT_LED;

Struktur Percabangan

Struktur percabangan digunakan untuk memilih atau menyeleksi kondisi yang

dipersyaratkan dalam mengeksekusi perintah dalam pemrograman.

Bentuk penulisannya

If (kondisi1) {perintah1 } else{perintah2} if(a==0xff){

b=0x1f;

}else{

b=0x00;

}

Jika kondisi1 terpenehi maka barisan perintah1 dieksekusi, jika kondisi1 tidak

terpenuhi maka barisan perintah2 yang dieksekusi.

Page 16: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 16 | Politeknik Jambi – Irwan Kurniawan, ST

If (kondisi1){perintah1} else if(kondisi2) {perintah2} if(a==0xff){

b=0x1f;

}else if(a==0x00){

b=0x00;

}

Jika kondisi1 terpenuhi maka barisan perintah1 dieksekusi, jika kondisi1 tidak

terpenuhi tetapi kondisi2 terpenuhi maka barisan perintah2 yang dieksekusi.

if (kondisi1){perintah1}else if(kondisi2){pernitah2}

else{perintah3}

if(a==0xff){

b=0x1f;

}else if(a==0x00){

b=0x00;

}else{

b = 0xff;

}

Jika kondisi1 terpenuhi maka barisan perintah1 dieksekusi, jika kondisi1 tidak

terpenuhi tetapi kondisi2 terpenuhi maka barisan perintah2 yang dieksekusi,

dan jika tidak ada kondisi yang terpenuhi maka barisan perintah3 yang

dieksekusi.

Struktur Perulangan

Struktur perulangan digunakan untuk mengeksekusi barisan perintah secara

berulang sesuai dengan kondisi atau jumlah perulangan yang dipersyaratkan.

Perulangan dengan for

Pada Perulangan ini looping dilakukan sesuai dengan jumlah yang

ditentukan. Contoh: for (n=0;n<10;n++){

b= b+1;

}

Baris perintah b=b+1akan dieksekusi berulang kali. Dimana

perulangan eksekusi dilakukan sebanyak 10 kali dari n = 0 (kondisi

awal) s/d n = 9 (kondisi akhir n<10). Nilai n akan dinaikkan setiap

perulagan (n++) for (n=10;n>0;n--){

b= b+1;

}

Baris perintah b=b+1 akan dieksekusi berulangkali .dimana

perulangan eksekusi dilakukan sebanyak 10 kali dari n = 10 (kondisi

awal) s/d n = 1 (kondisi akhir n > 0).nilai n akan berkurang setiap

perulangan (n--).

Perulangan dengan while

Perulangan jenis ini kan melakukan looping selama kondisi yang

dipersyaratkan terpenuhi.

Page 17: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 17 | Politeknik Jambi – Irwan Kurniawan, ST

Contoh PORT_LED2 = 0xFF;

while(data_led !=0xFF){

data_led = PORT_LED1;

}

PORT_LED2 = 0x00;

Kondisi awal PORT_LED2 adalah 0xFF kemudian program akan

melakukan perulangan while(). Pada perulangan ini program akan

mengeksekusi perintah data_led = PORT_LED1 atau perintah

membaca data pada PORT_LED1 berulangkali. Selama data_led tidak

sama (!=) dengan 0xFF maka perulangan akan terus terjadi.

ketikadata_led=0xFF maka perulangan akan berhenti. Dan program

akan lanjut ke baris perintah dibawahnya yaitu perintah PORT_LED2 =

0x00.

Fungsi dan Subrutin

Fungsi adalah blok program yang digunakan untuk melakukan sekumpulan

instruksi akan mengembalikan nilai tertentu setelah semua instruksi

dilaksanakan.

Subrutin adalah blok program yang digunakan untuk melakukan sekumpulan

instruksi tertentu. Perbedaannya dengan fungsi adalah subrutin hanya

menjalankan sekumpulan instruksi dan tidak mengembalikan nilai tertentu.

//contoh subrutin

void counter_up(){

counter++;

}

//contoh fungsi

int kalikan(int ct){

int temp;

temp = 2 * ct;

return temp; //pengembalian nilai

}

Prototype fungsi dan subrutin

Jika sebuah penulisan kode fungsi atau subrutin berada dibawah program

utama (subrutin main()), agar fungsi atau subrutin tersebut dapat dipanggil

oleh program utama maka perlu dilakukan deklarasi fungsi/subrutin atau yang

disebut dengan prototype. Perhatikan contoh berikut:

#include <at89x51.h>

int hasil = 0;

int counter = 0;

int kalikan(int); //prototype fungsi kalikan

void counter_up(); //prototype subrutin counter_up

void main(){

counter_up();

hasil = kalikan(counter);

}

void counter_up(){

counter++;

}

int kalikan(int ct){

int temp;

temp = 2 * ct;

return temp;

}

Page 18: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 18 | Politeknik Jambi – Irwan Kurniawan, ST

Operasi relasional (perbandingan) Sama dengan : == Tidak sama dengan : != Lebih besar : > Lebih besar sama dengan : >= Lebih kecil : < Lebih kecil sama dengan : <=

Operasi aritmatika

+ , – , * , / : tambah,kurang,kali,bagi += , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator

% : sisa bagi ++ , — : tambah satu (increment) , kurang satu (decrement) Contoh : a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30 a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30×5 = 150. a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33. a++ ;

jika nilai awal a adalah 5 maka nilai a = a+1 = 6. a– ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4.

Operasi logika dan biner Logika

Logika AND :&&

Logika NOT : !

Logika OR : ||

Biner AND : &

Biner OR : |

Biner XOR : ^

Shift right biner: >>

Shift left biner : <<

Komplemen : ~

Beberapa struktur dan elemen bahasa C lainnya dapat dilihat pada literatur

yang ada baik di-internet maupun di buku.

Page 19: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 19 | Politeknik Jambi – Irwan Kurniawan, ST

APLIKASI SISTEM MINIMUM MCS51 Sistem minimum MCS51 yang digunakan untuk beberapa aplikasi biasanya memiliki

alamat PORT I/O yang cukup banyak.Sehingga sistem minimum MCS-51 nantinya dapat

diimplemantasikan untuk aplikasi yang luas dan mudah dalam pengembangannya.

Pada diktat ini, sistem MCS51 yang digunakan pada beberapa contoh aplikasi , memiliki

16 Port I/O dan 2K RAM Eksternal. Peta Alokasi Memori RAM dan PORT I/O dapat dilihat

pada tabel berikut:

Port / Memori Alamat

1 buah RAM 2 KB 0x0000 – 0x07FF

7 buah Port I/O 0x1200 – 0x1207

7 buah Port I/O 0x1300 – 0x1307

A15 A14 A13 A12

A11 A10 A9 A8

A7 A6 A5 A4

A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x0000

0 0 0 0 0 x x x x x x x x x x x RAM 2KB

0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0x07FF

0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0x1200

0 0 0 1 0 0 1 0 0 0 0 0 0 x x x 8 PORT

0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0x1207

0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0x1300

0 0 0 1 0 0 1 1 0 0 0 0 0 x x x 8 PORT

0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0x13007

Rangkaian Dekoder sistem minimum MCS-51

Gambar 12. Rangkaian Dekoder Alamat Memori dan 16 Port I/O

Page 20: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 20 | Politeknik Jambi – Irwan Kurniawan, ST

APLIKASI LED

Aplikasi Running LED

Berikut ini adalah aplikasi running led dengan menggunakan PORT I/O pada alamat

1200H. Rangkaian LED dan PORT I/O yang digunakan, dapat dilihat pada gambar

berikut :

Gambar 13.Rangkaian Aplikasi 8 LED pada PORT 1200H

Program Aplikasi :

#include <at89x51.h>

typedef unsigned char ubyte;

xdata at(0x1200) ubyte PORT_LED;

ubyte led ;

void delay (int);

void main(){

while(1){

if (led == 0x00){

led = 0x01;

}

PORT_LED = led;

delay(400);

led<<=1; //led = led << 1 geser data led ke kiri 1 kali

}

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Page 21: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 21 | Politeknik Jambi – Irwan Kurniawan, ST

Aplikasi Led dan Input Switch

Pada aplikasi berikut digunakan 2 buah PORT yang berbeda, salah satu PORT

digunakan sebagai jalur input dan PORT lainnya sebagai jalur Output. PORT input

digunakan untuk membaca data switch, sedangkan PORT Output digunakan untuk

display 8 led yang merepresentasikan kondisi switch. Berikut rangkaian aplikasinya

Gambar 14.Rangkaian Input Switch pada Alamat PORT 1201H

Program Aplikasi Menampilkan data input switch bit ke displah LED :

#include <at89x51.h>

typedef unsigned char ubyte;

xdata at(0x1200) ubyte PORT_LED;

xdata at(0x1201) ubyte PORT_SW;

ubyte led ;

void delay (int);

void main(){

while(1){

led = PORT_SW;

PORT_LED = led;

delay(200);

}

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Page 22: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 22 | Politeknik Jambi – Irwan Kurniawan, ST

APLIKASI 7 SEGMEN

Untuk mempermudah display data dengan 7 segmen,biasanya digunakan komponen

dekoder BCD to 7 Segmen. Dekoder yang digunakan adalah IC 7447. Prinsip utama dari

dekoder ini adalah mendekodekan data BCD ke data display 7 segmen common katoda.

Data BCD yang digunakan untuk 1 buah dekoder 7 segmen adalah 4 bit yang mewakili

angka 0 sampai 9. Contoh rangkaian aplikasi seven segmen dapat dilihat pada gambar

berikut:

Gambar 15.Aplikasi Seven Segmen Common Anode pada PORT 1202H

Page 23: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 23 | Politeknik Jambi – Irwan Kurniawan, ST

Program Aplikasi Menampilkan angka ke Seven Segmen

#include <at89x51.h>

typedef unsigned char ubyte;

xdata at(0x1202) ubyte PORT_7SEG;

ubyte angka ;

ubyte data_seg;

void delay (int);

void main(){

angka = 34;

data_seg = (angka / 10)*16 + (angka % 10);

PORT_7SEG = data_seg;

delay(800);

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Program Aplikasi Counting Up dengan display 7 segmen

#include <at89x51.h>

typedef unsigned char ubyte;

xdata at(0x1202) ubyte PORT_7SEG;

ubyte angka ;

ubyte data_seg;

void delay (int);

void main(){

while(1){

if (angka > 99){angka = 0;}

data_seg = (angka / 10)*16 + (angka % 10);

PORT_7SEG = data_seg;

angka++;

delay(800);

}

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Page 24: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 24 | Politeknik Jambi – Irwan Kurniawan, ST

KEYPAD 4x3

Proses scaning keypad dilakukan untuk setiap kolom C0-C2 dengan memberikan logika

‗0‘ pada kolom yang akan diaktifkan dan memberikan logika ‗1‘ pada kolom lainya.

Kemudian membaca data pada baris R0-R3.Jika terjadi penekanan tombol pada keypad

maka tombol yang ditekan dapat diketahui dengan melihat baris dan kolom yang

berlogika ‗0‘.

Gambar 16. Keypad 4x3

Proses meng-aktifkan kolom dilakukan secara bergantian. Berikut adalah table

hubungan antara data kolom dan data baris serta tombol yang ditekan pada keypad.

C0-C2 dihubungkan dengan (Output) keluaran dari Mikroprosesor R0-R3 dihubungkan

(Input) masukan ke Mikroprosesor

C0 C1 C2 R0 R1 R2 R3 KEY Keterangan

0 1 1 0 1 1 1 “1”

Kolom 0 Aktif 0 1 1 1 0 1 1 “4”

0 1 1 1 1 0 1 “7”

0 1 1 1 1 1 0 “*”

1 0 1 0 1 1 1 “2” Kolom 1

Aktif 1 0 1 1 0 1 1 “5”

1 0 1 1 1 0 1 “8”

1 0 1 1 1 1 0 “0”

1 1 0 0 1 1 1 “3” Kolom 2

Aktif 1 1 0 1 0 1 1 “6”

1 1 0 1 1 0 1 “9”

1 1 0 1 1 1 0 “#”

Page 25: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 25 | Politeknik Jambi – Irwan Kurniawan, ST

Gambar 16. Rangkaian Keypad pada Port 1204h dan 1205h

Program Aplikasi:

Scanning Keypad dengan display 7 Segmen (gambar 16)

#include <at89x51.h>

typedef unsigned char ubyte;

xdata at(0x1204) ubyte PORT_BARIS ;

xdata at(0x1205) ubyte PORT_KOLOM ;

xdata at(0x1202) ubyte PORT_7SEG;

ubyte tabel_key[3][4];

ubyte scan_keypad();

void init_tabel_keypad();

void delay(int);

void main(){

ubyte key;

init_tabel_keypad();

while(1){

key = scan_keypad();

if (key !=0xFF){

PORT_7SEG = key;

}

delay(80);

}

}

Page 26: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 26 | Politeknik Jambi – Irwan Kurniawan, ST

ubyte scan_keypad(){

ubyte k;

ubyte data_kolom;

ubyte data_baris;

ubyte s_key= 0xFF;

for (k =0;k<3;k++){

data_kolom = (0x01 << k) ^ 0xFF;

PORT_KOLOM = data_kolom;

data_baris = PORT_BARIS;

data_baris = data_baris & 0x0F;

if (data_baris !=0x0F){

if(data_baris ==0x0E){

s_key = tabel_key[k][0];

}else if(data_baris == 0x0D){

s_key = tabel_key[k][1];

}else if(data_baris == 0x0B){

s_key = tabel_key[k][2];

}else if(data_baris == 0x07){

s_key = tabel_key[k][3];

}

while(data_baris !=0x0F){

data_baris = PORT_BARIS;

data_baris = data_baris & 0x0F;

}

return s_key;

}

}

return s_key;

}

void init_tabel_keypad(){

//tabel_key[kolom][baris]

tabel_key[0][0] = 1;

tabel_key[0][1] = 4;

tabel_key[0][2] = 7;

tabel_key[0][3] = 10; //tanda *

tabel_key[1][0] = 2;

tabel_key[1][1] = 5;

tabel_key[1][2] = 8;

tabel_key[1][3] = 0;

tabel_key[2][0] = 3;

tabel_key[2][1] = 6;

tabel_key[2][2] = 9;

tabel_key[2][3] = 11; //tanda #

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Page 27: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 27 | Politeknik Jambi – Irwan Kurniawan, ST

Fungsi ubyte scan_keypad()akan melakukan scanning keypad mulai dari kolom 0

sampai kolom 3. Setiap kali melakukan scanning pada kolom , MCS51 akan

mengeluarkan logic ‗0‘ pada kolom tersebut dan logic ‗1‘ pada kolom lainya.Data kolom

dikeluarkan melalui PORT_KOLOM (0x1205). Kemudian dilakukan pengecekan pada

setiap barisnya, melalui pembacaan PORT_BARIS (0x1204). Setiap pasangan kolom dan

baris disesuaikan dengan tabel_key[3][4]. Fungsi ini akan mengembalikan sebuah nilai

dari tombol yang ditekan ke variable key dari program utama.

Page 28: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 28 | Politeknik Jambi – Irwan Kurniawan, ST

DISPLAY Liquid Cristal Dysplay (LCD)

Liquid Cristal Dysplay (LCD) merupakan suatu modul display. LCD tersusun dari susunan dot matrik kristal cair. Suatu LCD tersusun dari dot matrix LCD Controller, segment

driver, serta LCD Panel. Dimana controller LCD telah terintegrasi dengan RAM/ROM pembangkit karakter atau CGRAM (Character Generator RAM) dan RAM data display atau DDRAM (Display Data RAM). Semua fungsi display dikendalikan oleh instruksi-instruksi sehingga dapat dengan mudah dihubungkan dengan mikrokontroler. LCD yang digunakan yaitu VCM- 162A atau M1632 dimana LCD ini memiliki fitur-fitur sebagai berikut: - Memiliki 16 karakter dan 2 baris (LCD 16 x 2)

- RAM pembangkit karakter untuk 192 tipe karakter (5 x 8 dot matrix) - Mudah dihubungkan dengan mikroprosesor/mikrokontroler - RAM data display (DDARAM) dan RAM pembangkit karakter (CGRAM) dapat diambil dari mikroprosesor/mikrokontroler,

Modul LCD ini memiliki 16 kaki pin dimana fungsi dan letak pin tersebut ditunjukkan pada tabel berikut :

Pada dasarnya akses dari microcontroller ke Modul LCD ini terdiri dari 4 jenis sebagai berikut: • Pengiriman Instruksi Register • Pembacaan Address Counter dan Busy Flag • Pengiriman Data Register

• Pembacaan Data Register Register LCD mempunyai dua buah Register yang aksesnya diatur dengan menggunakan kaki RS. Pada saat RS berlogika 0, maka register yang diakses adalah Register Perintah dan pada saat RS berlogika 1, maka register yang diakses adalah Register Data

Page 29: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 29 | Politeknik Jambi – Irwan Kurniawan, ST

Register Perintah Register ini adalah register di mana perintah-perintah dari mikrokontroler ke HD44780 pada saat proses penulisan data atau tempat status dari HD44780 dapat dibaca pada saat pembacaan data. Penulisan Data ke Register Perintah Penulisan data ke Register Perintah dilakukan dengan tujuan mengatur tampilan LCD, inisialisasi dan mengatur Address Counter maupun Address Data. Gambar 17 menunjukkan proses penulisan data ke register perintah dengan menggunakan mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke Register Perintah. RW berlogika 0 yang menunjukkan proses penulisan data akan dilakukan. Data instruksi dikirimkan dengan diawali pulsa logika 1 pada sinyal E Clock dan dalam selang waktu

yang singkat sinyal E di kembalikan ke logika 0.

Register Data

Register ini adalah register di mana mikrokontroler dapat menuliskan atau membaca data ke atau dari DDRAM. Penulisan data pada register ini akan menempatkan data tersebut ke DDRAM sesuai dengan alamat yang telah diatur sebelumnya.

Penulisan Data ke Register Data Penulisan data pada Register Data dilakukan untuk mengirimkan data yang akan ditampilkan pada LCD. Proses diawali dengan adanya logika 1 pada RS yang menunjukkan akses ke Register Data, kondisi R/W diatur pada logika 0 yang menunjukkan proses penulisan data. Data karakter dikirimkan dengan diawali pulsa logika 1 pada sinyal E Clock dan dalam selang waktu yang singkat sinyal E di kembalikan ke logika 0.

Page 30: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 30 | Politeknik Jambi – Irwan Kurniawan, ST

Gambar 18. Interfacing LCD pada PORT 1206H dan PORT 1207H

Program Aplikasi:

Menampilkan Tulisan ―LCD-MCS51‖ pada baris pertama

#include <at89x51.h>

typedef unsigned char ubyte ;

xdata at(0x1206) ubyte PORT_LCD_DATA;

xdata at(0x1207) ubyte PORT_LCD_CTL;

//D0-D7 => PORT_LCD_DATA

//PORT_LCD_CTL: bit0-E bit1-RS bit2-RW

#define funcset 0x38

#define clrscreen 0x01

#define displayon_cursoroff 0x0C

#define cursor_inc 0x06

void kirim_karakter(ubyte);

void kirim_instruksi(ubyte);

void delay(int);

void main(){

//inisialisasi lcd

kirim_instruksi(funcset);

kirim_instruksi(clrscreen);

kirim_instruksi(displayon_cursoroff);

kirim_instruksi(cursor_inc);

kirim_instruksi(0x80); //posisikan cursor kolom 0 baris 0

//kirim karkater

kirim_karakter('L');

kirim_karakter('C');

kirim_karakter('D');

kirim_karakter('-');

kirim_karakter('M');

kirim_karakter('C');

kirim_karakter('S');

Page 31: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 31 | Politeknik Jambi – Irwan Kurniawan, ST

kirim_karakter('5');

kirim_karakter('1');

}

void kirim_instruksi(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

PORT_LCD_CTL = 0x01; //E = 1 RS 0 RW 0;

delay(5);

PORT_LCD_CTL = 0x00; //E = 0 RS 0 RW 0;

delay(5);

}

void kirim_karakter(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

delay(5);

PORT_LCD_CTL = 0x03; //E 1 RS 1 RW 0;

delay(5);

PORT_LCD_CTL = 0x02; //E 0 RS 1 RW 0;

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Subruitn kirim_instruksi() digunakan untuk mengirimkan perintah ke register perintah LCD. Jenis perintah yang dikirimkan dapat dilihat pada table instruksi LCD.sedangkan fungsi kirim_karakater() digunakan untuk mengirimkan data karakter ke register data sesuai dengan counter alamat atau posisi cursor. Pada program aplikasi diatas posisi cursor dinaikkan setiap kali mengirimkan data karakter ke LCD ini dikarenakan adanya

data instruksi cursor_inc (0x06).

Program Aplikasi:

Menampilkan Tulisan ―POLITEKNIK‖ pada baris pertama dan Tulisan ―JAMBI‖ pada baris kedua.

#include <at89x51.h>

#include <string.h>

typedef unsigned char ubyte ;

xdata at(0x1206) ubyte PORT_LCD_DATA;

xdata at(0x1207) ubyte PORT_LCD_CTL;

//D0-D7 => PORT_LCD_DATA

//PORT_LCD_CTL: bit0-E bit1-RS bit2-RW

#define funcset 0x38

#define clrscreen 0x01

#define displayon_cursoroff 0x0C

#define cursor_inc 0x06

#define shifentry_left 0x05

void kirim_karakter(ubyte);

void kirim_instruksi(ubyte);

Page 32: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 32 | Politeknik Jambi – Irwan Kurniawan, ST

void kirim_string(char *str);

void delay(int);

void main(){

//inisialisasi lcd

kirim_instruksi(funcset);

kirim_instruksi(clrscreen);

kirim_instruksi(displayon_cursoroff);

kirim_instruksi(cursor_inc);

kirim_instruksi(0x80); //posisikan cursor kolom 0 baris 1

kirim_string("POLITEKNIK");

kirim_instruksi(0xC0); //posisikan cursor kolom 0 baris 2

kirim_string("JAMBI");

}

void kirim_instruksi(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

PORT_LCD_CTL = 0x01; //E = 1 RS 0 RW 0;

delay(5);

PORT_LCD_CTL = 0x00; //E = 0 RS 0 RW 0;

delay(5);

}

void kirim_karakter(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

delay(5);

PORT_LCD_CTL = 0x03; //E 1 RS 1 RW 0;

delay(5);

PORT_LCD_CTL = 0x02; //E 0 RS 1 RW 0;

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

void kirim_string(char *str){

ubyte n;

if (str[n]!=0){

kirim_karakter(str[n]);

}

}

Program aplikasi ini sama seperti program aplikasi LCD sebelumnya hanya saja ada penambahan subrutin kirim_string() yang berfungsi untuk mengirimkan satu-persatu karakter yang diinputkan melalui variable str.

Page 33: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 33 | Politeknik Jambi – Irwan Kurniawan, ST

Analog to Digital Converter (ADC)

Konverter analog ke digital (ADC) tersedia secara komersial sebagai rangkaian terpadu dengan resolusi 8 bit sampai dengan 16 bit. Pada percobaan ini akan

memperkenalkan ADC0804, yaitu sebagai sebuah konverter ADC 8 bit yang mudah diinterfacekan dengan sistem mikrokontroller.

ADC ini menggunakan metode approksimasi berturut-turut untuk mengkonversikan masukan analog (0-5V) menjadi data digital 8 bit yang ekivalen.ADC0804 mempunyai pembangkit clock internal dan memerlukan catu daya +5V dan mempunyai waktu konversi optimum sekitar 100us.

Gambar 19. Konfigurasi Pin ADC 0804

Gambar 19 menunjukkan diagram konfigurasi pin ADC0804. Pin 11 sampai 18

(keluaran digital) adalah keluaran tiga keadaan, yang dapat dihubungkan langsung dengan bus data bilamana diperlukan. Apabila CS ( pin 1 ) atau RD (pin2) dalam keadaan high (―1‖), pin 11 sampai 18 akan mengambang ( high impedance ), apabila CS dan RD rendah keduanya, keluaran digital akan muncul pada saluran keluaran.

Sinyal mulai konversi pada WR (pin 3).Untuk memulai suatu konversi, CS harus rendah.Bilamana WR menjadi rendah, konverter akam mengalami reset, dan ketika WR kembali kepada keadaan high, konversi segera dimulai. Konversi detak konverter harus terletak dalam daerah frekuensi 100 sampai 800kHz. CLK IN ( pin 4) dapat diturunkan

dari detak mikrokontroller, sebagai kemungkinan lain, kita dapat mempergunakan pembangkit clock internal dengan memasang rangkaian RC antara CLN IN ( pin 4) dan CLK R ( pin 19).

Pin 5 adalah saluran yang digunakan untuk INTR, sinyal selesai konversi. INTR akan menjadi tinggi pada saat memulai konversi, dan akan aktiv rendah bila konversi telah selesai. Tepi turun sinyal INTR dapat dipergunakan untuk menginterupsi sistem mikrokontroller, supaya mikrokontroller melakukan pencabangan ke subrutine pelayanan yang memproses keluaran konverter. Pin 6 dan 7 adalah masukan diferensial bagi sinyal analog. A/D ini mempunyai dua ground, AGND (pin 8) dan DGND ( pin10). Kedua pin ini harus dihubungkan dengan ground. Pin 20 harus dihubungkan dengan catu daya +5V

Pada A/D 0804 merupakan tegangan referensi yang digunakan untuk offset suatu keluaran digital maksimum. Dengan persamaan sebagai berikut:

VREF =0.5 x Vin Misalnya diinginkan masuk analog maksimum sebesar 4 V, maka:VREF=0.5 x 4 = 2 volt

Page 34: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 34 | Politeknik Jambi – Irwan Kurniawan, ST

Resolusi ADC untuk permisalan di atas mempunyai arti seperti ditunjukkan padsa tabel berikut:

Tabel Tegangan Resolusi ADC 0804 untuk Tegangan Maks 4 Volt

Vin (Volt) Data Digital (biner)

Data Desimal

0 00000000 0

0,0156 00000001 1

0,0313 00000010 2

... ... ...

4 11111111 255

ADC ini dapat dirangkai untuk menghasilkan konversi secara kontinu.Untuk

melaksanakannya, kita harus menghubungkan CS, dan RD ke ground dan menyambungkan WR dengan INTR seperti pada gambar dibawah ini. Maka dengan ini keluaran digital yang kontinu akan muncul, karena sinyal INTR menggerakkan masukan WR. Pada akhir konversi INTR berubah menjadi low, sehingga keadaan ini akan mereset konverter dan mulai konversi.

Untuk membaca nilai tegangan Input (Vin) dapat menggunakan Rumus Berikut:

Rangkaian ADC 0804 dengan MCS51

Gambar 21 Rangkaian Interface ADC0804 sebagai Volmeter Digital

Page 35: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 35 | Politeknik Jambi – Irwan Kurniawan, ST

Program Aplikasi Menampilkan data ADC Pada LED (PORT LED gambar 13)

#include <at89x51.h>

typedef unsigned char ubyte ;

xdata at(0x1302) ubyte PORT_ADC;

xdata at(0x1200) ubyte PORT_LED;

//P1.5 RD adc

//P1.6 WR adc

//P1.7 INTR adc

#define RD_ADC P1_5

#define WR_ADC P1_6

#define INT_ADC P1_7

ubyte data_adc;

void delay(int);

void main(){

while(1){

WR_ADC = 0;

while(INT_ADC==0){}

WR_ADC = 1;

RD_ADC = 0;

data_adc = PORT_ADC;

RD_ADC = 1;

PORT_LED = data_adc;

delay(1000);

}

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Langkah – langkah membaca data ADC 0804 - Sinyal WR di set logika 0 - Tunggu sampai konversi selesai atau tunggu pin INTR berlokgika 0 - Sinyal WR di set logika 1 - Sinyal RD di set logika 0 - Baca data dari keluaran D0-D7 dari ADC - Setelah data di baca sinyal RD di set kembali ke logika 1

Page 36: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 36 | Politeknik Jambi – Irwan Kurniawan, ST

Program Aplikasi Menampilkan data ADC Pada LCD (PORT LCD gambar 18) #include <at89x51.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#include <float.h>

#include <float_str.h>

typedef unsigned char ubyte ;

xdata at(0x1302) ubyte PORT_ADC;

xdata at(0x1206) ubyte PORT_LCD_DATA;

xdata at(0x1207) ubyte PORT_LCD_CTL;

//P1.5 RD adc

//P1.6 WR adc

//P1.7 INTR adc

#define RD_ADC P1_5

#define WR_ADC P1_6

#define INT_ADC P1_7

#define funcset 0x38

#define clrscreen 0x01

#define displayon_cursoroff 0x0C

#define cursor_inc 0x06

void kirim_karakter(ubyte);

void kirim_instruksi(ubyte);

void delay(int);

ubyte read_adc();

void init_lcd();

void kirim_string(char *str);

ubyte str_adc[16];

float VMAX = 5;

float VIN;

ubyte ADC;

void main(){

init_lcd();

while(1){

ADC = read_adc();

VIN = __uchar2fs(ADC);

VIN = __fsdiv(VIN * VMAX,255);

float2str(VIN, str_adc);

kirim_instruksi(0x01);

kirim_instruksi(0x80);

kirim_string(str_adc);

kirim_string(" Volt");

delay(500);

}

}

ubyte read_adc(){

ubyte data_adc;

WR_ADC = 0;

while(INT_ADC==0){}

WR_ADC = 1;

RD_ADC = 0;

data_adc = PORT_ADC;

RD_ADC = 1;

return data_adc;

}

Page 37: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 37 | Politeknik Jambi – Irwan Kurniawan, ST

void init_lcd(){

kirim_instruksi(funcset);

kirim_instruksi(clrscreen);

kirim_instruksi(displayon_cursoroff);

kirim_instruksi(cursor_inc);

kirim_instruksi(0x80); //posisikan cursor kolom 0 baris 0

}

void kirim_instruksi(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

PORT_LCD_CTL = 0x01; //E = 1 RS 0 RW 0;

delay(5);

PORT_LCD_CTL = 0x00; //E = 0 RS 0 RW 0;

delay(5);

}

void kirim_karakter(ubyte data_lcd){

PORT_LCD_DATA = data_lcd;

delay(5);

PORT_LCD_CTL = 0x03; //E 1 RS 1 RW 0;

delay(5);

PORT_LCD_CTL = 0x02; //E 0 RS 1 RW 0;

}

void kirim_string(char *str){

ubyte n;

for (n = 0;n <strlen(str);n++){

if (str[n]!=0){

kirim_karakter(str[n]);

}

}

}

void delay(int n){

int temp;

ubyte m;

temp = n;

while(temp > 0){

for (m=0;m<0xFF;m++){}

temp--;

}

}

Prinsip program aplikasi diatas adalah menampilkan data adc yang di konversikan ke nilai tegangan yang sesuai dengan rumus konversi ADC , kemudian hasil perhitungan ini di tampilkan ke LCD. Sebelum program aplikasi dibuat buatlah terlebih dahulu library float_str.h.Isi library float_str.h adalah sebagai berikut: void float2str(float n , unsigned char *str){

long temp;

float f_bulat;

float f_pecahan;

unsigned char pre = 5;

unsigned char i ;

unsigned char j ;

unsigned char str1[16];

unsigned char str2[16];

for (i = 0; i < 16;i++){

str[i] = 0;

}

j = 0;

if (n < 0){

str[j] = '-';

j++;

}

Page 38: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 38 | Politeknik Jambi – Irwan Kurniawan, ST

n = fabsf(n);

f_bulat = floorf(n);

temp = __fs2slong(f_bulat);

_ltoa(temp,str1,10);

for(i = 0; i < strlen(str1); i++){

str[j] = str1[i];

j++;

}

n = n-f_bulat;

str[j] = '.';

j++;

if (n < 0.1){

str[j] = '0';

j++;

}else if(n<0.01){

str[j] = '0';

j++;

str[j] = '0';

j++;

}

else if(n<0.001){

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

}else if (n <0.0001){

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

}

else if (n <0.00001){

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

str[j] = '0';

j++;

n = 0.0000000;

}

if (n > 0.0000000){

f_pecahan = n * 1000000;

temp = __fs2slong(f_pecahan);

_ltoa(temp, str2,10);

for (i=strlen(str2)-1;i>=pre;i--){

if(str2[i]>=('0'+5)){

str2[i-1]+=1;

}

}

for (i=0; i<pre;i++){

str[j] = str2[i];

j++;

}

}

Page 39: PENGENALAN MIKROKONTROLER · PDF fileDiktatSistem Mikrokontroler Page 1 | Politeknik Jambi – Irwan Kurniawan, ST PENGENALAN MIKROKONTROLER Mikrokontroler, jika

DiktatSistem Mikrokontroler

Page 39 | Politeknik Jambi – Irwan Kurniawan, ST

for (i = 0; i < strlen(str);i++){

if ((str[i]<'0' || str[i] >'9') && str[i] !='-' && str[i]!='.'){

str[i] = 0;

}

}

}

Simpan kode library diatas sebagai file header (*.h) dengan nama float_str.h simpan ke directori tempat program aplikasi ADC disimpan. Fungsi library ini adalah untuk mengkonversikan bilangan decimal (float) ke bentuk string, sehingga dapat di tampilkan ke LCD.


Related Documents