PHONE BOOK TELEPON DENGAN MENGGUNAKAN
MIKROKONTROLER AT89C51
TUGAS AKHIR
Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana (Strata-1)
Oleh :
HERI HERDIANA 4140411-168
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS MERCUBUANA
JAKARTA
LEMBAR PENGESAHAN
Nama : Heri Herdiana
NIM : 4140411-168
Peminatan : Elektronika
Judul Tugas Akhir : Phone Book Telepon dengan menggunakan
Mikrokontroler AT89C51
Jakarta, 16 Februari 2008
Disetujui dan disahkan oleh : Pembimbing,
ABSTRAK
Dewasa ini telepon merupakan sarana komunikasi yang sangat vital dalam kehidupan sehari-hari, bagi sebagian masyarakat alat komunikasi ini sudah menjadi suatu kebutuhan. Namun kadang kala kita tidak dapat mengontrol penggunaannya, karena telepon sering kali digunakan oleh orang yang tidak bertanggung jawab. Untuk mengatasi masalah ini, penulis membuat suatu alat yang dapat mengontrol/membatasi penggunaan telepon.
Rangkaian utama alat ini menggunakan rangkaian DTMF. Telepon dengan system dialing tone akan menghasilkan sinyal DTMF saat papan tombol ditekan, sinyal tersebut akan dideteksi oleh rangkaian DTMF untuk kemudian di ubah menjadi kode biner. Sebagai rangkaian kontrol dan pemroses data digunakan mikrokontroler AT89C51. EEPROM digunakan untuk menyimpan memori.
Pembuatan tugas akhir ini bertujuan membuat suatu alat berupa phone book untuk dapat menyimpan nomor telepon secara elektronik yang dapat dipasang pada telepon dengan sistem tone dialing. Alat ini juga berfungsi untuk membatasi penggunaan telepon.
KATA PENGANTAR
Puji dan syukur penulis panjatkan ke-hadirat Allah SWT yang telah memberikan kekuatan lahir dan batin sehingga akhirnya penulis dapat selesai menyusun laporan tugas akhir.
Tugas akhir ini dibuat sebagai salah satu syarat guna memperoleh kelulusan program S-1 Teknik Elektro, Fakultas Teknologi Industri, Universitas Mercubuana.
Atas selesainya tugas akhir ini, tidah lupa penulis mengucapkan banyak terima kasih kepada berbagai pihak yang telah banyak membantu, terutama kepada:
1. Kedua orang tua yang telah membimbing, membantu dan memberikan dorongan baik secara moril maupun materil.
2. Jaja Kustija, MSc selaku pembimbing tugas akhir.
3. Ir. Budi Yanto Husodo, MSc selaku Ketua Jurusan Teknik Elektro Universitas Mercubuana.
4. Yudhi Ghunardi, ST,MT selaku koordinator Tugas Akhir Teknik Elektro Universitas Mercubuana.
Akhirnya penulis berharap semoga karya tugas akhir ini dapat memberikan manfaat, khususnya kepada penulis dan umumnya kepada para pembaca.
Jakarta, Februari 2008
DAFTAR ISI
ABSTRAK ... i
KATA PENGANTAR ... ii
DAFTAR ISI ... iv
DAFTAR GAMBAR ... vii
DAFTAR TABEL ... viii
BAB I PENDAHULUAN 1.1. Latar Belakang Masalah ... 1
1.2. Perumusan Masalah ... 2
1.3. Pembatasan Masalah ... 3
1.4. Tujuan Penulisan ... 3
1.5. Sistematika Penulisan ... 3
BAB II LANDASAN TEORI 2.1. Telepon ……….. 5
2.3.4. Special Function Register (SFR) ……… 18
2.3.5. Timer/Counter ………. 19
2.3.6. Program Status Word (PSW) ………. 20
2.3.7. Power Control Register (PCON) ……… 22
2.3.8. Perangkat lunak mikrokontroler AT89C51 ... 22
2.3.8.1. Mode pengalamatan ... 23
2.3.8.2. Perangkat Instruksi mikrokontroler AT89C51 24
2.4. LCD ... 25
2.4.1. Standar LCD HD447780 ... 26
2.4.2. Inisialisasi LCD ……… 28
2.4.3. Pengiriman Data/ Instruksi Ke LCD………... 29
2.5. EEPROM ………... 30
2.5.1. Akses Data serial EEPROM………... 32
2.5.2. Penulisan Data ……….. 32
2.5.3. Pembacaan data ... 33
BAB III PERANCANGAN 3.1. Tujuan Perancangan ... 35
3.2. Tahap-tahap perancangan ... 35
3.3. Diagram Blok ... 36
3.4. Perancangan Perangkat Keras ... 40
3.4.3. Rangkaian pendeteksi dering ... 43
3.4.4. Rangkaian pendeteksi hook ... 44
3.4.5. Rangkaian pemutus line telepon ... 45
3.5. Perancangan perangkat lunak ... 46
3.6 Cara Kerja Alat ... 49
BAB IV PENGUJIAN DAN ANALISA 4.1 Pengujian pendeteksi dering ... 50
4.2 Pengujian pendeteksi hook ... 50
4.3. Pengujian pemutus line ... 51
BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan ... 52
5.2. Saran ... 52
DAFTAR PUSTAKA LAMPIRAN A
DAFTAR GAMBAR
Gambar 2.1. Menghubungkan IC MT8888 dengan mikrokontroler Gambar 2.2. Blok diagram AT89C51
Gambar 2.3. Susunan pin AT89C51
Gambar 2.4. Struktur memori mikrokontroler AT89C51 Gambar 2.5. Susunan Memori Program Eksternal Gambar 2.6. Memori data eksternal
Gambar 2.7. Menghubungkan AT89C51 dengan RAM eksternal Gambar 2.8. Hubungan ke kristal
Gambar 2.9. Urutan inisialisasi untuk koneksi data 8 bit Gambar 2.10. Susunan pin IC 24CXX
Gambar 2.11. Menghubungkan 24C64 dengan mikrokontroler Gambar 2.12. Pengalamatan serial EEPROM
Gambar 2.13. Penulisan secara byte Gambar 2.14. Penulisan secara page
Gambar 2.15. Pembacaan secara Current Read Gambar 2.16. Pembacaan secara Random Read Gambar 2.17. Pembacaan secara Sequential Read Gambar 3.1. Diagram blok rangkaian
Gambar 3.3. Rangkaian sistem minimum mikrokontroler AT89C51 Gambar 3.4. Rangkaian DTMF
Gambar 3.5. Rangkaian pendeteksi dering Gambar 3.6. Rangkaian pendeteksi hook Gambar 3.7. Rangkaian pemutus line telepon Gambar 3.8. Flowchart
DAFTAR TABEL
Tabel 2.1. Kombinasi frekuensi pada sistem DTMF Tabel 2.2. Special function register.
Tabel 2.3. Pemilihan bank register. Tabel 2.4. Fungsi pin konektor LCD
Tabel 4.1. Hasil pengukuran rangkaian pendeteksi dering Tabel 4.2. Hasil pengukuran rangkaian pendeteksi hook Tabel 4.3. Hasil pengukuran rangkaian switch line
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Telepon dewasa ini sudah merupakan alat komunikasi yang sangat vital dalam kehidupan masyarakat. Namun sering kali pemakaian telepon tidak terkontrol atau digunakan oleh orang yang tidak bertanggung jawab tanpa sepengetahuan pemilik telepon sehingga biaya yang harus dikeluarkan untuk membayar tagihan rekening telepon cukup besar dan diluar dari biaya yang telah diperkirakan sebelumnya. Salah satu upaya yang dapat dilakukan untuk menghindari atau mengurangi masalah ini yaitu dengan memasang alat pembatas pemakaian telepon.
Hal inilah yang melatarbelakangi penulis membuat karya tugas akhir berupa phone book pada telepon rumah sebagai pencatat nomer telepon dan juga berfungsi untuk membatasi nomer tujuan telepon. Dengan alat ini telepon hanya dapat digunakan jika nomer yang dituju sudah tercatat dalam list yang terlebih dahulu ditulis pada phone book.
menyatu dalam satu chip. Selain itu dengan menggunakan system mikroprosesor maka alat ini akan lebih fleksibel, mudah diintegrasikan dengan system lain untuk pengembangan alat selanjutnya.
1.2. Perumusan Masalah
Proses dialing pada system telepon yang digunakan ada dua macam, yaitu dialing dengan pulsa (pulse dialing) dan dialing dengan dengan nada (tone dialing). Sekarang ini system dialing yang lebih umum digunakan pada pesawat telepon adalah system dialing dengan nada (tone dialing). Pada system dialing ini sinyal yang dikirimkan berupa kombinasi dua buah frekuensi, yaitu frekuensi rendah dan frekuensi tinggi yang menghasilkan suatu tone (nada), sehingga system ini disebut juga system DTMF (Dual Tone Multi Frekuensi).
Sinyal DTMF yang dibangkitkan oleh pesawat telepon akan diterima oleh detector DTMF dan kemudian diubah menjadi kode biner yang akan diambil oleh mikrokontroler sebagai input data untuk diproses. Selain itu rangkaian detector DTMF ini juga dapat membangkitkan sinyal atau nada DTMF dari kode biner yang dikirim oleh mikrokontroler melalui saluran port-portnya ke rangkaian detector DTMF.
1.3. Pembatasan Masalah
Pembatasan pada tugas akhir ini dimaksudkan untuk menghindari supaya permasalahan yang dibahas tidak menyimpang atau melebar dari topik/tema utama. Adapun pembahasan dan alat yang dibuat pada tugas akhir ini terdiri dari sistim minimum mikrokontroler AT89C51 sebagai rangkaian kontrol utama, rangkaian DTMF, rangkaian pendeteksi dering dan rangkaian pendeteksi hook.
1.4. Tujuan penulisan
Tujuan penulisan tugas akhir ini adalah merancang dan membuat alat yang berupa phone book pada telepon rumah yang dapat digunakan untuk menyimpan nomor-nomor telepon dan juga dapat berfungsi sebagai pengontrol pemakaian telepon.
1.5. Sistematika Pembahasan
Penulisan karya tugas akhir dibagi menjadi lima bab, antara bahasan bab yang satu dengan yang lainnya saling berkaitan. Adapun pembahasan tulisan ini disusun sebagai berikut :
BAB II
Berisi landasan teori yang terdiri dari teori-teori yang menunjang terhadap pembutan karya tugas akhir.
BAB III
Berisi perancangan yang mencakup tujuan perancangan, perancangan perangkat
keras (hardware) dan perancangan perangkat lunak (software).
BAB IV
Berisi pengukuran dan analisis yang meliputi metode pengukuran, hasil pengukuran dan analisis data
BAB V
BAB II
LANDASAN TEORI
2.1. Telepon.
Pengertian telepon secara umum adalah konversi sinyal-sinyal suara menjadi sinyal-sinyal listrik frekuensi audio yang kemudian dipancarkan melalui suatu sistem transmisi listrik yang pada akhirnya dikonversi kembali menjadi sinyal-sinyal tekanan suara pada ujung penerima.
Terdapat dua macam type proses dialing, yaitu dialing dengan pulsa dan dialing dengan nada (tone dialing). Tone dialing adalah metode dialing yang lebih modern dan sekarang ini hampir seluruh pesawat telepon yang digunakan di tiap negara menggunakan jenis telepon dengan sistem tone dialing.
Pada sistem dialing ini biasanya pesawat telepon telah dilengkapi dengan papan tombol tekan, sinyal yang dikirimkan bukan merupakan arus rata yang terputus-putus, melainkan berupa kombinasi dari dua buah frekuensi, dimana dengan menekan satu digit tombol maka akan dibangkitkan sinyal yang merupakan kombinasi dari dua buah frekuensi yang menghasilkan suatu nada (tone), sehingga sistem ini disebut juga
1209 1336 1477 1633 697 1 2 3 A 770 4 5 6 B 852 7 8 9 C 941 * 0 # D
Tabel 2.1. Kombinasi frekuensi pada sistem DTMF
Pemanggilan (dial) dengan sistem DTMF standar akan menghasilkan nada (tone) selama tombol ditekan, nada akan dikodekan sebagai digit yang sesuai.
Pesawat telepon dengan sistem ini memiliki empat komponen pokok, diantaranya rangkaian pemanggil, switch hook, bel dan hendset yang didalamnya terdapat transmitter dan receiver.
Prinsip kerja pesawat telepon secara umum adalah sentral memanggil pesawat dengan memberikan ringing tone, sehingga bel berbunyi, hal ini disebabkan karena adanya loop tertutup dari sentral menuju rangkaian bel. Bilamana hendset diangkat maka arus pada bel akan terputus, sehingga pembicaraan dapat berlangsung.
Kondisi sinyal-sinyal pada pesawat telepon:
Pada saat melakukan suatu panggilan, kondisi pada saluran telepon yang terjadi adalah sebagi berikut.
1. Kondisi off hook, saat handset diangkat, tegangan ± 48 Vdc akan turun menjadi 6-12 Vdc, karena saluran telepon mendapatkan beban ± 600 O pada
saat itu.
2. Pada saat tone, frekuensi 425 Hz dengan level 6-12 Vdc yang terdengar dan menunjukan bahwa pesawat telepon telah terhubung dengan saluran telepon. 3. Sinyal DTMF yang terjadi pada saat memutar nomor telepon, sinyal ini
berupa gabungan dua buah frekuensi dengan kombinasi sebagaimana dalam tabel 2.1.
Saat menerima panggilan, kondisi sinyal yang terjadi pada saluran telepon adalah:
1. Sinyal dering, berupa sinyal dengan frekuensi 50 Hz dengan periode yang sama dengan nada panggil sambung dan amplitudo 40 Vrms. Sinyal nada sambung pada telepon pemanggil sebenarnya adalah merupakan duplikasi dari sinyal dering yang terjadi pada telepon yang dipanggil.
2. Off hook, pada saat ini beban ± 600 O terdeteksi sehingga tegangan pada
saluran telepon menjadi turun, sentral saluran telepon yang mendeteksi kondisi ini langsung menghentikan pengiriman sinyal dering maupun sinyal
2.2. Transmitter dan Receiver DTMF
MT8888 merupakan IC DTMF transceiver yang dapat berfungsi sebagai
transmitter (pengirim) dan receiver (penerima) sinyal DTMF. Berikut adalah
gambar susunan pin dan cara menghubungkan MT8888 dengan mikrokontroler.
IN+ 1 IN-2 GS 3 VRef 4 VSS 5 OSC1 6 OSC2 7 TONE 8 R/W 9 CS 10 RS0 11 RD 12 IRQ/CP 13 D0 14 D1 15 D2 16 D3 17 ESt 18 St/GT 19 VDD 20 D T M F I N P U T D T M F O U T P U T VDD T O M I K R O K O N T R O L E R
2.3. Mikrokontroler AT89C51
AT89C51 merupakan mikrokontroller 8-bit yang kompatibel dengan keluarga MCS-51. Fasilitas yang dimiliki mikrokontroler ini diantaranya adalah:
a. Sebuah CPU (Central Processing Unit) 8 bit
b. 4 Kbytes Flash EEROM dengan kemampuan sampai 1000 kali tulis-hapus c. 128 x 8-bit internal RAM.
d. 32-bit atau jalur Input/Output (empat Port I/O). e. 2 (dua) buah 16-bit Timer / Counter.
f. 6 (enam) buah sumber interupsi.
g. Serial Communication Interface.
h. Kompatibel dengan prosesor MCS-51 buatan Intel Corp. i. Operasi Clock antara 1 sampai 24 MHz.
j. Oscilator internal
k. Dapat mengalamati 64 Kbyte ruang alamat ROM/EPROM eksternal. l. Dapat mengalamati 64 Kbyte ruang alamat RAM eksternal.
KONTROL INTERUPSI INTERUPSI EKSTERNAL CPU
ON=CHIP FLASH ON-CHIP RAM DLL. Timer 1 Timer 0 KONTROL
BUSH 4 PORT I/O
PORT SERIAL
P0 P1 P2 P3
OSCILATOR
2.3.1. Blok diagram dan Konfigurasi pin AT89C51
Blok diagram mikrokontroler AT89C51 diperlihatkan oleh gambar 2.2 berut :
Gambar 2.2. Blok diagram AT89C51
Susunan pin-pin mikrokontroler AT89C51 diperlihatkan pada gambar 2.3, penjelasan dari masing-masing pin adalah sebagai berikut :
1. Port 1 (pin 1-8)
Port 1 merupakan port paralel 8 bit dua arah (bidirectional) yang dapat
digunakan untuk berbagai keperluan (general purpose). 2. Reset (pin 9)
Pin 9 adalah masukan reset (aktif high). Pulsa transisi dari rendah ke tinggi akan me-reset AT89C51.
(Interupt 0), Int 1 (interupt 1), T0 (timer 0), T1 (timer 1), WR (write), RD (read).
4. XTAL1 (pin 18)
XTAL adalah pena masukan ke rangkaian oscilator internal. Sebuah oscilator kristal atau sumber oscilator luar dapat digunakan.
5. XTAL2 (pin 19)
XTAL2 adalah pin keluaran ke ocsilator internal. Pin ini dipakai jika menggunakan oscilator internal.
6. Vss (pin 20)
Vss merupakan pin untuk ground. 7. Port 2 (pin 21-28)
Port 2 adalah port paralel selebar 8 bit dua arah. Port 2 ini mengirimkan byte
alamat bagian tinggi (high byte) selama pengambilan instruksi dari memori program eksternal dan selama pengaksesan memori data eksternal.
8. PSEN (pin 29)
PSEN (program store enable) merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk kedalam bus selama proses pemberian atau pengambilan instruksi (fetching)
9. ALE (pin 9)
ALE (addres latch enable) digunakan untuk menahan alamat memori eksternal selama pelaksanaan interuksi.
Bila pin ini diberi logika tinggi, mikrokontroler akan mengeksekusi instruksi dari ROM/EPROM internal, sedangkan jika diberi logika rendah maka mikrokontroler akan melaksanakan seluruh intruksi dari program memori eksternal.
11. Port 0 (pin 32-39)
Port 0 merupakan port paralel 8 bit dua arah (bidirectional). Port 0 juga dapat
dikonfigurasikan sebagai bus alamat/data bagian rendah (low byite) selama proses pengaksesan memori data dan program eksternal.
12. Vcc (pin 40)
Pin ini dihubungkan ke sumber tegangan DC 5 Volt.
2.3.2. Organisasi Memori
Mikrokontroler AT98C51 sama seperti halnya mikrokontroler dari keluarga MCS-51, yaitu memiliki pembagian ruang alamat untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Walaupun demikian, alamat 16 bit dapat dihasilkan melalui register DPTR (data pointer register)
Gambar 2.4. Struktur memori mikrokontroler AT89C51
Memori program hanya dapat dibaca tidak bisa ditulis (karena tersimpan dalam EPROM). Memori program sebesar 64 Kbyte dapat dimasukan dalam EPROM eksternal. Susunan perangkat keras yang menggunakan EPROM eksternal diperlihatkan pada gambar 2.5.
EA=0 EXT EA=1 IN EXT PSEN 0000 FFFFH EXT FFFFH FFH internal 00H 0000H MEMORI DATA PROGRAM MEMORI RD WR
Gambar 2.5. Susunan Memori Program Eksternal
Memori data internal dipetakan seperti pada gambar 2.6. Ruang memorinya dibagi menjadi tiga blok, yaitu sebagai lower 128, upper 128 dan ruang SFR (special
function register) AT89C51 P0 P1 P3 ALE EA
P2
PSEN
LATCH
Memori Program ekternal INSTR. A D D R E S OE GND
Gambar 2.6. Memori data eksternal
Mikrokontroler AT89C51 dapat ditambahkan RAM eksternal sebesar 64 Kbyte. Untuk melakukan pembacaan atau penulisan, mikrokontroler akan mengirimkan sinyal RD atau WR. Gambar 2.7 memperlihatkan hubungan mikrokontroler AT89C51 untuk mengakses RAM eksternal.
FFH 80H 7FH
00H UPPER LOWER FFH 80H AT89C51 P0
P1 ALE EA
RD P3 P2 WR
LATCH
Memori Data ekternal DATA. A D D R E S WE OE VCC I/O
Gambar 2.7. Menghubungkan AT89C51 dengan RAM eksternal
2.3.3. Pewaktuan CPU
Mikrokontroler AT89C51 memiliki oscilator internal (on chip oscillator) yang dapat digunakan sebagai sumber clock bagi CPU. Untuk menggunakan oscilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan pin XTAL2 dan sebuah kapasitor ke ground seperti terlihat pada gambar 2.8.
2.3.4. Special Function Register (SFR)
Mikrokontroler AT89C51 memiliki special function register (SFR) yaitu register-register khusus yang mempunyai fungsi tertentu. Masing-masing register ditunjukan dalam table berikut:
Tabel 2.2. Special function register.
Simbol Nama Alamat
ACC B PSW DPTR P0 P1 P2 P3 IP IE TMOD TCON TH0 Akumulator B register
Program Status Word
Data Pointer 16 Bit DPL Byte rendah DPH Byte tinggi Port 0 Port 1 Port 2 Port 3
Interupt Priority Control Interupt Enable Control Timer/Counter Mode Control Timer/Counter Control Timer/Counter 0 High Byte
E0H F0H D0H 82H 83H 80H 90H A0H B0H B8H A8H 89H 88H 8CH
TL0 TH1 TL1 SCON SBUF PCON
Timer/Counter 0 Low Byte Timer/Counter 1 High Byte Timer/Counter 1 High Byte Serial Control
Serial Data Buffer Power Control 8AH 8DH 8BH 98H 99H 87H
2.3.5. Timer/Counter
Mikrokontroler AT89C51 mempunyai dua buah timer/counter yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1.
Pengontrolan kerja timer/counter adalah register timer/counter (TCON). Adapun definisi dari bit-bit pada timer/counter adalah sebagai berikut:
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR1 TCON.6 Bit untuk menjalankan timer1.
Diset/clear oleh software untuk membuat timer on atau off.
TF0 TCON.5 Timer 0 overflow flag. Diset
Oleh perangkat keras.
TR0 TCON.4 Bit untuk menjalankan timer 0.
Di-set/clear oleh software untuk membuat timer on atau off.
IE1 TCON.3 Eksternal interrupt 1 edge flag.
IT1 TCON.2 Interupt 1 type control bit.
Set/clear oleh software untuk
Menspesifikasikan sisi turun/level rendah trigger dari int eksternal.
IE0 TCON.1 Eksternal interrupt 0 edge flag.
IT0 TCON.0 Interupt 0 type control bit.
Pengontrolan pemilihan mode oprasi timer/counter adalah register timer mode (TMOD) yang difinisi bit-bitnya adalah sebagai berikut.
2.3.6. Program status Word (PSW)
Program ststus word berisi beberapa bit status yang menunjukan keadaan
mikrokontroler. Definisi dari bit-bit PSW adalah sebagai berikut:
CY AC F0 RS1 RS0 OV - P
Simbol Posisi Fungsi
CY PSW.7 Carry Flag
AC PSW.6 Auxilary carry flag
F0 PSW.5 Flag 0 untuk kegunaan umum
RS1 PSW.4 Bit pemilih bank register
RS0 PSW.3 Bit pemilih bank register
OV PSW.2 Overflow flag
- PSW.1 Flag didefinisikan oleh pemakai
Tabel 2.3. Pemilihan bank register.
RS1 RS0 Bank Lokasi Memori
0 0 1 1 0 1 0 1 0 1 2 3 00H-07H 08H-0FH 10H-17H 18H-1FH
2.3.7. Power Control Register (PCON)
Power control register tidak dapat dialamati per bit. Bit-bit dalam register PCON adalah sebagai berikut.
SMOD - - - GF1 GF0 PD0 IDL
Simbol Fungsi
SMOD Bila timer 1 digunakan untuk menghasilkan baudrate dan SMOD=1, baud rate akan dikalikan dua ketika
port serial akan digunakan dalam mode 1, 2 dan 3.
- tidak dipakai
GF1 Bit flag serbaguna
GF0 Bit flag serbaguna
PD Bit power down
2.3.8. Perangkat lunak mikrokontroler AT89C51
Sebuah mikrokontroler hanya akan bekerja bila diberi program terlebih dahulu. Program tersebut akan memberi tahu mikrokontroler apa yang harus dilakukan.
Intruksi-intruksi perangkat lunak berbeda untuk tiap mikrokontroler. Instruksi-instruksi ini hanya bisa dipahami oleh jenis mikrokontroler yang bersangkutan. Sebuah mikrokontroler tidak dapat memahami instruksi-instruksi yang berlakau pada mikrokontroler lain.
Bentuk umum instruksi dalam assembler AT89C51 : [label:] mnemonic [operan] [,operan] [,operan];[komentar] Jumlah operan tergantung pada type mnemonik.
Label harus diletakan pada awal statement dan berfungsi sebagai tujuan loncat. Mnemonik merupakan bentuk instruksi yang dinyatakan dalam kata-kata singkat.
2.3.8.1. Mode pengalamatan
Pada mikrokontroler AT89C51 dekenal beberapa mode pengalamatan, diantaranya:
Perintah ini menyebabkan register A dimuati dengan isi memori dengan alamat 5FH.
2. Mode pengalamatan tidak langsung (indirect addressing)
Pengalamatan tidak langsung menggunakan isi lokasi penyimpanan untuk menunjuk ke alamat yang dituju. Alamat yang disimpan dapat berjumlah 8 bit atau 16 bit.
Contoh: MOV A,@R1 ; A ? (R1)
Perintah ini menyebabkan register A dimuati oleh isi memori yang alamatnya ditunjukan register R1.
3. Mode pengalamatan register (Register Addressing)
Pengalamatan register memungkinkan untuk memindahkan data antar register internal dalam prosessor.
Contoh: MOV B,A ; B ? (A)
Perintah ini menyebabkan register B dimuati isi register A. 4. Mode pengalamatan Immediate Constant
Mode pengalamatan immediate dilakukan dengan memberikan nilai (data) kedalam suatu register secara langsung. Untuk melaksanakan hal ini digunakan tanda #.
Contoh: MOV A,#0FFH
Secara umum perangkat instruksi mikrokontroler AT89C51 dapat dibagi kedalam lima kelompok sebagai berikut:
1. Instruksi Transfer Data
Instruksi ini memindahkan data antara register-register, memori-memori, register-memori, antar muka-register dan antar muka-memori.
2. Instruksi Aritmetik
Instruksi ini melaksanakan instruksi aritmetik yang meliputi penjumlahan, pengurangan, penambahan satu (increment), pengurangan satu (decrement), perkalian dan pembagian.
3. Instruksi Logika dan manipulasi bit
Melaksanakan oprasi logika AND, OR, XOR, perbandingan, pergeseran, dan komplemen data.
4. Instruksi percabangan
Instruksi ini merubah urutan normal pelaksanaan suatu program. Dengan instruksi ini program yang sedang dilaksanakan akan mencabang kesuatu alamat tertentu. Instruksi percabangan dibedakan atas instruksi percabangan bersyarat dan instruksi percabangan tanpa syarat.
LCD (Liquid Cristal Display) tersedia dalam beragam ukuran, mulai dari 1 baris kali 16 karakter sampai 4 baris kali 24 karakter. Setiap karakter terdiri dari 5X8 atau 5X10 titik, sehingga yang ditampilkan bukan hanya angka desimal tetapi juga huruf latin dan lambang lainnya.
Salah satu standar LCD yang dapat berkomunikasi dengan prosesor adalah HD44780U. Standar LCD ini cukup pupuler digunakan untuk display pada beragam sistem prosesor, termasuk mikrokontroler 89C51. Untuk dapat berkomunikasi dengan modul LCD jenis ini mikrokontroler 89C51 hanya membutuhkan 7 atau 11 pin input/output berapapun ukuran LCD-nya.
2.4.1. Standar LCD HD44780
Tabel 2.4. memperlihatkan fungsi pin pada konektor antara LCD dengan sistem prosesor, kolom pertama adalah nomor pin pada konektor tersebut, kolom kedua adalah simbol atau nama pin tersebut, kolom ketiga adalah level digital untuk mengaktifkannya, yaitu 0 atau low, 1 atu high dan 1? 0 atau peralihan dari high ke
low. Kolom ke empat adalah arah komunikasi, yaitu sebagai input, output atau bidirectional (dua arah). Sedangkan kolom kelima adalah keterangan fungsi pin.
Tabel 2.4. Fungsi pin konektor LCD
1 2 3 4 5
1 Vss - - Power supply (GND)
2 Vcc - - Power supply (+5V)
3 Vee - - Contras adjust
4 RS 0/1 I 0 = instruction input
1 = data input
5 R/W 0/1 I 0 = write to LCD modul
1 = read from LCD modul
6 E 1?0 I/O Enable signal
7 DB0 0/1 I/O Data bus line 0
8 DB1 0/1 I/O Data bus line 1
9 DB2 0/1 I/O Data bus line 2
10 DB3 0/1 I/O Data bus line 3
11 DB4 0/1 I/O Data bus line 4
12 DB5 0/1 I/O Data bus line 5
13 DB6 0/1 I/O Data bus line 6
14 DB7 0/1 I/O Data bus line 7
instruksi atau data. Jika RS = low berarti informasi biner tersebut adalah instruksi, tetapi jika RS = high berarti informasi tersebut adalah data. Pin R/W digunakan oleh sistem prosesor untuk memberitahu LCD, apakah prosesor ingin mengirim (R/W =
low) atau membaca (R/W = high) data dari LCD. Pin E digunakan oleh sistem
prosesor untuk memberitahu LCD agar mulai memproses sinyal yang diberikan oleh prosesor, ditandai oleh peralihan kondisi pin E dari high menjadi low.
Khusus untuk pin DB7 selain untuk transfer informasi biner, pin ini juga dapat berfungsi untuk memberitahu sistem prosesor bahwa LCD masih sibuk, belum siap menerima instruksi berikutnya. Jika prosesor mengirimkan perintah ‘Get LCD status’ maka setelah itu prosesor harus menunggu kabar dari pin DB7, jika DB7 = low berarti LCD tidah dalam keadaan sibuk, siap menerima perintah atau data berikutnya.
2.4.2. Inisialisasi LCD
Saat sistem prosesor baru saja ON, prosesor harus melakukan serangkaian inisialisasi, misalnya timer, sistem interupsi, sistem komunikasi serial dan lain-lain. Termasuk inisialisasi device seperti LCD. Untuk setandar HD44780, berikut ini salah satu urutan inisialisasi yang diperlukan sebelum LCD digunakan.
Gambar 2.9. Urutan inisialisasi untuk koneksi data 8 bit.
Power On Wait for more than 15 ms
After Vcc rise to 4.5 V
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 * * * *
Wait more than 41 ms
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 * * * *
Wait more than 100ms
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 * * * * RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 N * * * 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0
kendali. Antara saat LCD dihidupkan dengan byte pertama yang dikirimkan kepadanya tidak boleh kurang dari 15 ms.
2.4.3. Pengiriman data/instruksi ke LCD
Informasi biner yang dikirimkan ke LCD dapat berupa data maupun instruksi. Jika prosesor ingin memberitahu LCD bahwa informasi yang diletakannya di saluran 8-pin data/instruksi adalah instruksi, maka pin RS dibuat low, sedangkan jika pin RS ini dibuat high, berarti informasi biner tersebut adalah data.
Setiap pengiriman 1 byte informasi dari prosesor ke modul LCD harus ditandai dengan peralihan kondisi pin E dari high menjadi low. Segera setelah peralihan pin E ini, modul LCD akan memproses informasi biner tersebut. Karena modul LCD memerlukan waktu tertentu untuk memproses kiriman data/instruksi dari prosesor, maka sebelum pengiriman informasi tersebut prosesor harus memastikan kesiapan modul LCD untuk menerima kiriman byte baru. Kecuali saat pengiriman 4 byte pertama saat inisialisasi, kesiapan LCD menerima kiriman informasi biner dapat diketahui dengan pembacaan DB7.
2.5. EEPROM
teknologi tersebut, jumlah I/O yang digunakan untuk mengakses memori makin sedikit. Hal ini sangat bermanfaat bagi sebuah sistem yang memerlukan banyak I/O. Penggunaan I/O yang semakin sedikit untuk mengakses memori, akan menyediakan lebih banyak I/O yang dapat digunakan untuk keperluan lain.
Gambar 2.10. Susunan pin IC 24CXX
Inter Integrated Circuit (I2C) adalah standar komunikasi serial dua arah
Gambar 2.11. Menghubungkan 24C64 dengan mikrokontroler
Serial EEPROM berdasarkan pengalamatannya terdiri dari dua jenis, yaitu pengalamatan 8 bit yang digunakan untuk serial EEPROM dengan kapasitas memori sebesar 128 byte hingga 2 Kb dan pengalamatan 16 bit untuk serial EEPROM 4Kb hingga 512 Kb.
Gambar 2.12. Pengalamatan serial EEPROM SDA 24C64 SCL
MIKROKONTROLER DATA CLOCK
Pada pengalamatan 16 bit terdapat tiga buah paket 8 bit data yang harus dikirimkan ke serial EEPROM, yaitu control byte, high byte address dan low byte
address, sedangkan pada pengalamatan 8 bit hanya diperlukan dua buah paket 8 bit
data yaitu control byte dan byte address saja. Control byte terdiri dari slave address,
device select bus bit-bit pengatur alamat dari serial EEPROM dalam satu jalur bus,
R/W bit penentu proses penulisan atau pembacaan data dari serial EEPROM.
2.5.1. Akses data Serial EEPROM
Pembacaan maupun penulisan data ke dalam serial EEPROM, selalu diawali dengan pengiriman control byte dan address byte. Hanya pada penulisan data akan dilanjutkan dengan pengiriman data 8 bit, sedangkan sebaliknya pada pembacaan akan dilanjutkan dengan pengambilan data 8 bit. Bit R/W pada control byte akan berlogika 1 untuk pembacaan data dan berlogika 0 untuk penulisan data.
2.5.2. Penulisan data
Penulisan data pada serial EERROM I2C dapat dilakukan secara byte maupun secara page. Pada penulisan secara byte dilakukan dengan mengirimkan control byte,
Gambar 2.13. Penulisan secara byte
Gambar 2.14. Penulisan secara page
2.5.3. Pembacaan data
Pembacaan data dapat dilakukan secara current addess read (pembacaan alamat saat ini) maupun random read (pembacaan secara acak). Pada current addres read, data yang dibaca adalah data pada alamat yang terakhir kali diakses sa itu, sedangkan pada pembacaan secara acak dilakukan dengan mengirimkan control byte dan alamat tujuan terlebih dahulu. Untuk pembacaan secara sequential, dilakukan dengan
control byte dan dilanjutkan dengan data-data yang berada mulai dari alamat yang
Gambar 2.15. Pembacaan secara Current Read
BAB III
PERANCANGAN
3.1. Tujuan perancangan
Tahap pertama yang harus dilakukan dalam merealisasikan ide untuk membuat suatu alat adalah melakukan perancangan. Tujuan dilakukan perancangan yaitu untuk menentukan spesifikasi alat yang akan dibuat.
Hal-hal yang harus diperhatikan dalam melakukan perancangan, antaralain : - Keterbatasan ilmu pengetahuan yang dikuasai penulis.
- Ketersediaan komponen yang ada dipasaran. - Keterbatasan waktu.
- Keterbatasan peralatan
Dengan memperhatikan hal-hal tersebut diatas maka diharapkan kesulitan dalam merealisasikan alat dapat dihindari.
3.2. Tahap-tahap perancangan
Tahap-tahap yang harus dilakukan dalam melakukan suatu perancangan diantaranya:
1. Membuat blok diagram sesuai dengan ide yang telah ditetapkan sebelumnya. 2. Menterjemahkan blok diagram kedalam bentuk rangkaian elektronik.
3. Memilih komponen yang cocok dengan terlebih dahulu mempelajari karakteristiknya serta memastikan bahwa komponen tersebut ada dan mudah diperoleh dipasaran.
4. Melakukan percobaan pada protoboard.
5. Membuat PCB (Printed Circuit Board) dan melakukan perakitan komponen. 6. Mengetes rangkaian pada PCB.
7. Membuat perangkat lunak (software). 8. Melakukan pengetesan akhir.
9. Membuat perangkat mekanik.
3.3. Diagram Blok dan Rangkaian Sistem
Bagian utama diagram blok rangkaian ‘Phone book telepon dengan menggunakan mikrokontroler AT89C51’ terdiri dari:
- Blok sistem minimum mikrokontroler AT89C51 - Rangkaian DTMF
- Rangkaian pendeteksi dering - Rangkaian pendeteksi hook
Diagram blok rangkaian diperlihatkan pada gambar berikut ini.
Gambar 3.1. Diagram blok rangkaian
Dari diagram blok tersebut diatas dapat dilihat gambaran umum prinsip kerja rangkaian.
Mikrokontroler berfungsi sebagai pengontrol sistem yang memproses data input
Mikrokontroler AT 89C51 Display (LCD) Pendeteksi dering Switch Line telepon Line telepon Hand set Pendeteksi Hook Rangkaian DTMF Memori EEPROM
Rangkaian DTMF akan mendeteksi sinyal DTMF pada saluran telepon jika ada yang menekan tombol pesawat telepon. Pendeteksi ring berfungsi mendeteksi nada dering apabila ada pesawat telepon lain yang masuk (melakukan panggilan). Pendeteksi hook berfungsi untuk mendeteksi posisi gagang telepon, apakah posisinya dalam keadaan deletakan (on hook) atau dalam keadaan diangkat (off hook). Switch line telepon digunakan untuk menyambungkan atau memutuskan saluran telepon. EEPROM digunakan untuk menyimpan nomor telepon. Sebagai tampilan untuk memonitor dapat dilihat pada display berupa LCD.
Berikut adalah rangkaian lengkap Phone book telepon dengan menggunakan mikrokontroler AT89C51:
1 2 3 4 A B C D 4 3 2 1 D C B A Title Number Revision Size A4
Date: 19-Jan-2007 Sheet of File: G:\TA2007\PONEBUK\PONEBUK.SCH Drawn By:
TF1 TRAFO C1 100nF C2 1uF/60V R1 100K/1% R2 22K/1% R3 390 X1 3,579 MHz C3 100N D0 D1 D2 D3 1 2 3 4 JP1 LINE TLP TR1 828 R4 10K D1 IN4001 RL2A Relay5VVCC Bloking R5 220 R6 220 +12V T IP _ P R IN G _P 1 2 3 4 JP2 PHONE C4 470nF/63Volt R7 220 IC1 TLP521 HOOK + 1 AC 2 AC 3 - 4 B1 BRIDGE IN+ 1 IN-2 GS 3 Vref 4 GND 5 OSC1 6 OSC2 7 TONE 8 WR 9 CS 10 RS0RD 11 12 IRQ 13 D0 14 D1 15 D2 16 D3 17 ESt 18 St/GT 19 VCC 20 U1 MT8888 VCC IRQDTMF RDDTMF RSDTMF CSDTMF WRDTMF TONEDTMF R13 3K3 P1.0/T2 1 P1.1/T2EX 2 P1.2/RXD1 3 P1.3/TXD1 4 P1.4/INT2 5 P1.5/INT3 6 P1.6/INT4 7 P1.7/INT5 8 RST 9 P3.0/RXD0 10 P3.1/TXD0 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19 A8/P2.0 21 A9/P2.1 22 A10/P2.2 23 A11/P2.3 24 A12/P3.4 25 A13/P3.5 26 A14/P2.6 27 A15/P2.7 28 PSEN 29 ALE/PROG 30 EA/Vpp 31 AD7/P0.7 32 AD6/P0.6 33 AD5/P0.5 34 AD4/P0.4 35 AD3/P0.3 36 AD2/P0.2 37 AD1/P0.1 38 AD0/P0.0 39 U2 AT89S8252 XTAL2 RST PROG PSEN XTAL1 P0.5 P0.6 P0.7 D1 D0 LD1 P0.3 SDA Bloking Ringon HOOK BUZZ IRQDTMF P2.6 RS EN P2.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 CSDTMF WRDTMF RSDTMF P0.2 RDDTMF SCL C5 33p C6 33p C7 10uF/50V R10 10K X2 11,059MHz VCC VCC SW1 SW-PB D3 P0.4 D2 1 2 3 4 5 6 7 8 9 J1 CON9 VCC R15 1K C8 100N TONEDTMF TONE TONE D2 1N4002 D3 1N4002 1 2 3 JP3 CON3 C9 1000uF/50V D4 1N4002 D5 1N4002 +12V Vin 1 G N D 2 +5V 3 U5 LM7805CT VCC LD1 LED R16 1K VCC LD1 LD2 LED R17 1K GND R18 10 Q1 TIP42 TIP RING R8 220 IC2 TLP521 VCC Ringon R19 6K8 C10 1uF R20 10K Ring Detektor + 1 AC 2 AC 3 - 4 B2 BRIDGE C11 100uF R21 10K VCC GND TR1 C828 SP1 BUZZER VCC BUZZ R9 4K7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 J1 DSP VCC GND RS GND EN P1 5K VCC P0.4 P0.5 P0.6 P0.7 VCC R4 1K P0.3 P0.2 P0.1 P0.0 1 2 3 4 5 6 7 8 U2 AT24C08 SCL SDA VCC GND GND
3.4. Perancangan perangkat keras (Hardware)
Perancangan perangkat keras rangkaian “Phone book telepon dengan menggunakan mikrokontroler AT89C51” dapat dibagi menjadi beberapa rangkaian, yaitu:
3.4.1. Perancangan sistem minimum AT89C51
Rangkaian sistem minimum AT89C51 berfungsi untuk melakukan pengolahan/pemroses data. Rangkaian ini menggunakan komponen utama mikrokontroler AT89C51.
Sebagai sumber detak menggunakan oscillator internal dengan cara menambahkan resonator kristal 11 MHz diantara kaki-kaki XTAL1 dan XTAL2.
P1.0/T2 1 P1.1/T2EX 2 P1.2/RXD1 3 P1.3/TXD1 4 P1.4/INT2 5 P1.5/INT3 6 P1.6/INT4 7 P1.7/INT5 8 RST 9 P3.0/RXD0 10 P3.1/TXD0 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19 A8/P2.0 21 A9/P2.1 22 A10/P2.2 23 A11/P2.3 24 A12/P3.4 25 A13/P3.5 26 A14/P2.6 27 A15/P2.7 28 PSEN 29 ALE/PROG 30 EA/Vpp 31 AD7/P0.7 32 AD6/P0.6 33 AD5/P0.5 34 AD4/P0.4 35 AD3/P0.3 36 AD2/P0.2 37 AD1/P0.1 38 AD0/P0.0 39 U2 AT89C51 XTAL2 RST PROG PSEN XTAL1 P0.5 P0.6 P0.7 D1 D0 LD1 P0.3 SDA Bloking Ringon HOOK IRQDTMF P2.6 RS EN P2.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 CSDTMF WRDTMF RSDTMF P0.2 RDDTMF SCL C5 33p C6 33p C7 10uF/50V R10 10K X2 11,059MHz VCC VCC SW1 SW-PB D3 P0.4 D2 1 2 3 4 5 6 7 8 9 T O L C D VCC 1 2 T O E E P R O M 1 2 3 K O N T R O L L C D 1 2 3 4 T O D A T A D T M F 1 2 3 4 5 K O N T R O L D T M F 1 DETEKSI HOOK 1 SWITCH LINE 1 DETEKSI DERING
Gambar 3.3. Rangkaian sistem minimum mikrokontroler AT89C51
Didalam mikrokontroler AT89C51 tedapat berbagai fasilitas seperti yang telah disebutkan pada bab landasan teori sebelumnya, namun dalam rangkaian yang dibuat ini hanya beberapa fasilitas saja yang akan digunakan.
Pada rangkaian ini port 0 (P0.0-P0.7) digunakan untuk saluran data yang akan menampilkan display ke LCD. Sebagai saluran kontrolnya (kontrol LCD) digunakan (P2.0-P2.3). Sementara EEPROM dihubungkan melalui P2.1 dan P2.2.
Port 1 low byte (P1.0-P1.3) difungsikan sebagai saluran untuk menerima atau
Port 3 digunakan untuk saluran kontrol DTMF, mendeteksi sinyal yang masuk
dari rangkaian pendeteksi dering dan pendeteksi hook, selain itu juga digunakan untuk mengontrol rangkaian pemutus line telepon (switch line).
3.4.2. Rangkaian DTMF
Rangkaian DTMF mempunyai fungsi untuk mendeteksi sinyal DTMF yang masuk saat tombol pesawat telepon ditekan. Sinyal yang masuk tersebut kemudian diubah menjadi kode biner yang akan diambil sebagai data input mikrokontroler. Selain itu, rangkaian ini juga dapat mengirim/membangkitkan sinyal DTMF. Pada rangkaian ini saluran data biner (D0-D3) dihubungkan ke mikrokontroler melalui
port 1 (P1.0-P1.3) TF1 TRAFO C1 100nF C2 1uF/60V R1 100K/1% R2 22K/1% R3 390 X1 3,579 MHz C3 100N D0 D1 D2 D3 IN+ 1 IN-2 GS 3 Vref 4 GND 5 OSC1 6 OSC2 7 TONE 8 WR 9 CS 10 RS0 11 RD 12 IRQ 13 D0 14 D1 15 D2 16 D3 17 ESt 18 St/GT 19 VCC 20 U1 MT8888 VCC IRQDTMF RDDTMF RSDTMF CSDTMF WRDTMF TONEDTMF R13 3K3 TONE GND R15 1K 1 2 3 4 T O M IK R O K O N T R O L E R 1 2 3 4 LINE TELEPON P3.2 P3.1 P3.3 P3.5 P3.4 P1.0 P1.1 P1.2 P1.3
Komponen utama rangkaian DTMF adalah IC MT8888. Sebagai sumber clock (oscillator) menggunakan kristal 3.57 MHz. Kapasitor pada input DTMF berfungsi untuk memblokir tegangan DC dan melewatkan sinyal DTMF.
MT8888 mempunyai beberapa register, diantaranya transmit data register yang berfungsi mengirim data DTMF, receive data register untuk menerima nada DTMF, register control yang berfungsi untuk mengatur tata kerja MT8888 dan status register yang berfungsi untuk memantau keadaan/status MT8888. Untuk mengaktifkan register-register tersebut harus terlebih dahulu mengatur saluran kontrol dari register tersebut, yaitu saluran register slect (RS0), read (RD), write (WR) dan chip select (cs). Pada rangkaian ini saluran-saluran kontrol tersebut terhubung ke mikrokontroler melalui pin P3.3 (terhubung ke RS0), P3.5 (terhubung ke CS), P3.4 (terhubung ke WR) dan P3.1 (terhubung ke RD).
Berikut adalah fungsi dari saluran kontrol:
RS0 WR RD FUNGSI
0 0 1 Menulis data ke transmit data register 0 1 0 Membaca data dari receive data register 1 0 1 Menulis data ke control register
1 1 0 Membaca data dari status register
IRQ digunakan untuk memantau data pada IC MT8888. Saat ada sinyal DTMF yang terdeteksi rangkaian DTMF, IRQ akan berlogika 0. Bila tidak ada sinyal DTMF
yang terdeteksi, IRQ akan berlogika 1. Pada rangkaian ini IRQ terhubung ke mikrokontroler melalui kaki P3.2.
3.4.3. Rangkaian pendeteksi dering
Rangkaian pendeteksi dering berfungsi untuk mendeteksi sinyal dering saat ada telepon yang masuk (melakukan panggilan). Bila ada nada dering yang masuk, keluaran dari tegangan sinyal pulsa pada rangkaian pendeteksi dering adalah sebesar 0 Volt dan bila tidak ada sinyal dering maka tegangan keluaran sinyal pulsa dari rangkaian adalah 5 Volt. Output rangkaian pendeteksi dering dihubungkan ke mikrokontroler melalui kaki P3.7.
TIP RING R8 220 IC2 TLP521 VCC Ringon R19 6K8 C10 1uF R20 10K + 1 AC 2 AC 3 - 4 B2 BRIDGE C11 100uF PESAWAT TELEPON LINE TELEPON 1 T O M IK R O K O N T R O L E R P 3. 7
Gambar 3.5. Rangkaian pendeteksi dering
berfungsi untuk membatasi arus yang masuk ke kaki kolektor transistor pada TLP521.
3.4.4. Rangkaian pendeteksi hook
Rangkaian pendeteksi hook berfungsi untuk mengetahui kondisi gagang pasawat telepon, apakah gagang tersebut dalam posisi diangkat (off hook) atau dalam posisi diletakan (on hook).
Output rangkaian dihubungkan ke mikrokontroler melalui kaki P3.0. C4 470nF/63Volt R7 220 IC1 TLP521 HOOK + 1 AC 2 AC 3 - 4 B1 BRIDGE R21 10K VCC PESAWAT TELEPON LINE TELEPON 1 T O M IK R O K O N T R O L E R P 3. 0
Gambar 3.6. Rangkaian pendeteksi hook
Pada rangkaian pendeteksi hook, apabila gagang telepon di angkat maka arus akan mengalir melalui resistor R7 (220 ? ), sehingga pada resistor timbul tegangan yang akan mengaktifkan opto-coupler (TLP 521), hal ini menyebabkan tegangan keluaran rangkaian menjadi 0 Volt (pulsa 0). Sebaliknya jika gagang telepon dalam
posisi diletakan arus tidak akan mengalir sehingga opto-coupler tidak aktif dan keluaran rangkaian 5 Volt (pulsa1).
3.4.5. Rangkaian pemutus line telepon
Rangkain pemutus line telepon digunakan untuk menyambungkan atau memutuskan rangkaian dengan line telepon. Rangkaian ini dihubungkan ke mikrokontroler melelui kaki P3.6.
TR1 828 R4 10K D1 IN4001 RL2A Relay5V VCC Bloking R5 220 R6 220 +12V T IP _ P PESAWAT TELEPON LINE TELEPON 1 P3.6 T O MI K R O K O N T R O L E R
Bila mikrokontroler mengirimkan sinyal pulsa 0, maka transistor berada dalam kondisi cut off , tegangan pada kolektor-emiter transistor (Vce) mendekati tegangan VCC sehingga relay akan off. Jika mikrokontroler memberikan sinyal pulsa 1, maka transistor menjadi saturasi, tegangan pada kolektor-emiter transistor (Vce) mendekati 0 sehingga relay akan menjadi on.
3.5. Perancangan perangkat lunak (software)
Perangkat lunak mikrokontroler akan mengontrol kerja dari perangkat keras rangkaian, sehingga bagian ini sangat menentukan bekerja atau tidaknya sistem secara keseluruhan.
Bahasa pemrograman menggunakan bahasa assembler MCS51.
Tahap perancangan perangkat lunak (software) diawali dengan membuat algoritma dan flowchart terlebih dahulu, dengan cara ini program yang dibuat akan menjadi terstruktur dan terarah.
Mulai Inisialisasi Check Ring Ada Ring ? Check Hook Hook Detect Aktif ? Aktifkan Relay Tunggu Sampai Telp Ditutup Telp Ditutup ? Matikan Relay Tampilkan Menu Pilih Menu A Masukkan Password Password OK ? B ya ya ya ya tdk tdk tdk tdk
A Pilih Menu 1 ? Pilih Menu 2 ? Pilih Menu 3 ? Masukan Nama Masukkan Nomor Pilih Nomor Tujuan Dialling Tunggu Telp Ditutup Telp Ditutup ? Reset Memory Selesai ? B B ya tdk ya ya ya tdk tdk tdk tdk
Gambar 3.8. Flowchart
3.6. Cara Kerja alat.
Alat dipasang secara paralel dengan line telepon. Ketika power dihidupkan posisi gagang telepon harus dalam keadaan diletakan (on hook)
Proses inisialisasi akan dilakukan saat pertama kali alat dihidupkan (power on). Selanjutnya mikrokontroler akan mengecek nada dering. Jika ada nada dering, maka alat siap untuk menerima panggilan. Jika tidak ada nada dering mikrokontroler akan mengecek kondisi gagang telepon. Apabila gagang telepon tidak diangkat mikrikontroler kembali akan memeriksa nada dering.
Saat gagang telepon diangkat (off hook) mikrokontroler akan mengecek tombol telepon. Apabila saat itu memasukan nomor telepon yang tidak terdaftar dalam list maka akan diminta untuk memasukan pasword (pasword: 2222) jika pasword sudah benar maka panggilan keluar dapat dilakukan, namun jika pasword salah maka tidak dapa melakukan panggilan keluar.
Untuk masuk ke sub menu tekan tombol bintang (*), kemudian masukan pasword (pasword: 1111) jika pasword salah maka tidak dapat masuk ke sub menu. Dalam sub menu terdapat beberapa pilihan, untuk memasukan list telepon baru tekan 1, untuk melihat list telepon/menghapus list telepon tekan 2 sedangkan untuk mereset list telepon tekan 3.
PENGUJIAN DAN ANALISA
4.1. Pengujian pendeteksi dering.
Pengujian dilakukan dengan cara menghubungkan input rangkaian pendeteksi dering ke saluran line telepon, kemudian tegangan keluaran rangkaian diukur menggunakan voltmeter. Pengukuran dilakukan saat ada nada dering dan saat tidak ada nada dering. Berikut ini adalah hasil pengukuran.
Kondisi pengukuran Vo (tegangan keluaran)
Tidak ada nada dering 4,3 volt
Ada nada dering 0,2 volt
Tabel 4.1. Hasil pengukuran rangkaian pendeteksi dering
4.2. Pengukuran pendeteksi hook
Pengujian dilakukan dengan cara menghubungkan input rangkaian pendeteksi dering ke saluran line telepon, kemudian tegangan keluaran rangkaian diukur menggunakan voltmeter. Ukur tegangan keluaran saat gagang telepon diletakan (on hook) dan saat gagang telepon diangkat (off hook).
Berikut ini adalah hasil pengukuran.
Kondisi pengukuran Vo (tegangan keluaran)
Gagang telepon diletakan 4,2 Volt
Gagang telepon diangkat 0,4 Volt
Tabel 4.2. Hasil pengukuran rangkaian pendeteksi hook
4.3. Pengujian Pemutus line (switch line)
Pengujian dilakukan dengan cara mengukur tegangan pada relay sebagai switch telepon. Pengukuran dilakukan ketika input rangkaian diberi logika 0 dan logika 1 oleh mikrokontroler.
Berikut ini adalah hasil pengukuran.
Kondisi Pengukuran Vrelay (tegangan relay)
Diberi logika 0 0,1 Volt
KESIMPULAN DAN SARAN
5.1. Kesimpulan.
- Alat phone book telepon dapat menyimpan list telepon sampai 100 nomor. Semakin besar kapasitas memori yang digunakan, semakin banyak jumlah nomor telepon yang dapat disimpan.
- Alat hanya dapat digunakan apabila sudah mengetahui/memasukan password terlebih dahulu.
- Alat dapat dipasang secara paralel dengan telepon yang menggunakan sistem dial tone.
5.2. Saran.
Untuk pengembangan lebih lanjut pada alat dapat ditambahkan aplikasi SMS, pembatas pulsa atau pembatas waktu pemanggilan.
Agianto Eko Putra, 2002, Belajar Mikrokontroler AT89C51/52/55 (Teori dan
aplikasi), Gava Media, Yogyakarta
Suhata ST, 2005, Aplikasi Mikrokontroler sebagai pengendali peralatan elektronik
via line telepon, PT Elex Media Komputindo, Jakarta
Malvino, Barmawi, Prinsip-prinsip elektronika, Erlangga, Jakarta
Atmel, Flash Mikrokontroler: Architektural Overview, Atmel Inc. (http://www. Atmel.com), USA
Atmel, AT89 Series Hardware Descripsion, Atmel Inc. (http://www. Atmel.com), USA
LAMPIRAN A
$mod51 ;===========HARDWARE CONFIGURATION======================= ;LCD , data => P0 rs bit P2.5 rw bit P2.6 en bit P2.7
run_led bit P2.4 ;output, program running indicator ;I2C, 2464 serial EEPROM
sda bit P2.2
scl bit P2.1
;Phone interface
ring bit P3.7 ;input,0=ring
relay bit P3.6 ;output,0=supply line ,1=phoneline
hook bit P3.0 ;input,0=offhook
;MT8888
dtmf_port equ p1
irq bit P3.2 ;
wrdtmf bit P3.4 ;active low
cs bit P3.5
rs0dtmf bit P3.3
rddtmf bit P3.1
;==============BUFFERS==================================== ; BIT ADDRESSED :
tone_detect equ 00h ;1=dtmf key tone detected
pw_ok equ 01h ;1=password OK
first_time equ 02h ;1=first time cursor_inc equ 03h ;1=cursor increased ; BYTE :
dtmf_buff equ 30h ;ASCII 0-9,*,# itc_buff equ 31h ;data buffer to be sent/rcv via I2C itc_addrl equ 32h ;Address low byte
itc_addrh equ 33h ;Address high byte ;
password4 equ 31h ; ;Dial Password password21 equ 32h password22 equ 32h password23 equ 32h password24 equ 32h ;************** BASE PAGE ****************** org 0000h jmp init ; ;************** INISIALISASI *************** init: mov sp,#5fh ;init.stack pointer
setb relay ;main network line call delay_1s
call init_mt8888 clr rw
call init_lcd ;
main: call switch_to_telkom main_loop: jb hook,main_loop
jnb ring,is_it_ring jmp main_dial ;
is_it_ring: call delay_500ms mov b,#0c0h recheck_ring: jnb ring,ring_procedure call delay_5ms djnz b,recheck_ring jmp main_loop ; ;*******************************************
ring_procedure: mov dptr,#msg7 ;db' Incoming Call ... ',0ffh; call line1
;
call delay_2s mov b,#40
ring_loop: call delay_100ms jnb ring,ring_procedure jnb hook,incall_progress djnz b,ring_loop
;
incall_progress: call delay_1s jnb hook,$ call delay_1s call clr_scr jmp main_loop ; ;******************************************* main_dial: call switch_to_supply
;
mov dptr,#msg0 ;db' Press (*) ',0ffh; call line1
mov dptr,#msg1 ;db' to enter MENU ',0ffh; call line2 ; main_dial_loop: jb hook,main_dial_exit call dtmf_chk jnb tone_detect,main_dial_loop mov a,dtmf_buff cjne a,#'*',direct_dial jmp menu ; main_dial_exit: call clr_scr jmp main ; ;******************************************* direct_dial: call clr_scr mov dptr,#msg8 ;db' OK (#) ',0ffh call line2 ; mov a,#80h call iwr ; call reset_buffer
; direct_dial_loop: jb hook,direct_dial_exit call dtmf_chk jnb tone_detect,direct_dial_loop mov a,dtmf_buff cjne a,#'#',show_dial_num ;
compare_entry: mov dptr,#msg15 ;db' Please wait ',0ffh; call line2 ; mov itc_addrh,#00h mov itc_addrl,#10h compare_entry2: mov b,#16 mov r0,#general1 clr pw_ok ;
cmpr_nxt_digit: call itc_byte_rd mov a,@r0 cjne a,itc_buff,pcmpr_not_same pcmpr_nxt_dgt2: inc r0 call inc_itc_addr djnz b,cmpr_nxt_digit jnb pw_ok,dial_approved jmp pcmpr_nxt_entry ;
pcmpr_not_same: setb pw_ok
jmp pcmpr_nxt_dgt2 ;
pcmpr_nxt_entry: mov b,#16
cne_loop: call inc_itc_addr djnz b,cne_loop mov a,itc_addrh cjne a,#20h,compare_entry2 ; call password_2 jb pw_ok,dial_approved jnb hook,$ call clr_scr jmp main ;
call clr_scr jmp main_loop ; direct_dial_exit: call clr_scr jmp main ; ;******************************************* menu: call password
jb pw_ok,menu_ok jnb hook,$
jmp main ;
menu_ok: mov dptr,#msg5 ;db'1.Add New 3.Reset ',0ffh; call line1 mov dptr,#msg6 ;db'2.Call/Erase ',0ffh; call line2 ; menu_loop: jb hook,menu_exit call dtmf_chk jnb tone_detect,menu_loop mov a,dtmf_buff
chk_menu1: cjne a,#'1',chk_menu2 call menu1
jmp menu_ok ;
chk_menu2: cjne a,#'2',chk_menu3 call menu2
jmp menu_ok ;
chk_menu3: cjne a,#'3',menu_exit call menu3
jmp menu_ok ;
mov a,#0c0h call iwr call blink ; call reset_buffer ; mov prev_key,#0ffh
mov r0,#general1 ;character buffer mov r1,#16 ;maximum char length mov r2,#0c0h ;cursor pointer
time_reload: mov r3,#0c0h ;timeout value (x10ms) ; mov tap_ctr,#00h ; menu1_loop: jb hook,menu1_exit call dtmf_chk jb tone_detect,get_tap_key call delay_10ms djnz r3,menu1_loop mov a,tap_ctr jz time_reload inc r2 mov a,r2 call iwr setb cursor_inc inc r0 djnz r1,time_reload call stopblink call delay_2s jmp edit_number ;
menu1_exit: call stopblink ret
;
get_tap_key: mov a,dtmf_buff
cjne a,prev_key,new_key jmp get_table1
;
new_key: mov prev_key,a
jbc first_time,get_table1 jbc cursor_inc,name_not16
call iwr inc r0
djnz r1,name_not16 name_ok: call stopblink
call delay_2s jmp edit_number ;
name_not16: mov tap_ctr,#00h ;
get_table1: mov a,dtmf_buff cjne a,#'1',get_table2 mov dptr,#char_1 jmp get_char ;
get_table2: cjne a,#'2',get_table3 mov dptr,#char_2 jmp get_char ;
get_table3: cjne a,#'3',get_table4 mov dptr,#char_3 jmp get_char ;
get_table4: cjne a,#'4',get_table5 mov dptr,#char_4 jmp get_char ;
get_table5: cjne a,#'5',get_table6 mov dptr,#char_5 jmp get_char ;
get_table6: cjne a,#'6',get_table7 mov dptr,#char_6 jmp get_char ;
mov dptr,#char_9 jmp get_char ;
get_table0: cjne a,#'0',chk_char_ok mov dptr,#char_0 jmp get_char ;
chk_char_ok: cjne a,#'#',chk_name_bs jmp name_ok ; chk_name_bs: inc r1 cjne r1,#17,name_bs_cont mov r1,#16 name_bs_cont: mov @r0,#0ffh dec r0 cjne r0,#general1-1,name_bs_cont2 mov r0,#general1 name_bs_cont2: dec r2 cjne r2,#0bfh,name_bs_cont3 mov r2,#0c0h
name_bs_cont3: setb first_time mov tap_ctr,#00h mov a,r2 call iwr mov a,#' ' call dwr mov a,r2 call iwr jmp menu1_loop ;
get_char: mov a,tap_ctr movc a,@a+dptr
cjne a,#0ffh,get_char_cont mov tap_ctr,#00h
jmp get_char ;
get_char_cont: inc tap_ctr
mov @r0,a call dwr mov a,r2 call iwr
;
;************************* edit_number: call clr_scr
mov dptr,#msg11 ;db' Phone Number: ',0ffh call line1 ; mov a,#0c0h call iwr ;call blink ;
mov r0,#general1+16 ;character buffer
mov r1,#16 ;maximum char length mov r2,#0c0h ;cursor pointer
; edit_num_loop: jb hook,edit_num_exit call dtmf_chk jnb tone_detect,edit_num_loop mov a,dtmf_buff cjne a,#'#',chk_num_bs ;call stopblink call save_entry jmp edit_num_exit ;
chk_num_bs: cjne a,#'*',valid_num inc r1 cjne r1,#17,num_bs_cont mov r1,#16 num_bs_cont: mov @r0,#0ffh dec r0 cjne r0,#general1+15,num_bs_cont2 mov r0,#general1+16 num_bs_cont2: dec r2 cjne r2,#0bfh,num_bs_cont3 mov r2,#0c0h
call delay_2s ret
;
valid_num: mov a,dtmf_buff call dwr mov @r0,dtmf_buff inc r0 inc r2 djnz r1,edit_num_loop call save_entry jmp edit_num_exit ; char_1: db' .,?!"*#1',0ffh char_2: db'ABCabc2',0ffh char_3: db'DEFdef3',0ffh char_4: db'GHIghi4',0ffh char_5: db'JKLjkl5',0ffh char_6: db'MNOmno6',0ffh char_7: db'PQRSpqrs7',0ffh char_8: db'TUVtuv8',0ffh char_9: db'WXYZwxyz9',0ffh char_0: db'+-=%&()0',0ffh ;******************************************* reset_buffer: mov r0,#general1
mov b,#32 rst_buff_loop: mov @r0,#0ffh inc r0 djnz b,rst_buff_loop ret ; ;********** Menu2 CALL/ERASE************** menu2: call clr_scr
mov dptr,#msg18 ;db' Dial(0) Erase(5) ',0ffh call line1
mov dptr,#msg19 ;db' Next(*) Prev(#) ',0ffh call line2
;
call delay_2s call clr_scr
mov dptr,#msg15 ;db' Please wait ',0ffh; call line1
mov itc_addrl,#00h chk_dial_entry: call itc_byte_rd
mov a,itc_buff
cjne a,#0ffh,dsp_entry mov b,#32
find_next_entry: call inc_itc_addr djnz b,find_next_entry mov a,itc_addrh
cjne a,#20h,chk_dial_entry
mov dptr,#msg17 ;db' Data Empty ',0ffh call line2 call delay_2s ret ; dsp_entry: call clr_scr mov a,#80h call iwr mov b,#16 dsp_name_loop: call itc_byte_rd
mov a,itc_buff cjne a,#0ffh,dsp_name_ok mov a,#20h dsp_name_ok: call dwr call inc_itc_addr djnz b,dsp_name_loop ; mov a,#0c0h call iwr call reset_buffer mov r0,#general1 mov b,#16
dsp_num_loop: call itc_byte_rd mov a,itc_buff mov @r0,a
jnb tone_detect,menu2_loop mov a,dtmf_buff
;
chk_next_dial: cjne a,#'*',chk_prev_dial chk_next_dial2: mov a,itc_addrh
cjne a,#20h,next_entry_ok mov itc_addrh,#00h mov itc_addrl,#00h next_entry_ok: call itc_byte_rd
mov a,itc_buff
cjne a,#0ffh,dsp_entry
mov dptr,#msg15 ;db' Please wait ',0ffh; call line1
mov dptr,#msg20 ;db' ',0ffh; call line2
;
mov b,#32 nxt_dial_loop: call inc_itc_addr
djnz b,nxt_dial_loop jmp chk_next_dial2 ;
chk_prev_dial:cjne a,#'#',chk_start_dial mov b,#64
prev_dial_loop: call dec_itc_addr djnz b,prev_dial_loop call itc_byte_rd mov a,itc_buff
cjne a,#0ffh,dsp_entryt
mov dptr,#msg15 ;db' Please wait ',0ffh; call line1 mov dptr,#msg20 ;db' ',0ffh; call line2 mov b,#32 jmp prev_dial_loop ; dsp_entryt: jmp dsp_entry chk_start_dial: cjne a,#'0',chk_erase jmp dialing ;
mov b,#32
pre_erase: call dec_itc_addr djnz b,pre_erase mov b,#32
erase_loop: mov itc_buff,#0ffh call itc_byte_wr call inc_itc_addr djnz b,erase_loop jmp search_beginning ;
dialing: mov dptr,#msg9 ;db' Dialing ... ',0ffh call line2 ; call dial ret ; ;******************************************* dial: call switch_to_telkom
call delay_1s ; mov a,#0c0h ; call iwr ; mov b,#16 mov r0,#general1 dialing_loop: mov a,@r0
cjne a,#0ffh,dial_valid jmp skip_dial
;
dial_valid: ; push acc ; call dwr ; pop acc
anl a,#0fh jnz dial_valid2 mov a,#0ah
; dialing_loop2: jnb hook,$ ret ; ;*************** Menu3 RESET*************** menu3: call clr_scr
mov dptr,#msg12 ;db' Are You Sure ? ',0ffh call line1
mov dptr,#msg13 ;db' Yes(#) No(*) ',0ffh call line2 ; menu3_loop: jb hook,menu3_exit call dtmf_chk jnb tone_detect,menu3_loop mov a,dtmf_buff cjne a,#'#',chk_rst_cancel ; call clr_scr
mov dptr,#msg15 ;db' Please wait ',0ffh; call line1
;
mov itc_addrl,#00h mov itc_addrh,#00h ;
reset_loop: mov itc_buff,#0ffh call itc_byte_wr call inc_itc_addr mov a,itc_addrh cjne a,#20h,reset_loop ; mov dptr,#msg14 ;db' Done ',0ffh; call line1 call delay_1s menu3_exit: call clr_scr ret ;
chk_rst_cancel: cjne a,#'*',menu3_loop jmp menu3_exit ;
;******************************************* password: clr pw_ok
call line1 ; mov a,#8dh call iwr ; mov b,#4 mov r0,#general1 pw_loop: jb hook,pw_exit call dtmf_chk jnb tone_detect,pw_loop mov @r0,dtmf_buff inc r0 mov a,#'*' call dwr djnz b,pw_loop ; mov r0,#general1 cjne @r0,#password1,invalid_pw inc r0 cjne @r0,#password2,invalid_pw inc r0 cjne @r0,#password3,invalid_pw inc r0 cjne @r0,#password4,invalid_pw setb pw_ok ; mov dptr,#msg3 ;db' Password OK ',0ffh; call line2
pw_exit: call delay_1s call clr_scr ret
;
invalid_pw: clr pw_ok
call line1 ; mov a,#8dh call iwr ; mov b,#4 mov r0,#general1+20 pw2_loop: jb hook,pw2_exit call dtmf_chk jnb tone_detect,pw2_loop mov @r0,dtmf_buff inc r0 mov a,#'*' call dwr djnz b,pw2_loop ; mov r0,#general1+20 cjne @r0,#password21,invalid_pw2 inc r0 cjne @r0,#password22,invalid_pw2 inc r0 cjne @r0,#password23,invalid_pw2 inc r0 cjne @r0,#password24,invalid_pw2 setb pw_ok ; mov dptr,#msg3 ;db' Password OK ',0ffh; call line2
pw2_exit: call delay_1s call clr_scr ret
; invalid_pw2: clr pw_ok
mov dptr,#msg4 ;db' Invalid Password ! ',0ffh; call line2 call delay_1s call clr_scr ret ; ;******************************************* switch_to_telkom: setb relay