Pages

PENGONTROLAN LAMPU DENGAN DTMF HP

Rabu, 26 Agustus 2009
PENGONTROLAN LAMPU DENGAN DTMF HP


Pada dasarnya alat yang kami buat ini bekerja menggunakan sinyal DTMF yang dihasilkan oleh suatu HP lalu diterjemahkan kedalam kode biner oleh Detektor DTMF MT8870. Lalu kode biner yang telah dihasilkandibuat sebagai inputan untuk Mikrokontroler ATMega8(Kami menggunakan Mikrokontroler karena supaya dapat memiliki output yang banyak dengan kombinasi biner yang masuk dari MT8870.


Gambar Konfigurasi Pin MT8870
Gambar Konfigurasi Pin ATMega8


Cara Kerja Alat :

1. Pertama - saat ada panggilan masuk ( Diandaikan sang pemilik rumah menelepon) maka ponsel/hp yang telang terhubung pada sistem dirumah akan bunyi.
2. Pada ponsel penerima dapat diset jika ada panggilan masuk otomatis akan menjawab panggilan, jadi pada sistem ini kita tidak perlu menambahkan alat untuk mengangkat telepon secara otomatis.
3. Jika telepon yang ada pada sistem telah menjawab maka kita dapat memulai dengan menekan tombol angka 1pada HP penelepon maka dengan sarana headset yang telah kita modifikasi nada DTMF dari HP penelepon akan dapat terbaca oleh IC MT8870 (IC DTMF).
4. IC MT8870 ini akan menerjemahkan kode/nada DTMF dari HP ke bentuk biner sebegai sebuah outputan dengan tegangan 5v. Coba berikan LED pada outpputan untuk mengetahui adanya outputan dari MT8870 atau tidak.
5. Sebenarnya cukup sampai sini saja kita juga sudah dapt menghidupkan lampu dari jarak kejauhan dengan sarana HP.
6. Namun pada proyek kami, disini kami menambahkan Rangkaian Mikro untuk dapat mengembangkan outputan dari IC DTMF MT8870 tadi.
7. Setelah MT 8870 dapat mengeluarkan output saat tombol 1,2,atau 3 ditekan maka kita dapat menyambung outputan ke kaki input pada Mikro ATMega8.
8. Pada ATMega8 kita dapat menentukan dimana saja kaki yang ingin digunakan sebagai input atau sebagai outputan.
9. Jika sudah terprogram Mikro kita, maka kita dapat langsung menyambung outputan Mikro (dan perlu diingat Mikro hanya dapat bekerja pada tegangan 5VDC!!) dengan Relay yang dapat mengubungkan / mensaklarkan Listrik rumah 220v.
10. Hubungkan kaki Common Relay ke kutup N setelah itu No dan Nc mendapat beban Lampu, Mesin Cuci, Heater, dll ke kutub R/S/T(Sesuai ketersediaan listrik dirumah masing).

Daftar alat yang digunakan :

1. Handphone
2. Headset stereo
3. IC DTMF MT8870
4. Mikrokontroller ATMega8


Cara perakitan komponen :

1. Headset stereo pada ujung speaker yang akan masuk ke dalam telinga kita lepas keduanya(kiri dan kanan), lalu akan ada dua kabel dari tiap speaker ada warna hitam coret merah dan hitam . Kita gabung warna yang sama. Kabel yang berwarna hitam hubungkan ke GND yang menjadi satu sumber untuk menghidupkan MT8870, Lalu kabel yang satunya digunakan sebagai inputan pada kaki 8 IC MT8870.
2. Jika headset sudah dibuat seperti diatas maka dapat diteruskan dengan langkah menghubungkan outputan MT8870 ke Mikro.
3. Pada Mikro ATMega8 kita dapat melakukan pemrograman dengan Software Bascom AVR.
4. Contoh program dengan Bascom AVR

$regfile = "m8def.dat" 'seri mikro
$crystal = 4000000 'crystal yang digunakan
$baud = 9600 'sinkronisasi dengan komputer
Config Portd = Output 'portd pada mikro digunakan sebagai outputan
Config Portc = Input 'portc pada mikro digunakan sebagai input

main:
if portc.0=1 then
portd.0=1
end if
goto main


Jika Mikro sudah terprogram sesuai keinginan kita dan kabel telah dihubungkan dari HP penerima melalui headset yang telah dimodifikasi tadi menju MT8870 dan outputan MT8870 menuju portc pada mikro ATMega8. Dan pastikan sumber yang mengalir pada rangkaian 5V!
Setelah mikro dapat mengeluarkan outputan dapat ditruskan dengan menggunakan driver Relay 220v.


Jadi SILAHKAN MENCOBA!! GBU!!!
Read more ...

Metode DTMF

Rabu, 26 Agustus 2009
Sistem Mikrokontroler
IC (integrated Circuit) atau chip adalah sebuah komponen elektronika yang terbentuk dari susunan beberapa komponen-komponen dasar seperti resistor, kapasitor, induktor, dan transistor. Pada perangkat keras komputer, IC atau chip adalah komponen utama yang membentuk sebuah mikroprosesor. Adalah sangat penting untuk mengetahui perbedaan antara mikroprosesor, mikrokomputer, serta mikrokontroler.
Suatu mikroprosesor adalah bagian CPU (Central Prosesing Unit) dari sebuah komputer, tanpa memori, I/O (masukan-keluaran), dan peripheral yang dibutuhkan oleh suatu sistem lengkap. Untuk dapat bekerja, mikroprosesor membutuhkan perangkat pendukung yang dapat berupa RAM, ROM, dan I/O. Bila sebuah mikroprosesor dikombinasikan dengan I/O dan memori, akan
dihasilkan sebuah mikrokomputer. Pada kenyataannya mengkombinasikan CPU dengan memori dan I/O dapat juga dilakukan dalam level chip, yang menghasilkan single chip mikrokomputer (SCM) untuk membedakannya dengan mikrokomputer. Untuk selanjutnya, SCM dapat disebut mikrokomputer.Jadi dapat disimpulkan mikrokontroler adalah kombinasi antara sebuah
Mikroprosesor dengan I/O dan memori (RAM/ROM) dalam sebuah chip.

DTMF (Dual Tone Multiple Frequency).
Sistem DTMF
DTMF (Dual Tone Multiple Frequency) merupakan suatu gelombang frekuensi yang terdiri dari dua buah frekuensi nada yang berbeda nilainya tetapi dibangkitkan dalam waktu bersamaan sehingga menghasilkan sebuah nada dengan frekuensi tertentu yaitu frekuensi gabungan dari dua buah nada tersebut, nada gabungan ini biasa disebut dengan sebutan nada DTMF. Untuk penggunaan DTMF pada sistem kontrol jarak jauh, maka diperlukan lagi dua buah sistem yaitu sistem pemancar DTMF dan penerimanya.
Adapun nada DTMF juga digunakan pada sistem alat-alat komunikasi misalnya pada handphone, tetapi nada DTMF yang ada pada handphone ini hanya terdapat 12 buah nada DTMF yaitu sesuai dengan jumlah ‘tombol nomor’ standar pada handphone . Nada-nada DTMF pada handphone ini dihasilkan dari variasi 4 buah frekuensi rendah dan 3 buah frekuensi tinggi, 4 buah frekuensi rendah mewakili banyaknya baris pada keypad handphone dan 3 buah frekuensi tinggi mewakili banyaknya kolom pada keypad handphone, variasi dari frekuensi-frekuensi tersebut dapat dilihat pada table Data Pengkonversian Sinyal DTMF


MT8870
MT8870D adalah sebuah IC decoder DTMF yang berfungsi sebagai pengubah sekaligus filter frekuensi sinyal DTMF menjadi data digital, jadi dengan kata lain dapat dikatakan bahwa IC ini merupakan DTMF dengan mikrokontroler. Adapun prinsip kerja dari IC ini adalah dengan cara membaca setiap input yang ada kemudian input tersebut difilter dalam blok penyaring frekuensi rendah dan blok penyaring frekuensi tinggi, hal tersebut dilakukan karena DTMF adalah perpaduan dua frekuensi, yaitu frekuensi rendah dan frekuensi tinggi, maka itu diperlukanlah dua blok penyaring tersebut. Sehingga apabila yang menjadi input adalah DTMF maka otomatis blok penyaring akan bekerja keduanya pada waktu bersamaan. Kemudian output-output dari dua blok penyaring ini akan dimasukkan pada sebuah blok berkomponen dasar gerbang and, dengan maksud agar blok selanjutnya yang berupa blok pembaca frekuensi hanya akan dapat input apabila dua blok penyaring menghasilkan output dalam waktu bersamaan, dengan kata lain hasil dari peng’and’an output-output ini adalah input bagi blok pembaca frekuensi. Pada blok pembaca frekuensi ini, frekuensi-frekuensi yang masuk akan di konversi menjadi data digital.

Rangkaian Decoder DTMF
Rangkaian decoder DTMF adalah rangkaian yang berfungsi untuk mengkonversi sinyal DTMF yang berupa analog menjadi output data yang berbentuk digital, contoh dari rangkaian ini dan sekaligus yang digunakan dalam tugas akhir semester ini adalah rangkaian decoder DTMF yang memakai komponen utama IC MT8870.
Dalam tugas akhir semester ini rangkaian decoder mempunyai fungsi utama sebagai penyaring sinyal yang dikeluarkan dari output speaker handphone penerima, sehingga hanya bagian sinyal DTMF saja yang akan dikelola oleh rangkaian decoder dari semua sinyal suara yang masuk. Adapun data-data pengkonversian dari sinyal DTMF ke data biner tersebut dapat dilihat pada table Data Pengkonversian Sinyal DTMF

Diposkan oleh Tonk KosonG di 01:36
Read more ...

Prinsip Kerja Interface Keyboard IBM PC

Kamis, 20 Agustus 2009
Prinsip Kerja Interface Keyboard IBM PC

Teknik Interface membicarakan cara-cara menghubungkan mikrokontroler dengan peralatan lain, meskipun tidak membahas pembuatan alat sampai jadi, tapi pengetahuan tentang teknik interface ini sangat diperlukan dalam rancang bangun peralatan yang lebih rumit.

Untuk apa menghubungkan mikrokontroler dengan keyboard IBM PC? Keyboard IBM PC merupakan sarana input yang sangat murah, hanya dengan 2 utas kabel sinyal ditambah 2 kabel catu daya sistem berbasis mikrokontroler dengan mudah bisa dilengkapi dengan 101 tombol untuk mengisikan text maupun angka.

Keyboard yang dibahas adalah keyboard untuk IBM PC-AT, tidak termasuk model keyboard lama untuk IBM PC-XT.

Tata kerja keyboard PC

Setiap kali salah satu tombol keyboard ditekan atau dilepas, keyboard akan mengirim kode ke host (host adalah komputer kalau keyboard dihubungkan ke PC, atau berupa mikrokontroler kalau keyboard dihubungkan ke perlatan berbasis mikrokontroler). Kode tersebut dinamakan sebagai scan code.

Scan code tombol ‘S’ adalah 1B (angka heksadesimal setara dengan angka biner 00011011). Ketika tombol ‘S’ ditekan keyboard akan mengirim 1B, jika tombol ‘S’ ditekan terus maka keyboard akan mengirimkan 1B berikutnya terus menerus, sampai ada tombol lain yang ditekan atau tombol ‘S’ tadi dilepas.

Keyboard juga mengirim kode saat ada satu tombol yang dilepas, kodenya adalah F0 (angka heksadesimal setara dengan angka biner 11110000), jadi kalau tombol ‘S’ tadi dilepas keyboard akan mengirim F0 dan 1B.

Kode-kode tersebut dikirim keyboard secara seri, artinya dikirimkan satu bit demi satu bit. Misalnya 1B dikirimkan dengan cara : mula-mula dikirim ‘1’, sesaat kemudian ‘1’ lagi dan menyusul ‘0’ sampai akhirnya terkirim sebanyak 8 bit yang berbentuk 00011011 (dikirim mulai dari bit yang paling kanan kemudian beregeser satu per satu sampai yang paling kiri).

Masing-masing tombol punya scan code sendiri, termasuk tombol ‘shift’, tombol ‘ctrl’ dan lain lain, jadi jika tombol ‘ctrl’ ditekan bersama dengan ‘S’, maka scan code yang dikirim adalah 14 (scan code untuk ‘ctrl’) dan 1B (scan code untul ‘S’). Terserah host untuk mengintepretasi scan code itu sebagai apa, bearti merupakan tugas program dalam mikrokontroler untuk mengenal scan code.

Scan code disusun sebagai kode 8 bit bisa dipakai untuk membedakan 256 macam kode, sedangkan keyboard PC hanya punya 101 tombol, jadi sesungguhnya kode 8 bit tadi cukup untuk semua tombol. Tapi tombol di keyboard PC dikelompokkan menjadi 2 bagian, bagian utama dan bagian tambahan, bagian utama cukup dinyatakan dengan scan code 1 byte saja, sedangkan bagian tambahan diwakili dengan beberapa byte scan code yang selalu diawali dengan E0. Misalnya tombol ‘ctrl’ kiri diwakili dengan 14 sedangkan tombol ‘ctrl’ kanan diwakili dengan E0 14.

Gambar 1 menggambarkan scan code masing-masing tombol keyboard PC. Terlihat pada gambar tersebut, scan code tidak berupa kode ASCII yang biasa dipakai mewakili huruf , dan ditentukan secara acak, juga. Sehingga setelah diterima host, scan code harus dirubah menjadi kode ASCII dengan memakai cara ‘pencarian tabel’.

Keyboard PC dan Scan Code

Komunikasi antar keyboard dan host adalah komunikasi dua arah, keyboard mengirim scan code ke host, host bisa mengirim perintah untuk mengatur kerja dari key board. Kode perintah untuk keyboard tidak sebanyak scan code, berikut ini daftar kode printah untuk keyboard (dalam heksadesimal) selengkapnya :

ED perintah untuk menyala/padamkan lampu indikator di keyboard, setelah menerima perintah ED dari host, keyboard akan menjawab dengan FA sebagai tanda perintah itu telah dikenali (ACK – acknowlwdge) dan menunggu 1 byte perintah lagi dari host untuk menentukan lampu indikator mana yang perlu di-nyala/padam-kan.

1 byte perintah susulan tersebut akan diartikan sebagai berikut : bit 0 dipakai untuk mengatur lampu indikator Scroll Lock, bit 1 untuk Num Lock dan bit 2 untuk Caps Lock, bit-bit lainnya diabaikan.

EE dipakai host untuk memeriksa apakah keyboard masih aktip. Setelah menerima perintah EE dari host, keyboard akan menjawab dengan EE pula, menandakan dirinya masih aktip.

F0 ada keyboard yang dilengkapi 3 set scan code, perintah ini dipakai untuk memilih scan code yang ingin dipakai. Setelah menerima perintah F0 dari host, keyboard akan menjawab dengan FA sebagai tanda perintah itu telah dikenali (ACK – acknowlwdge) dan host menjawab 1 byte lagi (nilainya 1 2 atau 3) untuk memilih set scan code. Jika byte yang dikirimkan nilainya 0, keyboard akan menjawab dengan nomor set scan code yang saat itu dipakai.

F3 dipakai untuk mengatur kecepatan tanggapan keyboard (Typematic Repeat Rate), setelah menerima perintah F3 dari host, keyboard akan menjawab dengan FA sebagai tanda perintah itu telah dikenali (ACK – acknowlwdge) dan host menjawab 1 byte nilai kecepatan tanggapan keyboard yang dikehendaki.

F4 dipakai untuk me-aktip-kan kembali keyboard, setelah menerima perintah ini keyboard akan menjawab dengan FA (ACK – acknowlwdge).

F5 dipakai untuk me-nonaktip-kan keyboard, setelah menerima perintah ini keyboard akan menjawab dengan FA (ACK – acknowlwdge).

FE dipakai meminta keyboard mengirim ulang scan code terakhir yang dikirim.

FF Perintah untuk me-reset keyboard

Selain perintah dari host, keyboard juga mempunyai kode-kode lain selain scan code yang dikirimkan ke host, sebagai berikut :

FA berarti ACK (acknowledge), yaitu jawaban dari keyboard bahwa perintah dari host sudah dikenali dengan baik.

AA berarti keyboard selesai memeriksa diri dan siap bekerja setelah diberi catu daya

EE lihat perintah EE di atas

FE artinya minta host mengulang perintah terakhir yang dikirim

FF / 00 berarti terjadi kesalahan di keyboard

Rangkaian penghubung

Keyboard PC dibangun dengan mikrokontroler MCS48, yang merupakan saudara tua MCS51 tapi jauh lebih sederhana. Untuk keperluan membentuk rangkaian penghubung tidak perlu diketahui bagaimana cara kerja mikrokontroler dalam keyboard, tapi cukup meninjau rangkaian elektronik bagian penghubung pada gambar.

Bagian penghubung di dalam Keyboard PC

Yang menarik, rangkaian sederhana ini bisa dipakai untuk komunikasi data 2 arah, yakni keyboard mengirimkan scan code ke PC, atau PC mengirimkan perintah-perintah ke keyboard, misalkan perintah untuk menyalakan beberapa lampu yang ada di keyboard.

Kbd Clock dibangkitkan oleh MCS48, merupakan sinyal pendorong Kbd Data yang bisa bersumber dari keyboard maupun bersumber dari PC. Level tegangan pada kedua sinyal ini memenuhi standar sinyal TTL biasa, jadi bisa langsung dihubungkan ke AT89C2051.

Sebagai contoh Kbd Clock dihubungkan ke Port 3 bit 2 (kaki 6 AT89C2051) dan Kbd Data dibuhungkan ke Port 3 bit (kaki 7), dalam program hal ini dinyatakan dengan baris 1 dan baris 2 Potongan Program 1. Dengan adanya pernyataan di baris 1 dan 2, selanjutnya dalam program tidak disebutkan lagi P3.2 atau P2.3, tapi ditulis KBDclock atay KBDdata sehingga program lebih enak dibaca. Kalau program ini dipakai di proyek lain yang Port 3 bit 2 dan bit 3-nya dipakai untuk keperluan lain, Kbd Clock dan Kbd Data bisa saja dihubungkan ke port lain, asalkan baris 1 dan 2 disesuaikan dengan perubahan itu.

Potongan Program 1 Pernyataan pemakaian Port

1 KBDclock bit P3.2 ; P3.2 dihubungkan ke KBDclock

2 KBDdata bit P3.3 ; P3.3 dihubungkan ke KBDdata

Sumber daya untuk keyboard dicatu dari luar, harus diperhatikan kebutuhan arusnya cukup besar bisa sampai sekitar 300 mA.

Pengiriman data dari Keyboard

Sinyal pengiriman data dari Keyboard

Saat tidak ada pengiriman data, sinyal Kbd Clock dan Kbd Data dalam keadaan ‘1’. Sinyal pengiriman data dari keyboard dalam gambar 3 dijelaskan sebagai berikut :

1. Data mulai dikirimkan dengan me-nol-kan Kbd Data sebagai tanda mulai pengiriman (start bit), berapa saat kemudian setelah Kbd Data stabil disusul Kbd Clock berubah menjadi ‘0’ dan kembali ke ‘1’ lagi, ini berarti selesai mengirimkan data 1 bit.

2. Setelah mengirim ‘start bit’, dikirimkan bit 0, bit 1 dan seterusnya sampai bit 7.

3. Menyusul dikirim ‘parity bit’, yaitu bit kontrol yang berguna bagi host penerima data untuk memastikan data yang diterima tidak ada kesalahan. Jika banyaknya bit ‘1’ yang terdapat di bit 0 sampai bit 7 ganjil, ‘parity bit’ akan bernilai ‘1’.

4. Sebagai penutup (stop bit) Kbd Data dikembalikan kekeadan normalnya, yaitu ‘1’.

Pengiriman data ke Keyboard

Sinyal pengiriman data ke Keyboard

Saat tidak ada pengiriman data, sinyal Kbd Clock dan Kbd Data dalam keadaan ‘1’. Agar mudah dibedakan, Gambar 4 digambarkan dengan dua warna, warna biru artinya sinyal itu diatur oleh host, dan warna merah artinya sinyal itu dibangkitkan oleh keyboard. Sinyal pengiriman data dari host dalam gambar 4 dijelaskan sebagai berikut :

1. Sebelum mengirim data host ‘minta ijin’ pada keyboard dengan cara me-‘nol’-kan Kbd Clock setidak-tidaknya selama 100 mikro-detik, dan kemudian di-‘satu’-kan kembali (warna biru).

2. Setelah menerima ‘permintaan ijin’ dari host, keyboard membangkitkan 12 pulsa clock di Kbd Clock (warna merah). Keyboard akan mengambil data dari host setiap saat pulsa tersebut berubah dari level ‘1’ menjadi ‘0, jadi data dari host sudah harus siap sebelum hal tersebut terjadi.

3. Data mulai dikirimkan dengan me-nol-kan Kbd Data sebagai tanda mulai pengiriman (start bit), saat Kbd Clock berubah dari ‘1’ menjadi ‘0’ data 1 bit tadi diterima oleh keyboard.

4. Setelah mengirim ‘start bit’, dikirimkan bit 0, bit 1 dan seterusnya sampai bit 7.

5. Menyusul dikirim ‘parity bit’, yaitu bit kontrol yang berguna bagi keyboard untuk memastikan data yang diterima tidak ada kesalahan. Jika banyaknya bit ‘1’ yang terdapat di bit 0 sampai bit 7 ganjil, ‘parity bit’ akan bernilai ‘1’.

6. Sebagai penutup (stop bit) Kbd Data dikembalikan kekeadan normalnya, yaitu ‘1’.

7. Selesai menerima 11 bit data di atas (warna biru : ‘start bit’, 8 bit ditambah dengan ‘parity bit’ dan ‘stop’bit’), pada pulsa yang kedua belas keyboard mengirimkan ACK=’0’ (warna merah) yang menandakan semua bit sudah diterima.

Proses pengiriman data ke Keyboard
Read more ...

Prinsip Kerja Dual Tone Multiple Frequency (Teknik DTMF) Dan Interfacenya dengan AT89C2051

Kamis, 20 Agustus 2009
Prinsip Kerja Dual Tone Multiple Frequency (Teknik DTMF) Dan Interfacenya dengan AT89C2051

Setelah beralih ke teknologi digital, cara meminta nomor sambungan telepon tidak lagi dengan cara memutar piringan angka tapi dengan cara memencet tombol-tombol angka. Cara ini dikenal sebagai Touch Tone Dialing, sering juga disebut sebagai DTMF (Dual Tone Multiple Frequency).

Dual Tone Multiple Frequency (DTMF) adalah teknik mengirimkan angka-angka pembentuk nomor telpon yang di-kode-kan dengan 2 nada yang dipilih dari 8 buah frekuensi yang sudah ditentukan. 8 frekuensi tersebut adalah 697 Hz, 770 Hz, 852 Hz, 941 Hz, 1209 Hz, 1336 Hz, 1477 Hz dan 1633 Hz, seperti terlihat dalam Gambar 1 angka 1 di-kode-kan dengan 697 Hz dan 1209 Hz, angka 9 di-kode-kan dengan 852 Hz dan 1477 Hz. Kombinasi dari 8 frekuensi tersebut bisa dipakai untuk meng-kode-kan 16 tanda, tapi pada pesawat telepon biasanya tombol ‘A’ ‘B’ ‘C’ dan ‘D’ tidak dipakai.


Kombinasi nada DTMF

Teknik DTMF meskipun mempunyai banyak keunggulan dibanding dengan cara memutar piringan angka, tapi secara tehnis lebih sulit diselesaikan. Alat pengirim kode DTMF merupakan 8 rangkaian oscilator yang masing-masing membangkitkan frekuensi ‘aneh’ di atas, ditambah dengan rangkaian pencampur frekuensi untuk mengirimkan 2 nada yang terpilih. Sedangkan penerima kode DTMF lebih rumit lagi, dibentuk dari 8 buah filter yang tidak sederhana dan rangkaian tambahan lainnya.

Beberapa pabrik membuat IC khusus untuk keperluan DTMF, diantaranya yang banyak dijumpai adalah MC145436 buatan Motorola, MT8870, MT8880 dan MT8888 buatan Mitel Semiconductor.

MC145436 dan MT8870 merupakan penerima DTMF, menerima sinyal dari saluran telepon kalau ternyata sinyal yang diterima tadi merupakan kombinasi nada yang sesuai dengan ketentuan DTMF, mengeluarkan kode biner sesuai dengan kombinasi nada tersebut.

MT8880 dan MT8888 merupakan penerima dan pengirim DTMF, selain bisa berfungsi sebagai penerima DTMF, bisa pula dipakai untuk membangkitkan nada DTMF sesuai dengan angka biner yang diterimanya.

Saluran data (data bus) dan sinyal-sinyal kontrol MT8880 dirancang sesuai dengan karakteristik mikrokontroler buatan Motorola (misalnya MC68HC11), sedangkan MT8888 disesuaikan dengan mikrokontroler buatan Intel (termasuk AT80C51). Tapi untuk AT89C2051 yang memang tidak punya saluran data (data bus) perbedaan kedua IC itu tidak ada artinya, mengingat saluran data dan sinyal kontrolnya disimulasikan lewat program.

yang diterimanya.

Gambar 2. IC-IC DTMF buatan Mitel

Penerima DTMF dengan MT8870

Rangkaian penerima DTMF yang dibangun dengan AT89C2051 dan MT8870 terlihat pada Gambar 3. AT89C2051 dilengkapi Xtal Y2 (12 MHz) ditambah kapasitor C3 dan C4 membentuk rangkaian oscilator, dilengkapi pula dengan rangkaian reset yang dibentuk dengan C5 dan R4, kedua rangkaian ini merupakan rangkaian baku AT89C2051.

MT8870 dilengkapi dengan Xtal Y1 (3.579545 MHz), C2 dan R3 dipakai untuk menentukan waktu minimal untuk mengenali nada DTMF yang diterima, rangkaian penguat sinyal DTMF dibentuk dengan R1, C1 dan R2. Nilai-nilai komponen ini langsung diambil dari lembaran data (data sheet) MT8870 yang sudah disesuaikan dengan karakteristik sinyal DTMF pada umumnya.

Gambar 3. Rangkaian penerima DTMF dengan MT8870

StD (Delayed Steering - kaki 15 MT8870) merupakan output yang menandakan MT8870 mempunyai data DTMF baru yang bisa diambil. Saat tidak ada nada DTMF kaki StD=’0’, jika sinyal yang masuk MT8870 mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3, StD akan menjadi ‘1’ memberitahu AT89C2051 bahwa ada data di D0..D3 (kaki 11 sampai dengan 14 MT8870) yang bisa di ambil. Sinyal StD akan tetap bertahan =’1’ manakala nada DTMF masih ada. Dalam Gambar 3 StD dipantau lewat kaki P1.7 AT89C2051.

TOE (Tristate Ouput Enable - kaki 10 MT8870) merupakan input untuk mengatur data di D0..D3, jika TOE=0 rangkaian output D0..D3 akan mengambang (high impedance state) sehingga data tidak bisa diambil. Jika D0..D3 tidak digabungkan dengan jalur data peralatan lainnya, kaki TOE bisa saja dihubungkan ke ‘1’. Dalam Gambar 3 TOE di kendalikan dengan kaki P1.6 AT89C2051.

Program untuk membaca data DTMF melalui rangkaian Gambar 3 terlihat pada Potongan Program 1, bisa diterangkan sebagai berikut :

1. Baris 1 dan 2 menyatakan hubungan kaki P1.6 dan P1.7 sesuai rangkaian Gambar 3.

2. Selama sinyal NEWDATA masih ‘0’ AT89C2051 akan menunggu di baris 5

3. Lolos dari baris 5 (berarti kaki StD MT8870 sudah ‘1’), dibuat RD=’1’ (kaki TOE MT8870) agar D0..D3 MT8870 tidak mengambang dan data MT8870 diambil melalui instruksi baris 7.

4. Baris 8 dipakai untuk membuang bagian Akumulator A yang tidak terpakai dan hanya menyisakan A0..A3 sebagai data yang diterima dari MT8870.

5. Baris 9 kembali me-‘nol’-kan kaki TOE MT8870 agar D0..D3 mengambang kembali.

6. Baris 10 menunggu sampai nada DTMF bersangkut sudah tidak ada lagi.

Potongan Program 1 Membaca data MT8870

01: RD BIT P1.6

02: NEWDATA BIT P1.7

03: ;

04: BacaMT8870:

05: JNB NEWDATA,* ; Selama StD=’0’, tunggu dulu di sini

06: SETB RD ; Aktipkan TOE MT8870

07: MOV A,P1 ; Ambil data dari MT8870

08: ANL A,#$0F ; Yang diperlukan hanya A0..A3 saja

09: CLR RD ; Non-aktipkan TOE kembali

10: JB NEWDATA,* ; Tunggu sampai nada DTMF sirna

11: RET

Penerima/pengirim DTMF dengan MT8880

MT8880 mempunyai 2 register dengan 4 fungsi, untuk membedakan 2 register ini MT8880 dilengkapi dengan jalur alamat (address bus) RS0. Register pertama (RS0=’0’) dinamakan sebagai Register Data, angka DTMF yang diterima MT8880 didapat dengan cara membaca isi register ini (Receive Data Register), sedangkan angka DTMF yang ingin dikirim disimpan di register ini (Transmit Data Register). Register kedua (RS0=’1’) dinamakan sebagai Register Kontrol/Status, tata kerja MT8880 diatur dengan cara mengirim data ke register ini, dan keadaan MT8880 bisa dipantau dengan cara membaca isi register ini

Gambar 4 Register-register MT8880

Diagram waktu proses pengambilan/pengiriman data dari/ke MT8880 terlihat di Gambar 5, diagram waktu tersebut ditafsirkan sebagai berikut :

1. selama proses berlangsung kaki CS (kaki 10) harus =’0’

2. mula-mula ditentukan dulu nilai RS0 (kaki 11) sesuai dengan register yang dipilih

3. kaki R/W (kaki 9) dipakai untuk menentukan arah data, R/W=’1’ menandakan proses pengambilan data dari MT8880 (bagian kiri Gambar 5)

4. R/W=’0’ berarti pengiriman data ke MT8880 (bagian kanan Gambar 5).

5. Perpindahan data antar mikrokontroler dan MT8880 terjadi pada saat sinyal PH2 (kaki 12) berubah dari ‘1’ menjadi ‘0’.

6. Dalam proses pengambilan data, data bisa diambil setelah sinyal PH2 berubah dari ‘1’ ke ‘0’

7. Dalam proses pengiriman data, data sudah dipersiapkan oleh mikrokontroler sebelum sinyal PH2 berubah dari ‘1’ ke ‘0’

Gambar 5 Diagram waktu pengambilan/pengiriman data dari/ke MT8880

Gambar 6 merupakan rangkaian penerima/pengirim DTMF dengan MT8880 yang dikendalikan AT89C2051, rangkaian ini bisa juga dipakai untuk IC DTMF MT8888, rangkaian tetap sama tapi program pengendalinya harus sedikit dirubah.

AT89C2051 dilengkapi Xtal Y2 (12 MHz) ditambah kapasitor C3 dan C4 membentuk rangkaian oscilator, dilengkapi pula rangkaian reset yang dibentuk dengan C5 dan R4.

MT8880 dilengkapi Xtal Y1 (3.579545 MHz), C2 dan R3 dipakai untuk menentukan waktu minimal untuk mengenali nada DTMF yang diterima, rangkaian penguat sinyal DTMF dibentuk dengan R1, C1 dan R2. Nada DTMF dikeluarkan dari kaki TONE (kaki 8), C4, R6 dan C6 yang terhubung ke kaki ini membentuk rangkaian filter sederhana.

Nilai-nilai komponen ini langsung diambil dari lembaran data (data sheet) MT8880 yang sudah disesuaikan dengan karakteristik sinyal DTMF pada umumnya.

Jika dikehendaki, IRQ (Interrupt Request to MPU - kaki 13 MT8880) bisa dipakai sebagai output yang menandakan MT8880 mempunyai data DTMF baru yang bisa diambil. Dalam keadaan tidak ada nada DTMF kaki IRQ=’1’, jika sinyal yang masuk MT8870 mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3, IRQ akan menjadi ‘0’ memberitahu mikrokontroler bahwa ada data di D0..D3 (kaki 14 sampai dengan 17 MT8870) yang bisa di ambil. Sinyal IRQ akan tetap bertahan =’0’ manakala nada DTMF masih ada. Sinyal IRQ ini biasa dipakai sebagai sinyal ‘interupsi’ bagi mikrokontroler.

Adanya data DTMF baru bisa pula dipantau dari Register Status. Setiap kali ada data baru bit 2 dari Register Status menjadi ‘1’, dan bit 2 akan kembali menjadi ‘0’ pada saat mikrokontroler membaca isi Register Status.

Dalam Gambar 6 kaki IRQ MT8880 tidak dipakai, dengan demikian adanya data DTMF baru akan dipantau dari bit 2 Register Status.

Kaki IRQ MT8880 bisa dipakai dengan cara menghubungkannya ke kaki INT0/P3.2 (kaki 6 AT89C2051, bisa juga dihubungkan ke kaki 7 – INT1/P3.3) yang digambarkan dengan garis putus dalam Gambar 6. Dengan cara ini adanya data DTMF baru dipantau oleh rangkaian interupsi di dalam IC AT89C2051, begitu ada data DTMF baru dari MT8880 AT89C2051 akan menjalankan program layanan interupsi yang harus diletakkan di memori program nomor 3.

Gambar 6. Rangkaian penerima/pengirim DTMF dengan MT8880

Program untuk mengendalikan MT8880 melalui rangkaian Gambar 6 terlihat pada Potongan Program 2.

1. Baris 1 sampai 3 dipakai untuk menyatakan hubungan kaki P1.4, P1.5 dan P1.6 sesuai dengan rangkaian Gambar 6.

2. Sesuai dengan fungsi-fungsi register di dalam IC MT8880, program pengendali MT8880 ini terdiri atas 4 buah sub-rutin yang masing-masing dinamakan sebagai KirimDTMF, AmbilDTMF, KirimKontrol dan LihatStatus, kegunaan masing-masing sub-rutin sesuai dengan nama yang diberikan.

3. KirimDTMF dan AmbilDTMF bekerja dengan RS0=’0’ (baris 6 dan 23) sedangkan KirimKontrol dan LihatStatus bekerja dengan RS0=’1’ (baris 9 dan 27).

4. KirimDTMF dan KirimKontrol bekerja dengan R/W=’0’ (baris 11) sedangkan AmbilDTMF dan LihatStatus bekerja dengan R/W=’1’ (baris 29).

5. Pada semua subrutin, PH2 mula-mula dibuat =’1’ (baris 12 dan 30), dalam sub-rutin pengiriman data setelah data yang akan dikirim ke MT8880 siap, PH2 di-‘nol’-kan di baris 17. Dalam sub-rutin pengambilan data setelah data di ambil, PH2 di-‘nol’-kan di baris 34.

6. Di bagian awal sub-rutin AmbilDTMF, sebelum mengambil data DTMF terlebih dulu menunggu bit 2 dari Register Status bernilai ‘1’ yang menandakan data di Register Data adalah data yang benar (baris 20 dan 21), selama MT8880 belum menerima data DTMF baru, AT89C2051 akan menunggu terus di kedua baris tersebut.

Potongan Program 2 Mengambil/mengirim data MT8880

01: PH2 BIT P1.4

02: RS0 BIT P1.5

03: RW BIT P1.6

04: ;

05: KirimDTMF:

06: CLR RS0 ; Register Data dipilih dengan RS=0

07: SJMP KirimKe8880

08: KirimKontrol:

09: SETB RS0 ; Register Kontrol dipilih dengan RS=1

10: KirimKe8880:

11: CLR RW ; Data dari AT89C2051 ke MT8880

12: SETB PH2 ; PH2 dibuat menjadi '1'

13: ANL P1,#$F0 ; Kirim A0..A3 tanpa mengganggu A4..A7

14: ORL P1,A

15: NOP ; Tunggu sebentar

16: CLR PH2 ; PH2 dari '1' menjadi '0', data diambil MT8870

17: RET

18: ;

19: AmbilDTMF:

20: ACALL LihatStatus ; Ada data DTMF baru di MT8880?

21: JNB A.2,AmbilDTMF ; Tidak ada, tunggu dulu

22: BacaDTMF:

23: CLR RS0 ; Register Data dipilih dengan RS=0

24: SJMP AmbilDari8880

25: ;

26: LihatStatus:

27: SETB RS0 ; Register Status dipilih dengan RS=1

28: AmbilDari8880:

29: SETB RW ; Data dari MT8880 ke AT89C2051

30: SETB PH2 ; PH2 dibuat menjadi '1'

31: NOP ; Tunggu sebentar

32: MOV A,P1 ; Ambil data dari MT8880

33: ANL A,#$0F ; hanya A0..A3 saja yang diperlukan

34: CLR PH2 ; kembalikan PH2 kekeadaan semula (='0')

35: RET

Penerima/pengirim DTMF dengan MT8888

Diagram waktu proses pengambilan/pengiriman data dari/ke MT8888 terlihat di Gambar 7, diagram waktu tersebut ditafsirkan sebagai berikut :

1. selama proses berlangsung kaki CS (kaki 10) harus =’0’

2. mula-mula ditentukan dulu nilai RS0 (kaki 11) sesuai dengan register yang dipilih

3. kaki RD (kaki 12) dipakai untuk mengambil data dari MT8888, dalam keadaan normal RD=’1’, selama proses pengambilan data RD menjadi ‘0’ dan data diambil dari MT8888 setelah RD berubah dari ‘0’ menjadi ‘1’ (bagian kiri Gambar 7)

4. kaki WR (kaki 9) dipakai untuk mengirim data ke MT8888, dalam keadaan normal WR=’1’, selama proses pengiriman data WR menjadi ‘0’ dan data akan diterima oleh MT8888 pada saat WR berubah dari ‘0’ menjadi ‘1’ (bagian kanan Gambar 7)

Sinyal RD dan WR inilah yang membedakan MT8880 dan MT8888 (dalam MT8880 kedua sinyal sinyal itu diganti dengan PH2 dan R/W), perbedaan ini tidak mengakibatkan perbedaan rangkaian, tapi mengakibatkan perubahan program pengendali.

Program untuk mengendalikan MT8888 melalui rangkaian Gambar 6 terlihat pada Potongan Program 3.

1.Program pengendali MT8888 ini serupa dengan program pengendali MT8880, perbedaannya terletak pada sub-rutin AmbilDari8888 dan KirimDTMF.

2.Baris 1 sampai 3 dipakai untuk menyatakan hubungan kaki P1.4, P1.5 dan P1.6 sesuai dengan rangkaian Gambar 6.

3.Sesuai dengan fungsi-fungsi register di dalam IC MT8880, program pengendali MT8880 ini terdiri atas 4 buah sub-rutin yang masing-masing dinamakan sebagai KirimDTMF, AmbilDTMF, KirimKontrol dan LihatStatus, kegunaan masing-masing sub-rutin sesuai dengan nama yang diberikan.

4.KirimDTMF dan AmbilDTMF bekerja dengan RS0=’0’ (baris 5 dan 22) sedangkan KirimKontrol dan LihatStatus bekerja dengan RS0=’1’ (baris 9 dan 26).

5.KirimDTMF dan KirimKontrol bekerja dengan WR=’0’ (baris 11), setelah data siap (baris 12 dan 13) WR di-‘satu’-kan di baris 15 agar data tersebut diambil oleh MT8888.

6.AmbilDTMF dan LihatStatus bekerja dengan RD=’0’ (baris 28), setelah data MT8888 diambil (baris 30 dan 31) RD di-‘satu’-kan di baris 32.

7.Di bagian awal sub-rutin AmbilDTMF, sebelum mengambil data DTMF terlebih dulu menunggu bit 2 dari Register Status bernilai ‘1’ yang menandakan data di Register Data adalah data yang benar (baris 20 dan 21), selama MT8888 belum menerima data DTMF baru, AT89C2051 akan menunggu terus di kedua baris tersebut.

Potongan Program 3 Mengambil/mengirim data MT8888

01: RD BIT P1.4

02: RS0 BIT P1.5

03: WR BIT P1.6

04: KirimDTMF:

05: CLR RS0 ; Register Data dipilih dengan RS=0

06: SJMP KirimKe8880

07: ;

08: KirimKontrol:

09: SETB RS0 ; Register Kontrol dipilih dengan RS=1

10: KirimKe8888:

11: CLR WR ; Data dari AT89C2051 ke MT8880

12: ANL P1,#$F0 ; Kirim A0..A3 tanpa mengganggu A4..A7

13: ORL P1,A

14: NOP ; Tunggu sebentar

15: SETB WR ; WR dari '1' menjadi '0', data diambil MT8870

16: RET

17: ;

18: AmbilDTMF:

19: ACALL LihatStatus ; Ada data DTMF baru di MT8880?

20: JNB A.2,AmbilDTMF ; Tidak ada, tunggu dulu

21: BacaDTMF:

22: CLR RS0 ; Register Data dipilih dengan RS=0

23: SJMP AmbilDari8880

24: ;

25: LihatStatus:

26: SETB RS0 ; Register Status dipilih dengan RS=1

27: AmbilDari8888:

28: CLR RD ; Data dari MT8880 ke AT89C2051

29: NOP ; Tunggu sebentar

30: MOV A,P1 ; Ambil data dari MT8880

31: ANL A,#$0F ; hanya A0..A3 saja yang diperlukan

32: SETB RD ; kembalikan RD kekeadaan semula (='0')

33: RET

Lebih jauh tentang MT8880 dan MT8888

Register Kontrol

Kapasitas Register MT8880/MT8888 hanya 4 bit, namun ada 7 hal yang diatur melalui Register Kontrol, dengan demikian Register Kontrol dibagi menjadi dua bagian, seperti terlihat dalam Gambar 8. Saat pertama kali menyimpan data ke Register Kontrol selalu diterima oleh Bagian I Register Kontrol, jika RSEL (bit 3) = ‘1’ maka pengiriman data berikutnya akan diterima oleh Bagian II Register Kontrol.

Kegunaan dari masing-masing bit dalam Register Kontrol dibahas di bawah.


Gambar 8. Susunan bit dalam Register Kontrol

Register Status

Register Status dipakai untuk memantau keadaan dari MT8880/MT8888, kegunaan dari masing-masing bit dalam Register Kontrol dibahas di bawah.

Gambar 9. Susunan bit dalam Register Status

Pembangkit nada DTMF

MT8880/MT8888 membangkitkan nada DTMF sesuai dengan data yang diisikan ke Transmit Data Register. Selama TOUT (bit 0 di Register Kontrol bagian I) bernilai ‘1’ nada DTMF yang dibangkitkan MT8880/MT8888 disalurkan lewat kaki TONE (kaki 8).

Ada 2 cara untuk mengirimkan nada DTMF,

1.Nada DTMF dibangkitkan dan dihentikan secara manual dengan cara berikut:

2.Mula-mula TOUT bernilai ‘0’

3.Transmit Data Register diisi angka yang akan dikirimkan

4.TOUT dirubah menjadi ‘1’, menunggu beberapa saat sesuai dengan periode nada yang dikehendaki

5.TOUT kembali di-‘nol’-kan selama periode tanpa nada yang dikehendaki

6.Nada DTMF dibangkitkan secara mode burst seperti terlihat di Gambar 10. Pemakaian mode burst ini diatur sebagai berikut :

7.BURST (bit 0 di Register Kontrol bagian II) dijadikan ‘1’

8.Setelah nada DTMF burst dikirim, TDRE (bit 2 di Register Status) menjadi ‘1’. Jadi sebelum mengirim nada DTMF harus menunggu sampai nilai TDRE menjadi ‘1’.

9.TDRE kembali menjadi ‘0’ dengan sendirinya setelah isi Register Status dibaca.

Gambar 10. Nada DTMF dalam mode burst

Meskipun tidak dipakai dalam pemakaian yang sesungguhnya, nada pada kaki TONE bisa dipilih berupa nada tunggal atau nada gabungan, hal ini diatur lewat Register Kontrol sebagai berikut :

1. Dalam pemakaian normal S/D (bit 2 di Register Kontrol bagian II) bernilai ‘0’, nada yang dibangkitkan adalah gabungan dari 2 frekuensi standard DTMF. Kalau S/D bernilai ‘1’ maka nada yang dibangkitkan terdiri dari 1 frekuensi standard DTMF saja.

2. Kalau S/D bernilai ‘1’, C/R (bit 3 di Register Kontrol bagian II) dipakai untuk menentukan kelompok frekuensi mana yang disalurkan ke kaki TONE. C/R=’0’ maka salah satu dari frekuensi 697 Hz, 770 Hz, 852 Hz, 941 Hz yang disalurkan, sedangkan kalau C/R=’1’ maka salah satu dari frekuensi 1209 Hz, 1336 Hz, 1477 Hz. 1633 Hz yang disalurkan

Penerima nada DTMF

Rangkaian penerima nada DTMF dalam IC MT8880/MT8888 selalu memantau sinyal yang masuk, jika sinyal tersebut mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3 (lihat Gambar 6), maka RDRF (bit 2 di Register Status) akan menjadi ‘1’.

Keadaan di RDRF bisa diteruskan ke kaki IRQ/CP (kaki 15) sebagai sinyal permintaan interupsi ke mikrokontroler, hal ini dilakukan dengan cara men-‘satu’-kan IRQ (bit 2 di Register Kontrol bagian I). Dalam keadaan ini kaki IRQ/CP=’0’ kalau RDRF bernilai ‘1’ dan IRQ/CP=’1’ kalau RDRF bernilai ‘0’. RDRF kembali menjadi ‘0’ dengan sendirinya setelah isi Register Status dibaca.

Selain dipakai untuk memantau nada DTMF, MT8880/MT8888 bisa dipakai untuk memantau nada panggil dan nada sibuk dari saluran telepon, hal ini diatur lewat CP/DTMF (bit 1 di Register Kontrol bagian I) sebagai berikut :

1.CP/DTMF=’0’ MT8880/MT8888 menjadi pemantau nada DTMF, kaki IRQ/CP (kaki 15) dipakai membangkitkan sinyal interupsi ke mikrokontroler.

2.CP/DTMF=’1’ kaki IRQ/CP (kaki 15) akan menyalurkan gelombang kotak yang diterima dari nada panggil dan nada sibuk.

Menentukan keadaan awal

Sebelum dipakai, dalam waktu 100 mili-detik setelah dihidupkan, keadan awal dari MT8880/MT8888 harus diatur dulu dengan menjalankan Potongan Program 4, yang disusun menurut petunjuk dari lembaran data MT8880/MT8888, dalam lembaran data tersebut tidak ada penjelasan mengapa harus dipersiapkan dengan cara tersebut, tapi maksud dari Potongan Program tersebut adalah me-‘nol’-kan isi semua register, termasuk Register Kontrol Bagian I dan Bagian II serta Register Status.

Setelah menjalankan Potongan Program 4, keadaan MT8880/MT8888 menjadi :

1.Kaki TONE (kaki 8) tidak menyalurkan nada

2.Bekerja sebagai pemantau DTMF, bukan memantau nada panggil/nada sibuk

3.Kaki IRQ (kaki 15) tidak membangkitkan sinyal permintaan interupsi

4.Data berikutnya yang dikirim ke Register Kontrol akan diterima oleh Bagian I, bukan oleh Bagian II

5.Bekerja dalam mode manual, bukan mode burst

6.Berkerja secara biasa bukan dalam keadaan TEST

7.Membangkitkan nada DTMF biasa, yakni nada yang dibentuk dari campuran 2 frekuensi standar DTMF

Potongan Program 4 Menentukan keadaan awal MT8880/MT8888

01: ACALL LihatStatus

02: CLR A

03: ACALL KirimKontrol ; Register Kontrol I = 0000

04: CLR A

05: ACALL KirimKontrol ; Register Kontrol I = 0000

06: MOV A,#%1000

07: ACALL KirimKontrol ; Pilih Register Kontrol II

08: CLR A

09: ACALL KirimKontrol ; Register Kontrol II = 0000

10: ACALL LihatStatus ; Register Status = 0000

Sub-rutin pengirim nada DTMF

Mode burst adalah mode yang dipakai dalam peralatan telepon tertentu, dalam pemakaian umum yang dipakai adalah mode manual, sub-rutin yang dianjurkan untuk pengiriman nada DTMF secara manual diperlihatkan dalam Potongan Program 5 yang bisa dijelaskan sebagai berikut :

1. Nomor yang akan dikirimkan sebagai nada DTMF sebelumnya sudah disimpan di akumulator A, dan nada ini dibangkitkan di baris 1. Sesuai dengan keadaan awal yang diatur dengan Potongan Program 4 saat ini Kaki TONE (kaki 8) tidak menyalurkan nada.

2. Nada disalurkan ke kaki TONE (kaki 8) di baris 3 dan 4.

3. Kaki TONE akan menyalurkan nada selama WaktuTunda (baris 5), besarnya waktu tunda tergantung pada keperluan, bisa sekitar setengah detik.

4. Nada di kaki TONE harus dimatikan secara manual (baris 6 dan 7)

5. Sebelum meninggalan sub-rutin sekali lagi memanggil sub-rutin WaktuTunda, dengan maksud agar terjadi jeda waktu tanpa nada yang cukup (baris 8)

Potongan Program 5 Pengiriman nada DTMF secara manual

01: KirimNadaDTMF:

02: ACALL KirimDTMF ; Bangkitkan nada DTMF sesuai isi Akumulator A

03: MOV A,#01 ; kalau bekerja dengan mode IRQ : MOV A,#%0101

04: ACALL KirimKontrol ; Saluran nada tersebut ke kaki TONE

05: ACALL WaktuTunda ; tunggu selama periode yang dikehendaki

06: MOV A,#00 ; kalau bekerja dengan mode IRQ : MOV A,#%0100

07: ACALL KirimKontrol ; hentikan nada di kaki TONE

08: ACALL WaktuTunda ; tunggu selama periode yang dikehendaki

09: RET

Menerima data DTMF dengan mekanisme interupsi

Dalam Potongan Program 2 dan Potongan Program 3, saat mengerjakan sub-rutin AmbilDTMF (baris 19 Potongan Program 2 atau baris 18 Potongan Program 3), AT89C2051 menunggu RDRF (bit 2 Register Status) menjadi ‘1’, selama tidak ada nada DTMF AT89C2051 akan berputar terus di sini, dalam rancangan sistem tertentu keadaan ini bisa tidak menjadi masalah, tapi dalam rancangan yang lain hal ini tidak boleh terjadi. Dalam keadan kedua, penerimaan data DTMF tidak bisa dilakukan dengan sub-rutin AmbilDTMF, tapi dilakukan dengan mekanisme interupsi.

Mekanisme interupsi ini diatur dengan cara berikut :

1. Kaki IRQ MT8880 dihubungkan ke kaki INT0/P3.2 (digambarkan dengan garis putus dalam Gambar 6).

2. Mengaktipkan mekanisme interupsi lewat kaki INT0/P3.2 dengan instruksi SETB EX0 dan instruksi SETB EA, kedua instruksi ini dijalankan pada awal program setelah AT89C2051 di-reset.

3. Dengan dua persiapan di atas, data DTMF baru di MT8880/MT8888 dipantau oleh rangkaian interupsi di dalam IC AT89C2051, begitu ada data DTMF baru AT89C2051 akan menjalankan program layanan interupsi yang harus diletakkan di memori program nomor 3 (baris 1 Potongan Program 6).

4. AT89C2051 hanya menyediakan 8 byte memori program untuk melayani interupsi INT0 (memori program nomor 3 sampai 10), karena program untuk membaca data DTMF ini tidak mungkin diselesaikan hanya dengan 8 byte, maka rutin layanan interupsi INT0 dialihkan ke MelayaniINT0 (baris 2 Potongan Program 6).

5. Rutin layanan interupsi INT0 yang sesungguhnya terlihat pada Potongan Program 7. Rutin ini bisa diletakkan dimana saja, sehingga dalam Potongan Program 7 tidak diperlukan instruksi ORG. Sebagai rutin layanan interupsi, Potongan Program 7 diakhiri dengan instruksi RETI (baris 12).

6. Hasil pembacaan data DTMF disimpan di memori data yang dinamakan sebagai PenampungDTMF (baris 9), pemakaian memori data ini dipersiapkan di baris 2.

7. Proses pembacaan data DTMF yang sesungguhnya, menggunakan sub-rutin BacaDTMF yang merupakan bagian dari Potongan Program 2 (baris 22) dan Potongan Program 3 (baris 21), dalam sub-rutin BacaDTMF nilai Akumulator A maupun Register Status PSW akan berubah, dengan demikian A dan PSW disimpan dulu ke stack (baris 5 dan 6) dan diambil kembali dari stack (baris 10 dan 11).

Potongan Program 6 Menghubungkan Interupsi INT0 ke Rutin Layanan INT0

01: ORG 3 ; harus diletakan di memori program no 3!

02: LJMP MelayaniINT0 ; rutin layanan INT0 ada di MelayaniINT0

Potongan Program 7 Rutin Layanan INT0

01: .data

02: PenampungDTMF DS 1

03: .code

04: MelayaniINT0:

05: PUSH PSW ; Simpan dulu PSW dan A ke Stack

06: PUSH A

07: LCALL LihatStatus ; me-‘nol’-kan isi Register Status

08: LCALL BacaDTMF ; Ambil data DTMF tanpa lihat Reg Status

09: MOV PenampungDTMF,A ; simpan data DTMF ke PenampungDTMF

10: POP A ; Ambil kembali A dan PSW dari Stack

11: POP PSW

12: RETI

Read more ...

Daftar Pin Interface Beberapa Tipe Handphone

Kamis, 20 Agustus 2009
Daftar Pin Interface Beberapa Tipe Handphone
Untuk melakukan interface dengan handpohone (baik menggunakan komputer, mikrokontroller, ataupun sistem lain) anda harus tau terlebih dahulu fungsi - fungsi pin pada handphone. Berikut adalah daftar interface berbagai tipe handphone yang bisa anda lihat.



Read more ...

Bagaimana cara menginterfacekan Microcontroller ke Handphone Nokia 3310

Kamis, 20 Agustus 2009
Bagaimana cara menginterfacekan Microcontroller ke Handphone Nokia 3310 anda Beberapa handphone Nokia memiliki sistem koneksi yang dinamakan F-Bus dan M-bus yang dapat digunakan untuk menghubungkan handphone dengan komputer atau mungkin mikrokontroller. Sistem koneksi tersebut dapat digunakan untuk mengatur semua fungsi pada handphone, termasuk untuk mengirim dan menerima SMS.

Pada gambar diatas adalah beberpa tipe handphone populer keluaran Nokia dengan tipe Nokia 3310 / 3315 yang memiliki F/M Bus yang terletak dibawah tempay battery. Pada gambar disebelah kiri memperlihatkan 4 pad yang digunakan untuk koneksi F dan M Bus. Sedangkan gambar yang disebelah kanan adalah memperlihatkan kabel F-Bus yang terhubung dengan Nokia 3310.

Pada gambar diatas adalah beberpa tipe handphone populer keluaran Nokia dengan tipe Nokia 3310 / 3315 yang memiliki F/M Bus yang terletak dibawah tempay battery. Pada gambar disebelah kiri memperlihatkan 4 pad yang digunakan untuk koneksi F dan M Bus. Sedangkan gambar yang disebelah kanan adalah memperlihatkan kabel F-Bus yang terhubung dengan Nokia 3310.

Kabel data seperti yang terlihat pada gambar diatas sebelah kanan dapat anda dapatkan di beberpa toko handphone dan toko elektronik. Akan tetapi harga yang harus anda keluarkan untuk membelinya sangat mahal sekali. Dengan kabel tersebut anda dapat mengpload ring tone, picture dari komputer ke handphone anda. Pada kabel tersebut terdapat rangkian elektronik yang mengubah level signal 3V ke level signal RS232.

Download Artikel Lengkap dalam PDF

atau anda bisa klik link berikut untuk informasi lebih lengkap

Read more ...

Parallel Port Computer & Pemrogramannya Dengan VB6.0

Kamis, 20 Agustus 2009
Parallel Port Computer & Pemrogramannya Dengan VB6.0

Pendahuluan

Port Parallel banyak digunakan dalam berbagai macam aplikasi Interface. Port ini membolehkan kita memiliki masukan hingga 8 bit atau keluaran hingga 12 bit pada saat yang bersamaan dengan hanya membutuhkan sedikit rangkaian eksternal sederhana untuk melakukan suatu tugas tertentu.

Port Parallel ini terdiri dari :

a. 4 Jalur Kontrol.

b. 5 Jalur Status.

c. 8 Jalur Data.

Port parallel terbaru yang distandarisasi dengan IEEE.1284 yang dikeluarkan pada tahun 1984, mendifinisikan 5 macam mode operasi sebagai berikut :

1. Mode Kompatibilitas

2. Mode Nibble

3. Mode Byte

4. Mode EPP

5. Mode ECP

Tujuan Standarisasi ini adalah untuk mendesain driver dan perlatan yang baru sehingga kompatibel dengan peralatan lainnya dan standard parallel port sebelumnya (SPP) yang diluncurkan pada tahun 1981.

Mode Kompatibilitas, Nibble, dan Byte digunakan sebagai standard perangkat keras yang tersedia di port parallel original. Sedangkan untuk EPP dan ECP membutuhkan tambahan hardware sehingga mampu bekerja dengan kecepatan tinggi.

Mode Kompatibilitas atau sering disebut “Centronics” hanya dapat mengirimkan data pada arah maju (dari Host ke device external) dengan kecepatan 50 Kbyte sampai 150 Kbyte perdetik. Untuk menerima data harus diubah modenya menjadi mode Nibble atau Byte. Mode Nibble dapat menerima data 4 bit (Nibble) sedangkan mode Byte dapat menerima data 8 bit (1 byte).

Penjelasan Umum Port Parallel

Port ECP dan EPP menggunakan tambahan hardware untuk menghasilkan dan mengatur handshaking (Sinyal – Sinyal tanda acknowledge).

Untuk mengeluarkan sebuah byte ke port parallel dengan menggunakan Mode Kompatibel, maka software harus mempunyai urutan kerja sebagai berikut:

  1. Tuliskan data byte ke jalur Port Data
  2. Periksa apakah printer sedang sibuk?, jika printer sibuk maka printer tidak akan menerima data, yang akan mengakibatkan data hilang.
  3. Menjadikan sinyal Strobe (pin 1) menjadi Low (=0), hal ini berguna untuk memberitahu ke printer bahwa ada data yang siap dikirimkan pada jalur Port Data (pin 2 s/d pin 9)
  4. Jadikan kembali sinyal Strobe High (=1) setelah menunggu kira – kira 5 microsecond dari keadaan pada langkah 3.

Protokol EPP mempunyai empat macam siklus transfer data yang berbeda, yaitu :

  1. Siklus baca data (Data Read)
  2. Siklus baca alamat (Address Read)
  3. Siklus tulis data (Data Write)
  4. Siklus tulis alamat (Address Write)

Siklus data digunakan untuk mentransfer data antara host dan periperal. Siklus alamat digunakan untuk mengirimkan alamat saluran (channel) atau informasi perintah dan kontrol.

Sesuai dengan standard IEEE 1284 ada tiga jenis parallel port yang bisa digunakan :

  1. 1284 Tipe A adalah konektor DB-25 yang banyak dijumpai pada komputer-komputer saat ini
  2. 1284 Tipe B adalah konektor Centronics 34 Pin yang banyak dijumpai pada printer
  3. 1284 Tipe C adalah konektor 36 Pin yang mirip dengan Centronics namun lebih kecil. Konektor ini diklaim memiliki pengunci (Latch) jenis klip (Clip), sifat elektrik yang lebih baik dan mudah dirakit. Juga mengandung pin tambahan yang dapat digunakan untuk mendeteksi apakah piranti yang terpasang memiliki daya atau tidak.

Dadftar pin DB-25 dan Centronics (PS = Printer Status, PC = Printer Control)

Pin 1. = Strobe’ (Register PC0’)

Pin 2. = Data 0 (Register Data)

Pin 3. = Data 1 (Register Data)

Pin 4. = Data 2 (Register Data)

Pin 5. = Data 3 (Register Data)

Pin 6. = Data 4 (Register Data)

Pin 7. = Data 5 (Register Data)

Pin 8. = Data 6 (Register Data)

Pin 9. = Data 7 (Register Data)

Pin 10. = ACK (Register PS6)

Pin 11. = Busy’ (Register PS7’)

Pin 12. = Paper Out / Paper End (Register PS5)

Pin 13. = Select (Register PS4)

Pin 14. = Autofeed’ (Register PC1’)

Pin 15. = Error (Register PS3)

Pin 16. = Initialize (Register PC2)

Pin 17. = Select in’ (Register PC3)

Pin 18-25. = Ground

Keluaran dari port parallel adalah keluaran TTL, sedangkan arus Sink / Source bervariasi antara port parallel satu dengan yang lainnya. Berdasarkan data sheet kemampuan arus Sink / Source bermacam – macam

  • Sink / Source 6mA
  • Source 12mA Sink 20mA
  • Sink 16mA Source 4mA
  • Sink / Source 12mA

Dengan keterbatasan arus port parallel maka diperlukan rangkaian buffer (penyangga) sehingga tidak membebani arus dari port parallel untuk menyuplai rangkaian luar.

Alamat – Alamat Port Parallel

  • Alamat (dalam format Hexa) 3BC-3BF = Digunakan untuk Port Parallel yang terpadu dengan kartu – kartu Video, tidak mendukung – mendukung alamat alamt ECP
  • Alamat (dalam format Hexa) 378-37F = Biasa digunakan untuk LPT1
  • Alamat (dalam format Hexa) 278-27F = Biasa digunakan untuk LPT2

Alamat dasar 3BCh pertama kali diperkenalkan sebagai alamat port parallel pada card – card video lama.LPT1 biasanya memiliki alamat dasar 378, sedangkan alamat LPT2 adalah 278. ini adalah alamat umum yang biasa dijumpai, namun alamat dasar ini bisa berlainan antara satu komputer dengan komputer lainnya.

Setelah diketahui alamat dari port parallel, maka dapat ditentukan alamat DP (Data Printer), PC (Printer Control) dan PS (Printer Status). Alamat DP adalah base address dari port parallel tersebut, alamat PS adalah (base address + 1), sedangkan alamat PC adalah (base address +2).

List dibawah adalah tabel alamat untuk DP, PC dan PS dengan LPT mempunyai base address 378h

  1. LPT1 DP = Alamat Register 378h / 888
  2. LPT1 PS = Alamat Register 379h / 889
  3. LPT1 PC = Alamat Register 37Ah / 890

Register - register Port Parallel

Register Data Port Parallel ( 378h )

  • Bit 7 (Data 7)
  • Bit 6 (Data 6)
  • Bit 5 (Data 5)
  • Bit 4 (Data 4)
  • Bit 3 (Data 3)
  • Bit 2 (Data 2)
  • Bit 1 (Data 1)
  • Bit 0 (Data 0)

Register Status Port Parallel ( 378h )

  • Bit 7 (Busy’)
  • Bit 6 (Ack)
  • Bit 5 (Paper Out)
  • Bit 4 (Select)
  • Bit 3 (Error)
  • Bit 2 (IRQ’)
  • Bit 1 (Not Used)
  • Bit 0 (Not Used)

Register Kontrol Port Parallel ( 378h )

  • Bit 7 (Not Used)
  • Bit 6 (Not Used)
  • Bit 5 (Aktivasi Port Dwi Arah)
  • Bit 4 (Aktivasi IRQ melalui jalur Ack)
  • Bit 3 (Select In’)
  • Bit 2 (Reset / Inisialisasi)
  • Bit 1 (Autofeed’)
  • Bit 0 (Strobe’)

Mode – Mode Port Parallel Dalam Bios

Saat ini kebanyakan port parallel merupakan port – port dengan beragam mode dan normalnya dapat dikonfigurasi melalui perangkat lunak. Mode – modenya meliputi :

a. Mode Printer (Default / Normal Mode)

Mode Printer merupakan mode yang paling dasar dan merupakan port parallel standard satu arah. Tidak ada fitur dwi – arah sehingga bit-5 pada port kontrol tidak digunakan

b. Mode Standard & Bi-directional (SPP)

Mode ini merupakan mode dwi-arah. Menggunakan mode ini berarti bit-5 difungsikan untuk membalikkan arah port sehingga dapat membaca kembali nilai yang diberikan pada jalur port data parallel

c. Mode EPP1.7 and SPP

Mode ini merupakan suatu kombinasi dari mode EPP1.7 (Enhanched Parallel Port) dan SPP. Pada mode ini diperbolehkan untuk mengakses register – register SPP (data, status, kontrol) serta register – register EPP. Pada mode ini juga diperbolehkan untuk membalikkan arah port menggunakan bit-5 dari register kontrol. EPP1.7 merupakan versi awal dari EPP yang belum dilengkapi dengan bit untuk time out

d. Mode EPP1.9 and SPP

Seperti mode sebelumnya, hanya saja EPPnya menggunakan versi 1.9 yang sudah dilengkapi dengan bit time-out

e. Mode ECP

Mode ini mempunyai kemampuan tambahan (Extended Capabilities Port). Mode ini dapat diset melalui register kontrol tambahan (Extended Control Register) dari ECP. Hanya saja pada mode ini tidak tersedia mode EPP.

f. Mode ECP and EPP1.7

g. Mode ECP and EPP1.9

Pada kedua mode diatas, tetap menggunakan ECP yang dikombinasi dengan EPP, akan tetapi mode EPP yang digunakan bisa ditentukan lewat ECR (Extended Control Register)nya apakah menggunakan Versi 1.7 atau Versi 1.9

Pengaksesan Port Parallel Dengan VB

Sebelum melangkah lebih jauh, kita harus melihat dulu beberapa keterbatasan dalam VB. Karena VB tidak bisa mengakses hardware secara langsung dalam system operasi windows, maka semua permintaan pengaksesan hardware harus melalui windows.Oleh karena itu harus menggunakan program eksternal untuk melakukan pengaksesan hardware secara langsung pada program. Program tersebut berupa file DLL (Dynamic Link Library)

File DLL ini harus diletakkan (di copy-kan) ke direktori / folder “ //windows/system “ atau diikutkan dalam satu folder program yang kita buat.

File DLL yang akan digunakan nanti adalah "inpout32.dll“ Sebelum kita menggunakan fungsi – fungsi yang ada dalam file DLL ini terlebih dahulu harus di deklarasikan di VB kedalam module.

Cara mendeklarasikannya adalah :

Public Declare Function Inp Lib "inpout32.dll" _

Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Public Declare Sub Out Lib "inpout32.dll" _

Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Jika file DLL tersebut telah dideklarasikan seperti diatas, maka fungsi Out (untuk mengeluarkan data) dan Inp (untuk membaca data) siap digunakan pada VB. Untuk mengirim data pada port parallel, digunakan fungsi Out . Sintak penulisannya adalah sebagai berikut :

Out [Alamat Port], [Nilai]

Perintah diatas membutuhkan dua parameter, yaitu alamat port dan nilai data yang dikirimkan pada port tersebut.Karena tiap port hanya 8 jalur data, maka hanya bisa mengirim nilai maksimum = 255 (FFh/11111111b) ke port yang diinginkan

Contoh berikut mengilustrasikan cara men-set bit ke port parallel

Out &H378, 1 à Men-set bit 0 pada port parallel (alamat 378h)

‘1 = 0000 0001b

Out &H378, 2 à Men-set bit 1 pada port parallel (alamat 378h)

‘2 = 0000 0010b

Out &H378, 4 à Men-set bit 2 pada port parallel (alamat 378h)

‘4 = 0000 0100b

Out &H378, 8 à Men-set bit 4 pada port parallel (alamat 378h)

‘8 = 0000 1000b

Untuk men-set bit lebih dari satu bit

Out &H378, 7 à Men-set bit 0,1,2 pada port parallel (alamat 378h) ‘7 = 0000 0111b

Setiap kita menset bit dengan cara diatas maka keadaan bit yang lainnya akan terhapus, untuk mengatasi hal ini akan diselesaikan dengan bantuan perintah Inp

Cara membaca data dari port parallel adalah sama mudahnya, sintak penulisannya adalah sebagai berikut :

Text1.Text = Inp(&H378)

[Variabel Simpan] = Inp [Alamat Port]

Setelah mengetahui cara membaca data di port parallel, maka dengan bantuan cara tersebut bisa digunakan untuk menset satu bit tertentu tanpa merubah nilai bit lainnya.

Private Sub Command5_Click()

Dim input_sementara, nilai_Baru As Byte

input_sementara = Inp(&H378)

nilai_Baru = input_sementara Or 1

Out &H378, nilai_Baru

End Sub

Download Source Code

Read more ...

Serial Port Computer & Pemrogramannya Dengan VB6.0 Serial Port Computer & Pemrogramannya Dengan VB6.0

Kamis, 20 Agustus 2009
Serial Port Computer & Pemrogramannya Dengan VB6.0

 Ada 2 macam cara komunikasi data serial yaitu Sinkron dan Asinkron. Pada komunikasi data serial sinkron, clock dikirimkan bersama sama dengan data serial, tetapi clock tersebut dibangkitkan sendiri – sendiri baik pada sisi pengirim maupun penerima.Sedangkan pada komunikasi serial asinkron tidak diperlukan clock karena data dikirimkan dengan kecepatan tertentu yang sama baik pada pengirim / penerima.

Pada IBM PC kompatibel port serialnya termasuk jenis asinkron. Komunikasi data serial ini dikerjakan oleh UART (Universal Asynchronous Receiver Transmitter). IC UART dibuat khusus untuk mengubah data parallel menjadi data serial dan menerima data serial yang kemudian dirubah lagi menjadi data parallel.IC UART 8250 merupakan salah satunya. Selain berbentuk IC mandiri berbagai macam mikrokontroller juga ada yang dilengkapi dengan UART, misalnya AT89S51/52/53 atau PIC16F877.

Pada UART, kecepatan pengiriman data ( atau yang sering disebut dengan Baud Rate ) dan fase clock pada sisi transmitter dan sisi receiver harus sinkron.

Untuk itu diperlukan sinkronisasi antara Transmitter dan Receiver. Hal ini dilakukan oleh bit “Start” dan bit “Stop”. Ketika saluran transmisi dalam keadaan idle, output UART adalah dalam keadaan logika “1”.

Ketika Transmitter ingin mengirimkan data, output UART akan diset dulu ke logika “0” untuk waktu satu bit. Sinyal ini pada receiver akan dikenali sebagai sinyal “Start” yang digunakan untuk menyinkronkan fase clocknya sehingga sinkron dengan fase clock transmitter.

Selanjutnya data akan dikirimkan secara serial dari bit yang paling rendah (bit0) sampai bit tertinggi.Selanjutnya akan dikirimkan sinyal “Stop” sebagai akhir dari pengiriman data serial.

Sebagai contoh misalnya akan dikirimkan data huruf “A” dalam format ASCII (atau sama dengan 41 heksa atau 0100 0001.

PENGIRIMAN HURUF “A” TANPA BIT PARITAS

Kecepatan transmisi (baud rate) dapat dipilih bebas dalam rentang tertentu.Baud rate yang umum dipakai adalah 110, 135, 150, 300, 600, 1200, 2400, dan 9600 (bit/perdertik).Dalam komunikasi data serial, baud rate dari kedua alat yang berhubungan harus diatur pada kecepatan yang sama. Selanjutnya harus ditentukan panjang data (6,7 atau 8 bit), paritas (genap, ganjil, atau tanpa paritas), dan jumlah bit “Stop” (1, 1 ½ , atau 2 bit).

Karakteristik Sinyal Port Serial

Standar sinyal komunikasi serial yang banyak digunakan adalah Standar RS232 yang dikembangkan oleh Electronic Industri Association (EIA/TIA) yang pertama kali dipublikasikan pada tahun 1962.Ini terjadi jauh sebelum IC TTL populer sehingga sinyal ini tidak ada hubungan sama sekali dengan level tegangan IC TTL. Standar ini hanya menyangkut komunikasi antara (Data Terminal Equipment – DTE) dengan alat – alat pelengkap komputer (Data Circuit Terminating Equipment – DCE).

Standar sinyal RS232 memiliki ketentuan level tegangan sebagai berikut :

  • Logika 1 disebut ‘Mark’ terletak antara -3 Volt sampai -25 Volt
  • Logika ‘0’ disebut ‘space’ terletak antara +3 Volt samapai +25 Volt.
  • Daerah tegangan antara -3 Volt sampai +3 Volt adalah invalid level, yaitu daerah tegangan yang tidak memiliki level logika pasti sehingga harus dihindari. Demikian juga level tegangan dibawah -25 Volt dan diatas +25 Volt juga harus dihindari karena bisa merusak line driver pada saluran RS232

Gambar dibawah adalah contoh level tegangan RS232 pada pengiriman huruf “A” dalam format ASCII tanpa bit paritas.

Level Tegangan RS232 pada pengiriman huruf “A” Tanpa Bit Paritas.

Flow Control

Jika kecepatan transfer data dari DTE ke DCE (misal dari komputer / modem) lebih cepat dari pada transfer data dari DCE ke DCE (modem ke modem) maka cepat atau lambat kehilangan data akan terjadi karena buffer pada DCE akan mengalami overflow. Untuk itu diperlukan sistem flow control untuk mengatasi masalah tersebut.Ada 2 macam flow control yaitu secara hardware dan secara software.

Flow control secara software atau yang sering disebut dengan Xon (karakter ASCII 17) dan Xoff (karakter ASCII 19).DCE akan mengirimkan Xoff ke komputer untuk memberitahukan agar komputer menghentikan pengiriman data jika buffer pada DCE telah penuh.Jika buffer telah kembali siap menerima data DCE akan mengirimkan karakter Xon ke komputer dan komputer akan melanjutkan pengiriman data sampai data terkirim semua.Keuntungan Flow Control ini adalah hanya diperlukan kabel sedikit karena karakter kontrol dikirim lewat saluran TX RX.

Flow Control secara hardware atau sering disebut RTS / CTS menggunkan dua kabel untuk melakukan pengontrolan.Komputer akan men-set saluran Request to Send (RTS) jika akan mengirimkan data ke DCE. Jika buffer di DCE siap menerima data, maka DCE akan membalas dengan men-set saluran Clear to Send (CTS) dan komputer akan mulai mengirimkan data.Jika buffer telah penuh, maka saluran akan di reset dan komputer akan menghentikan pengiriman data sampai saluran ini di-set kembali.

Konfigurasi Port Serial

Konektor DB-9 pada bagian belakang komputer adalah port serial RS232 yang biasa dinamai dengan COM1 dan COM2.


Keterangan mengenai fungsi saluran RS232 pada konektor DB-9 adalah sebagai berikut :

  1. Received Line Signal Detect, dengan saluran ini DCE memberitahukan ke DTE bahwa pada terminal masukan ada data masuk.
  2. Receive Data, digunakan DTE menerima data dari DCE.
  3. Transmit Data, digunakan DTE mengirimkan data ke DCE.
  4. Data Terminal Ready, pada saluran ini DTE memberitahukan kesiapan terminalnya.
  5. Signal Ground, saluran ground
  6. DCE ready, sinyal aktif pada saluran ini menunjukkan bahwa DCE sudah siap.
  7. Request to Send, dengan saluran ini DCE diminta mengirim data oleh DTE.
  8. Clear to Send, dengan saluran ini DCE memberitahukan bahwa DTE boleh mulai mengirim data.
  9. Ring Indicator, pada saluran ini DCE memberitahukan ke DTE bahwa sebuah stasiun menghendaki hubungan dengannya.

Untuk dapat menggunakan port serial harus diketahui dahulu alamat dari port serial tersebut. Biasanya tersedia dua port serial pada CPU, yaitu COM1 dan COM2. Base Address COM1 biasanya 1016 (3F8h) dan COM2 biasanya 760 (2F8h). Alamat tersebut adalah alamat yang biasa digunakan, tergantung komputer yang digunakan.Tepatnya kita bisa melihat pada peta memori tempat menyimpan alamat tersebut, yaitu memori 0000.0400h untuk COM1 dan 0000.0402h untuk COM2.

Berikut adalah nama – nama register yang digunakan beserta alamatnya.


Keterangan Register

  • RX Buffer , digunakan untuk menampung dan menyimpan data dari DCE.
  • TX Buffer , digunakan untuk menampung dan menyimpan data yang akan dikirim ke port serial.
  • Baud Rate Divisor Latch LSB , digunakan untuk menampung byte bobot rendah untuk pembagi clock pada IC UART agar didapat baud rate yang tepat.
  • Baud Rate Divisor Latch MSB , digunakan untuk menampung byte bobot tinggi untuk pembagi clock pada IC UART sehingga total angka pembagi adalah 4 byte yang dapat dipilih dari 0001h sampai FFFFh.

Berikut adalah tabel angka pembagi yang sering digunakan :


Sebagai catatan, register Baud Rate Divisor Latch ini bisa diisi jika bit 7 pada register Line Control Register diisi 1.

Alasan Penggunaan Port Serial

Dibandingkan dengan menggunakan port parallel penggunaan port serial terkesan lebih rumit. Berikut adalah keuntungan penggunaan port serial dibandingkan penggunaan port parallel.

  1. Pada komunikasi dengan kabel yang panjang, masalah cable loss tidak akan menjadi masalah besar daripada menggunakan kabel parallel. Port serial mentransmisikan “1” pada level tegangan -3 Volt sampai -25 Volt dan “0” pada level tegangan +3 Volt sampai +25 Volt, sedangkan port parallel mentransmisikan “0” pada level tegangan 0 Volt dan “1” pada level tegangan 5 Volt.
  2. Dubutuhkan jumlah kabel yang sedikit, bisa hanya menggunakan 3 kabel yaitu saluran Transmit Data, saluran Receive Data, dan saluran Ground (Konfigurasi Null Modem)
  3. Saat ini penggunaan mikrokontroller semakin populer. Kebanyakan mikrokontroller sudah dilengkapi dengan SCI (Serial Communication Interface) yang dapat digunakan untuk komunikasi dengan port serial komputer.

Pengaksesan Port Serial Pada Visual Basic

Untuk pengaksesan port serial kita dapat mengaksesnya secara langsung menggunakan kontrol MSComm yang telah disediakan Visual basic.Kontrol MSComm menyediakan fisilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial.Setiap MSComm hanya menangani satu port serial sehingga jika kita ingin menggunakan lebih dari satu port serial harus digunakan MSComm lain.

Properti MSComm

Jumlah properti pada MSComm sangat banyak, dan hanya beberapa properti yang perlu kita ketahui. Properti yang sering digunakan adalah :

CommPort

Digunakan untuk menentukan nomor port serial yang akan dipakai.

Setting

Digunakan untuk menset nilai baud rate, pariti, jumlah bit data, dan jumlah bit stop.

PortOpen

Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini.

Input

Digunakan untuk mengambil data string yang ada pada buffer penerima.

Output

Digunakan untuk menulis data string pada buffer kirim.

Berikut adalah contoh penggunaan properti tersebut

'==============================================

Private Sub Form_Load ()

MSComm1.ComPort = 1

MSComm1.Setting = “9600,N,8,1”

MSComm1.InputLen = 0

MSComm1.PortOpen = True

MSComm1.Output = “ATV1Q0” & Chr$(13)

Do

DoEvents

Buffer$ = Buffer$ & MSComm1.Input

Loop Until InStr (Buffer$, “OK”

& vbCLRF)

MSComm1.PortOpen = False

End Sub

'==============================================

Kode – kode program pada prosedur diatas akan melakukan aksi sebagai berikut :

  • Port serial yang digunakan adalah COM1
  • Setting MSComm adalah : Baud rate 9600, tanpa paritas, jumlah data 8 bit, dan jumlah bit stop adalah 1 bit
  • Memerintahkan kontrol MSComm membaca seluruh isi buffer ketika menggunakan perintah input (MSComm1.InputLen = 0)
  • Membaca port serial
  • Mengirim perintah “ATV1Q0” diikuti ASCII 13 (enter) ke modem
  • Menunggu modem mengirimkan jawaban “OK” ke komputer
  • Menutup port serial

Even Pada MSComm

MSComm hanya mempunyai satu even saja, yaitu even OnComm. Even OnComm dibangkitkan jika nilai properti dari CommEvent berubah yang mengindikasikan telah terjadi even pada port serial baik even komunikasi maupun even error.

Tabel berikut adalah tabel mengenai nilai – nilai dari properti CommEvent, nilai properti ini tidak tersedia pada saat design time, tetapi hanya dapat dibaca pada saat run time.

Berikut adalah contoh penggunaan even OnComm untuk komunikasi menggunakan mikrokontroller. Akan dibaca hanya even comEvReceive saja

'==============================================

Private Static Sub MSComm1_OnComm ()

Dim Buffer As Variant

Select Case MSComm1.CommEvent

Case comEvReceive

If MSComm1.InVufferCount >= 3

then

buffer = CStr (MSComm1.Input)

If Mid (Buffer,1,1) = “0”

then

if Mid (Buffer,2,1)= “K”

then

StatusBar1.Panels

(“Value”).Text = “Value : “ &

Asc(Mid(Buffer,3,1))

StatusBar1.Panels

(“Status”).Text = “Status :

Connect”

End If

End If

End If

End Select

End Sub

'==============================================

Kode – kode program pada prosedur diatas akan melakukan aksi sebagai berikut :

  • Mendeteksi even comEvenReceive, kemudian menentukan apakah sudah diterima tiga buah karakter pada buffer penerima .
  • Menentukan apakah karakter yang diterima adalah karakter “OK”. Jika karakter yang diterima adalah “OK” maka akan diubah nilai “Value” dan nilai “Status” pada properti panel kontrol StatusBar1.

Selamat Mencoba.... God Luck.
Read more ...

Easy Understanding About USB For Beginner's (Part 1)

Kamis, 20 Agustus 2009
Easy Understanding About USB For Beginner's (Part 1)

 Starting out new with USB can be quite daunting. With the USB 2.0 specification at 650 pages one could easily be put off just by the sheer size of the standard.

This is only the beginning of a long list of associated standards for USB. There are USB Class Standards such as the HID Class Specification which details the common operation of devices (keyboards, mice etc) falling under the HID (Human Interface Devices) Class - only another 97 pages.

If you are designing a USB Host, then you have three Host Controller Interface Standards to choose from. None of these are detailed in the USB 2.0 Spec.

Why we use USB?

  • Setup takes a long time and is confusing
  • Frequent PC crashes
  • Cables clutter with devices conflicts
  • Inaccessible Connectors
  • Poor hot-plug support

The USB Solution

  • Easy of Use
  • One interface for many devices
  • Automatic Configuration
  • Easy to connect
  • Easy Cables
  • Hot Pluggable
  • No User and Jumper Setting
  • No power supply required (sometime)

USB Speed And Standard

  •  USB 1.0 (Released in January 1996) and USB 1.1 (Released in September 1998) are old standards / protocols , USB 1.1 can switch over 2 speeds: Low speed & Full speed.

  •  USB 2.0 (Release in April 2000) is the actual standard (not "high speed"). USB 2.0 provides compatibility with USB 1.1 . USB 2.0 can switch over 3 speeds:



  1.  Low sped 1.5 Mbps, app. 192 Kilobyte/sec
  2.  Full speed 12 Mbps, app. 1,5 Megabyte/sec
  3.  High speed 480 Mbps, app. 61 Megabyte/sec

USB VS Other Systems

Architecture Of The USB

The topology of USB is based on “tiered star topology” , single host controller and up to 127 'slave' devices.

The host controller is connected to a hub, untegrated within the PC, which allows a number of attachment points.

A device can be plugged into a hub, and that hub can be plugged into another hub and so on. However the maximum number of tiers permitted is six.

The length of any cable is limited to 5 metres. This limitation is expressed in the specification in terms of cable delays etc, but 5 metres can be taken as the practical consequence of the specification.


Typical 4-Port USB Hub

Host Is A Master

All communications on this bus are initiated by the host. This means, for example, that there can be no communication directly between USB devices.

A device cannot initiate a transfer, but must wait to be asked to transfer data by the host. The only exception to this is when a device has been put into 'suspend' (a low power state) by the host then the device can signal a 'remote wakeup'.

Cables - Electrical


USB cables have been designed to ensure correct connections are always made.

  • USB requires a shielded cable containing 4 wires.
  • Two of these, D+ and D-, form a twisted pair responsible for carrying a differential data signal, as well as some single-ended signal states. (For low speed the data lines may not be twisted.)
  • The signals on these two wires are referenced to the (third) GND wire.
  • The fourth wire is called VBUS, and carries a nominal 5V supply, which may be used by a device for power

Makeup of USB Cables

Connectors

"A" receptacles point downstream from a Host or Hub, while "B" receptacles point upstream from a USB device or hub.

Series A plugs mate with A receptacles, and B plugs mate with B receptacles.


USB is a BUS

What we need to remember!,

At any point in time, only the host OR one device can be transmitting at a time. When the host is transmitting a packet of data, it is sent to every device connected to an enabled port. Only one device, the addressed one, actually accepts the data. (The others all receive it but the address is wrong for them.)

Read more ...