Home > Komputer > Delphi; Komunikasi Serial ke Mikrokontroler

Delphi; Komunikasi Serial ke Mikrokontroler

May 11th, 2011

delphiBagaimana antarmuka komputer dengan mikrokontroler?, misalnya; bagaimana hendak memonitor temperatur melalui komputer, kemudian di rekam dan ditampilkan dalam bentuk grafik?, ya mestinya melalui perangkat input outputnya. Dahulu para praktisi elektronis menggunakan port paralel (printer port), sederhana dan mudah, tapi ini kurang baik untuk kontrol industri, banyak problem. Kemudian menggunakan slot I/O IDE, membuat card sendiri, wah ini agak ribet juga, keduanya metoda ini kini sudah almarhum kali ya.., karena port paralel sudah tak ada dan slot sudah lebih komplek. Yang ada USB dan (mungkin) Bluetooth, wah ini protokol-nya agak ribet, sulit bagi pemula, meskipun juga kini sudah ada IC nya yang mempermudah antarmuka, nanti aku bahas di postingan lain. Port serial, mudah protokolnya, tapi di komputer sudah tak ada, ya pakai USB to serial atau kabel data HP, ini salah satu metoda-nya. Mikrokontroler, punya piranti serial, nah komputer juga ada, tapi programnya apa?, misalnya VB juga bisa, disini diberi contoh Delphi saja, yang aku sudah tahu.

Delphi versi lama, misalnya versi 5, 6 atau 7, sudah bisa, tetapi anda harus install komponen yang bisa didownload di inet yang berurusan dengan komunikasi serial. Contohnya adalah; ComPort Library, dibuat oleh Dejan Crnila, Home page: http://www2.arnes.si/~sopecrni, anda harus install komponen di delphi dan nanti akan muncul di tab menu component; CportLib, ada pilih komponen Comport1, dan anda akan dapatkan object properties dan Events di sebelah kiri, anda bisa set properties disini (design mode), atau melalui program (running mode).

Cport Library telah terinstall

Cport Library telah terinstall

Sekarang anda tinggal buat program, paling sederhana adalah mengirim karakter ke serial port, yang akan diterima oleh mikrokontroler, selanjutnya mikrokontroler akan mengirim karakter yang anda kirimkan, di-echo-kan istilahnya, Anda create Form1, Memo dan Setup Button, insertkan Comport Componen dan editlah properties-nya 4800bps, COMx disesuaikan, Namanya diganti Comport, kemudian double klik pada On RxChar, isi dengan kode seperti ini;

procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str:string;
ch : char; i,j:integer;
begin
ComPort.ReadStr(Str, Count); j := 0;
for i := 1 to Count do begin
ch := str[i];
if ord(ch)<>0 then memo.SelText := ch
else memo.SelText := ’0′
end;
end;

Artinya bahwa bila ada data masuk ke serial port, maka ditampilkan di jendela memo, selanjutnya isi kode pada button setup seperti ini;

ComPort.ShowSetupDialog;

Adalah setup parameter serial port.

Selanjutnya isilah kode pada even Memo – OnKeyPress seperti dibawah ini;

procedure TForm1.MemoKeyPress(Sender: TObject; var Key: Char);
begin
ComPort.WriteStr(key);
end;

Artinya apa yang anda ketikan di jendela memo, akan dikirimkan ke serial port.

Lantas anda koneksikan serial port ke mikrokontroler, perlu atau tidak RS232 Converter, lihat postingan lain dalam web ini. Mikrokontroler AT89S2051 harus anda isi dengan program seperti ini (yang diisikan hex-file, setelah dicompile);

;echoing character form serial port
;maret 2004
;================== METALINK CROSSASSEMBLER MODULE
$mod51 ;8051 module
; ==================ACTUATORS
led    equ    P3.6    ; LED indicator, boleh dipasang
prgst    equ    0000h    ;program start
;================== 8031 hardware vectors
org prgst              ; power up and reset vector – reset
sjmp start
;========== initialising hardware
org prgst+30h
start:
mov     sp,#2fh        ; reinitialize stack pointer
clr     ri             ; flush the serial input buffer
;========== init serial
initser:
; use timer 1 for 4800 baud serial communications
; for 12 MHz crystal : TH1 reload value : F3 (error=0.16%)
; for 11.059 MHz     : TH1 reload value : F4 (error=0)
mov   pcon,#80h
mov   tmod,#21h            ;timer1 bps 19200, timer0 – 16 bit timer
mov   th1,#0f4h            ;using xtal 11.059MHz
setb  tcon.6
mov   scon,#052h
;=========== main program
mov    b,#20
clr    led
loop:
cpl     led            ;kedipkan led
acall    getchr            ;tunggu karakter masuj
acall    sndchr            ;kirim balik
sjmp    loop            ;loop
; =================
; subroutine getchr
; this routine reads in a chr from the serial port and saves it
; in the accumulator.
getchr:
jnb  ri, getchr        ; wait till character received
mov  a,  sbuf          ; get character
;  anl  a,  #7fh          ; mask off 8th bit (parity)
clr  ri                ; clear serial status bit
ret
;==================
; this routine takes the chr in the acc and sends it out the
; serial port.
sndchr:
clr  scon.1            ; clear the tx  buffer full flag.
mov  sbuf,a            ; put chr in sbuf
txloop:
jnb  scon.1, txloop    ; wait till chr is sent
ret
;==================
end

Jika anda jalankan, dan ketik di layar memo, misalnya ketik a, akan muncul karakter a, misalnya begini;

aabbccss

diechokan apa yang kita kirim.

Memo window

Memo window

(-eof-)

Comments are closed.