"Jenius adalah 1 % inspirasi dan 99 % keringat. Tidak ada yang dapat menggantikan kerja keras" (Thomas Alva Edison, 1932).
1. Tujuan
Setelah menyelesaikan percobaan ini diharapkan peserta praktikum dapat:
1.
Memahami
data frame serial asinkron
2.
Memahami
pengalamatan untuk serial port
3.
Mengetahui
cara mengakses serial port dengan hyper terminal
4.
Mengetahui
cara membaca dan menulis data dari dan ke serial port menggunakan bahasa
pemrograman Tubo C++.
5.
Mengetahui
cara membaca dan menulis data dari dan ke serial port menggunakan bahasa
pemrograman Matlab.
2. Dasar Teori
Komunikasi
serial ialah pengiriman data secara serial (data dikirim satu persatu secara
berurutan), sehingga komunikasi serial jauh lebih lambat daripada komunikasi
paralel. Serial port lebih sulit ditangani karena peralatan yang dihubungkan ke serial port harus berkomunikasi
dengan menggunakan transmisi serial, sedang data di computer diolah secara
paralel. Oleh karena itu data dari
dan ke serial port harus dikonversikan ke dan dari bentuk paralel untuk bisa
digunakan. Menggunakan hardware, hal ini bisa dilakukan oleh Universal
Asyncronous Receiver Transmimeter (UART), kelemahannya kita butuh
software yang menangani register UART yang cukup rumit dibanding pada parallel
port. Kelebihan dari komunikasi serial ialah panjang kabel jauh dibanding
paralel, karena serial port mengirimkan logika “1” dengan kisaran tegangan –3 V
hingga –25 V dan logika 0 sebagai +3 Volt hingga +25 V sehingga kehilangan daya
karena panjangnya kabel bukan masalah utama. Bandingkan dengan port paralel
yang menggunakan level TTL berkisar dari 0 V untuk logika 0 dan +5 Volt untuk
logika 1. Berikut contoh bentuk sinyal komunikasi serial . Umumnya sinyal
serial diawali dengan start bit, data bit dan sebagai pengecekan data
menggunakan parity bit serta ditutup dengan 2 stop bit. Level tengangan
-3 V hingga +3 V dianggap sebagai undetermined
region.
Komunikasi
melalui serial port adalah asinkron, yakni sinyal detak tidak dikirim bersama
dengan data. Setiap word disinkronkan dengan start bit, dan sebuah clock
internal di kedua sisi menjaga bagian data saat pewaktuan (timing).
Gambar 1 Satu
byte data asinkron
Gambar 2 pin PC Com Port - EIA-574 RS-232/V.24 pada DB-9 pin
Digunakan untuk data
Asinkron
Divais
yang menggunakan kabel serial untuk komunikasinya dibagi ke dalam dua kategori.
Yaitu DCE (Data Communications Equipment)
dan DTE (Data Terminal Equipment) Data Communications Equipment adalah
divais seperti modem anda, TA adapter, plotter dan lain-lain, sedangkan Data Terminal Equipment adalah Computer anda
atau Terminal.
Alat yang digunakan
dalam percobaan ini adalah:
- DTE, berupa sebuah komputer dengan serial port
- DCE, berupa sebuah modul TX-RX serial
- DB9 cable extension
Transfer
Data Serial dengan Hyper Terminal
Metode percobaan
untuk transfer data antara DTE dan DCE adalah sebagai berikut:
- Hubungkan modul TX-RX serial dengan komputer melalui serial port menggunakan DB9 cable extension.
- Buka Hyper Terminal dengan menekan start → All progams → Accessories → Communications → Hyper Terminal.
- Ketik nama untuk Connection Description, misal coba, kemudian tekan OK.
- Pada Connect to, pilihlah COM port yang dipakai di Connect using, kemudian tekan OK.
- Masukkan nilai-nilai port settingnya, sesuai dengan DCE-nya. Kemudian tekan OK.
Kode
Program TX-RX RS 232 dengan Turbo C++
for dos
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PORT1 0x3F8
/* Defines Serial
Ports Base Address */
/* COM1 0x3F8 */
/* COM2 0x2F8
*/
/* COM3 0x3E8
*/
/* COM4 0x2E8
*/
void main(void)
{
int c;
int ch;
outportb(PORT1 + 1
, 0); /* Turn off interrupts - Port1 */
/* PORT 1 - Communication Settings */
outportb(PORT1 + 3
, 0x80); /* SET DLAB ON */
outportb(PORT1 + 0
, 0x0C); /* Set Baud rate - Divisor
Latch Low Byte */
/*
Default 0x03 = 38,400 BPS */
/* 0x01 = 115,200 BPS */
/* 0x02 =
57,600 BPS */
/* 0x06 =
19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS */
outportb(PORT1 + 1
, 0x00); /* Set Baud rate - Divisor
Latch High Byte */
outportb(PORT1 + 3
, 0x03); /* 8 Bits, No Parity, 1 Stop
Bit */
outportb(PORT1 + 2
, 0xC7); /* FIFO Control Register */
outportb(PORT1 + 4
, 0x0B); /* Turn on DTR, RTS, and OUT2
*/
printf("\n\n
Program TX-RX RS 232 ");
printf("\n\n
Press ESC to quit \n");
do { c =
inportb(PORT1 + 5); /* Check to
see if char has been */
/* received. */
if
(c & 1) {ch = inportb(PORT1); /*
If so, then get Char */
printf("%c",ch);} /*
Print Char to Screen */
if
(kbhit()){ch = getch(); /* If key pressed, get
Char */
outportb(PORT1, ch);} /* Send Char to Serial Port */
} while (ch !=27); /* Quit when ESC (ASC 27)
is pressed */
}
Transfer data serial dengan bahasa MATLAB
- Hubungkan modul TX-RX serial dengan komputer melalui serial port menggunakan DB9 cable extension.
- Bukalah Software MATLAB 7.0.
- Berikut adalah kode program yang anda ketikkan di MATLAB COMMAND WINDOW.
**
Membuka port serial **
s=serial(‘COM1’); //misal yang digunakan COM1
get(s) //untuk
melihat default property s (COM1)
set(s,’baudrate’,9600); //mengeset ‘baudrate’,
set(s,’databits’,8); //mengeset ‘databits’,
set(s,’parity’,none); //mengeset ‘parity’,
set(s,’stopbits’,1); //mengeset ‘stopbits’
fopen(s) //membuka
port serial
**
Membaca dari port serial **
out=fscanf(s)
**
Menulis ke port serial **
fprintf(s,’%i’,’1’) //menulis
ASCII 1 ke hardware
atau
fprintf(s,’1’) //menulis
1 ke hardware
**
Menutup port serial **
fclose(s)
delete(s)
clear
s
..
No comments:
Post a Comment