laporan praktikum interfacing

9
LAPORAN PRAKTIKUM INTERFACING Laporan ini dibuat untuk memenuhi tugas UAS matakuliah Interfacing Oleh Hermawan Firdiansyah NIM. 0910930047 UNIVERSITAS BRAWIJAYA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM JURUSAN FISIKA Januari 2013

Upload: kokomaster11

Post on 03-Dec-2015

217 views

Category:

Documents


3 download

DESCRIPTION

laporan

TRANSCRIPT

Page 1: Laporan Praktikum Interfacing

LAPORAN

PRAKTIKUM INTERFACING

Laporan ini dibuat untuk memenuhi tugas UAS matakuliah Interfacing

Oleh

Hermawan Firdiansyah

NIM. 0910930047

UNIVERSITAS BRAWIJAYA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

JURUSAN FISIKA

Januari 2013

Page 2: Laporan Praktikum Interfacing

Analog to Digital Convertion (ADC)

Kode program

Analisa:

Kode program di atas merupakan program untuk ADC menggunakan mikrokontroller ATmega16.• Kode pada baris ke-7 yaitu DDRC = 0xff; berfungsi untuk membuat PORTC sebagai

keluaran untuk menampilkan hasil ADC 8 bit ke dalam bentuk nyala LED.• Kode pada baris ke-9 yaitu ADMUX = 0b01100000; merupakan register untuk pengaturan

channel ADC yang akan digunakan yaitu channel ADC 0, juga digunakan untuk mengatur tegangan referensi yaitu VCC 5 volt sebagai referensi, serta untuk mengatur left adjust pada hasil ADC.

• Pada baris ke-10 yaitu ADCSRA = 0b10000001; berisi register-register yang mengatur kerja ADC, seperti: register ADEN=1 yang berfungsi untuk meng-enable ADC, lalu register ADSC untuk mengatur dimulainya konversi, register ADATE =0 untuk menonaktifkan outotrigger, ADIE = 0 untuk menonaktifkan interupsi ADC, dan berfungsi ASPS untuk menentukan frekuensi clock yang digunakan.

• Kode while (1) merupakan perulangan terus-menerus.• kode pada baris 14 (ADCSRA=(1<<ADSC); merupakan perintah yang berfungsi untuk

memulai konversi.• Kode pada baris 15 while (ADCSRA & (1<<ADSC)) {;} merupakan perintah yang

berfungsi untuk menunggu hingga proses konversi selesai.• Kode pada baris ke-16 hasil=ADCH; berfungsi untuk menyimpan nilai yang telah

dikonversi dalam variabel hasil.• Kode pada baris ke-15 PORTC= ~hasil; berfungsi untuk menampilkan hasil konversi

kedalam bentuk nyala led pada PORTC.

Page 3: Laporan Praktikum Interfacing

Motor Stepper

Kode Program:

Page 4: Laporan Praktikum Interfacing

Analisa:Kode program di atas merupakan kode untuk menggerakkan motor stepper. Program tersebut sama dengan program I/O pada umumnya. PORTC digunakan sebagai keluaran yang dihubungkan dengan motor stepper. Kode program pada perulangan while(1) yang pertama yaitu berfungsi untuk menggerakkan motor stepper full step putar ke kiri dalam satu putaran penuh.Kode program pada perulangan while(1) yang kedua yaitu berfungsi untuk menggerakkan motor stepper full step putar ke kanan dalam satu putaran penuh.Kode program pada perulangan while(1) yang ketiga yaitu berfungsi untuk menggerakkan motor stepper half step putar ke kanan dalam satu putaran penuh.

Page 5: Laporan Praktikum Interfacing

Komunikasi Serial

Analisa:Untuk praktikum komunikasi serial tidak membuat program sendiri, pada percobaan ini aplikasi yang digunakan yaitu Terminal COM Port.Sebelum data dikirimkan terlebih dahulu dihubungkan dua buah PC melalui port serial masing-masing PC. Sebelum mengirim data, terlebih dahulu diset COM port nya, baudratenya yang digunakan berapa, data bit yang digunakan 8, tanpa paritas, menggunakan 1 stop bit, serta tidak menggunakan handshaking. Setelah semuanya telah diset, kemudian diketikkan karakter atau string di baris input yang telah disediakan. Lalu tombol send ditekan, maka data akan dikirim ke PC yang telah terhubung.

Page 6: Laporan Praktikum Interfacing

Komunikasi Parallel

Kode Program:

unit UnitTest;

{$IFDEF FPC} {$MODE Delphi}

{$ENDIF}

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, LPT;

type

{ TForm1 }

TForm1 = class(TForm) LPTXP1: TLPTXP;

CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox;

Run: TButton; Timer1: TTimer;

OpenDialog1: TOpenDialog; BinFile: TButton; Label1: TLabel;

procedure ChangePort(Sender: TObject); procedure FormCreate(Sender: TObject); procedure RunClick(Sender: TObject);

procedure Timer1Timer(Sender: TObject); procedure BinFileClick(Sender: TObject);

private BINX:array of byte; BinLength:integer;

CodePosition,PositionX:integer; Rpt,Jml:byte;

procedure LoadBIN(FileName:string); public

{ Public declarations } end;

var Form1: TForm1;

Page 7: Laporan Praktikum Interfacing

implementation

{$R *.dfm}

procedure TForm1.ChangePort(Sender: TObject);var Data:byte;

begin Data:=0;

if CheckBox1.Checked then Data:=Data or 1; if CheckBox2.Checked then Data:=Data or 2; if CheckBox3.Checked then Data:=Data or 4; if CheckBox4.Checked then Data:=Data or 8; if CheckBox5.Checked then Data:=Data or 16; if CheckBox6.Checked then Data:=Data or 32; if CheckBox7.Checked then Data:=Data or 64; if CheckBox8.Checked then Data:=Data or 128;

LPTXP1.Data:=Data;end;

procedure TForm1.FormCreate(Sender: TObject);begin

LPTXP1.Data:=255; LoadBin(ExtractFilePath(ParamStr(0))+'def.bin');

end;

procedure TForm1.RunClick(Sender: TObject);var Action:boolean;

const ButtonCaption:array[False..True]of string[5]=('Stop','Run');begin

Action:=Run.Caption='Stop'; Run.Caption:=ButtonCaption[Action];

CheckBox1.Enabled:=Action; CheckBox2.Enabled:=Action; CheckBox3.Enabled:=Action; CheckBox4.Enabled:=Action; CheckBox5.Enabled:=Action; CheckBox6.Enabled:=Action; CheckBox7.Enabled:=Action; CheckBox8.Enabled:=Action; Timer1.Enabled:=not Action;

BinFile.Enabled:=Action; if Action then ChangePort(self);

end;

procedure TForm1.Timer1Timer(Sender: TObject);label Start;

beginStart:

if Rpt=0 then begin

Rpt:=BINX[CodePosition];

Page 8: Laporan Praktikum Interfacing

if Rpt=0 then // begin

CodePosition:=0; goto Start;

end; inc(CodePosition);

PositionX:=CodePosition; Jml:=BINX[CodePosition];

inc(CodePosition); end;

if Jml=0 then begin

CodePosition:=PositionX; Jml:=BINX[CodePosition];

inc(CodePosition); dec(Rpt);

if Rpt=0 then begin

CodePosition:=CodePosition+Jml; goto Start;

end; end;

LPTXP1.Data:=BINX[CodePosition];

inc(CodePosition); dec(Jml);

end;

procedure TForm1.LoadBIN(FileName:string);var F:File of byte;

R:integer;begin

CodePosition:=0; Rpt:=0; Jml:=0;

Run.Enabled:=False; {$I-}

AssignFile(F,FileName); FileMode := 0;

Reset(F); {$I+}

if (IOResult = 0)then begin

BinLength:=FileSize(F); Run.Enabled:=BinLength>0; SetLength(BINX,BinLength);

Page 9: Laporan Praktikum Interfacing

BlockRead(F,BINX[0],BinLength,R); CloseFile(F);

end;end;

procedure TForm1.BinFileClick(Sender: TObject);begin

if OpenDialog1.Execute then LoadBIN(OpenDialog1.FileName);end;

end.

Keterangan:Kode di atas merupakan source code dari komunikasi parallel, kode di atas ditulis pada Delphi.Sebelum data dikirimkan terlebih dahulu dihubungkan dua buah PC melalui port Parallel masing-masing PC. Sedangkan untuk tata cara pengiriman hampir sama dengan komunikasi serial tinggal input karakter lalu tekan ditombol send. Dan untuk handshakingnya diaktifkan pada komunikasi serial.