Pembatasan Pembelian dan Pengaturan Harga BBM Subsidi Menggunakan Smart Card.

(1)

Universtasi Kristen Maranatha

i

Pengaturan Harga Dan Pembatasan Pembelian BBM Subsidi Menggunakan

Smart Card

Rhendy Widjaja / 0522088

Kamp Melati Gg Sijarak no 1 Cirebon 45134 Telp 081809712426

Email : r_endychn@yahoo.com

Jurusan Teknik Elektro, Fakultas Teknik , Universitas Kristen Maranatha

Jl. Prof.Drg.Surya Sumantri 65, Bandung 40164, Indonesia

ABSTRAK

Dewasa ini perkembangan teknologi smart card sangatlah berkembang

dengan cepat. Teknologi ini sudah diterapkan pada berbagai aplikasi identifikasi

dan pembayaran. Smart card memiliki kelebihan dibandingkan kartu lainnya yaitu

memiliki memori yang dapat menyimpan data. Oleh karena itu teknologi smart

card dapat diterapkan dalam aplikasi penyaluran subsidi BBM, yaitu sebagai kartu

identitas dari setiap penerima subsidi.

Dalam tugas akhir ini penulis membuat suatu perangkat yang dapat

membatasi pembelian dan mengatur harga BBM dengan menggunakan kartu

smart card sebagai kartu identitas dan sebuah panel control pengisian BBM

subsidi yang digunakan sebagai alat transaksi pembelian BBM subsidi yang terdiri

dari smart card reader, keypad, LCD, LED dan mikrokontroler. Proses pengisian

disimulasikan dengan lampu LED yang menyala.

Dari hasil perancangan, realisasi dan pengujian, alat ini dapat bekerja

dengan baik. Smart card dapat dipergunakan sebagai kartu identitas penerima

subsidi, sehingga dapat dilakukan pengaturan harga dan pembatasan pembelian

BBM subsidi.


(2)

Universtasi Kristen Maranatha

ii

Kata kunci : smart card, BBM (bahan bakar minyak)

Purchasing Restriction And Price Governing Of Subsidy Petroleum With Smart

Card

Rhendy Widjaja / 0522088

Kamp Melati Gg Sijarak no 1 Cirebon 45134 Telp 081809712426

Email : r_endychn@yahoo.com

Electrical Engineering, Technic Faculty, Maranatha Christian University

Jl. Prof.Drg.Surya Sumantri 65, Bandung 40164, Indonesia

ABSTRACT

These days development of technology smart card hardly growing swiftly.

This technology have been applied at various the application of identifications and

payment. Smart card has excess compared to other card is having memory which

menyimpan data can. Therefore technology smart applicable card in the

application of channeling of subsidy BBM, that is as identity card from every

subsidy receiver.

In this final assignment writer makes a peripheral which can limit

purchasing and arranges the price of BBM by using card smart card as identity

card and a panel control admission filling of BBM subsidy applied as a means of

transaction of purchasing of BBM subsidy consisted of by smart card reader, key

pad, LCD, LED and microcontroller. Admission filling process is simulation with

lamp LED on.

From result of scheme, realization and assaying, this device can work

carefully. Smart card can be utilized as subsidy receiver identity card, causing can

be done governing of the price and restriction of purchasing of BBM subsidy.


(3)

Universtasi Kristen Maranatha

iii

DAFTAR ISI

LEMBAR PENGESAHAN

SURAT PERNYATAAN

ABSTRAK

………...…

ABSTRACT

………..… ….

KATA PENGANTAR

………....

DAFTAR ISI

………...

DAFTAR TABEL

………...

DAFTAR GAMBAR

………...

i

ii

iii

v

viii

x

BAB I. PENDAHULUAN

I.1 Latar Belakang………

I.2 Identifikasi Masalah.…….…..……….……….…….………..…

..

I.3 Tujuan..………

...

I.4 Pembatasan Masalah..………

.

I. 5 Spesifikasi

Alat………

..

I.6 Sistematika Penulisan………...

.

1

1

2

2

2

2

BAB II. LANDASAN TEORI

II.1 RFID (Radio Frequency Identification)

………

II.1.2 Jenis Kartu RFID………

II.1.2.1 Kartu Pasif………..

II.1.2.2

Kartu Aktif………..

II.1.2.3 Kartu Semipasif………...

II.1.3 Transmisi Energi RFID pasif

……….

II.2 Mifare IC MF1 IC S50

……….……….

II.2.1 Chip MF1 IC S50

………..……….

II.2.2 Prinsip Komunikasi………

II.2.2.1 Proses

Identifikasi dan Seleksi………

II.2.2.1.1 Request Standard/All

………

II.2.2.1.2 Anticollision loop

……….

II.2.2.1.3 Select Card

………...

4

4

4

4

5

5

5

6

8

9

9

9

9


(4)

Universtasi Kristen Maranatha

iv

II.2.2.2 Proses Authentication/ 3 Pass Authentication.

II.2.2.3 Proses Operasi Memori………...

II.2.3

Organisasi Memori………...………..

II.2.3.1 Sektor Trailer……….…………..

II.2.3.2 Manufacture Block………..

II.2.3.3 Blok data……….

II.2.4 Kondisi Akses………...………….

II.2.4.1 Kondisi Akses Blok Sector Trailer………….

II.2.4.2 Kondis

i Akses Blok Data………..………….

II.3 ACM 120S-

SM………..………

II.3.1 Spesifikasi ACM 120S-

SM………..…………..

II.3.2 Konfigurasi Pin ACM 120S-

SM…………..…………..

II.4 Protokol Komunikasi……….………

II.4.1 Protokol Binary………...

II.4.2 Reset

……….…………...

II.4.3 Select

/Pilih………..…..………..

II.4.4 Login

……….…………..

II.4.5 Read

/Baca……….………..

II.4.6 Write

/Tulis………....………….

II.4.7 Increment

………..………..

II.4.8 Decrement

………..

II.5 Mikrokontroler AVR AT-

Mega16………..………..

II.5.1 Fitur AT-

Mega16……….………...

II.5.2 Konfigurasi Pin AT-

Mega16…………..……..………..

II.5.3 Blok Diagram AT-

Mega16………..………...

II.5.4 Arsitektur Mikrokontroler AVR RISC………...

II.5.5 Peta Memori AVR AT-M

ega16……….…………

II.5.5.1 Memori Program…………..………

II.5.5.2 Memori Data………....

...

II.5.5.3 Memori Data EEPROM………..

9

10

10

11

12

12

13

14

15

16

17

17

19

19

21

21

22

23

25

28

29

29

29

31

33

33

34

35

35

36


(5)

Universtasi Kristen Maranatha

v

BAB III. PERANCANGAN DAN REALISASI

III.1 Cara Kerja……….………...

III.2 Perancangan Peran

gkat Keras (Hardware)………...

III.2.1 Koneksi Mikrokontroler dengan Smart Card Reader

III.2.2 Koneksi Mikrokontroler dengan Keypad………..

III.2.3

Koneksi Mikrokontroler dengan LCD………..

III.2.4

Koneksi Mikrokontroler dengan LED……..………….

III.3 Perancangan Perangkat Lunak……….

III.3.1 Program Utama……….…………

III.3.2 Setting Waktu………

III.3.3 Deteksi Kartu……….

III.3.4 Proses Baca dan Update………

38

39

39

40

42

43

43

43

46

47

48

BAB IV. PENGUJIAN ALAT

IV.1 Pengujian Setting Waktu……….………….

IV.2 Pengujian Tampilan Waktu dan Selamat Datang……...……….

IV.3 Pengujian Deteksi Kartu, Proses Baca dan

Update……….

IV.4 Pengujian Pengisian A1……….…………..

IV.5 Pengujian Pengisian A2……….…...

...

IV.6 Pengujian Pengisian A3……….…...

...

IV.7 Pengujian Pengisian A4……….…………..

IV.8 Pengujian Pengisian Rupiah……….…………

IV.9 Pengujian Pengisian Liter……….………...

IV.10 Kesalahan Memasukkan Kode………..

IV.11 Proses Pengisian……….………

50

53

54

56

57

59

61

62

64

66

66

BAB V. PENUTUP

V.1 Kesimpulan………

V.2

Saran………...

...

67

67

LAMPIRAN A : LISTING PROGRAM

LAMPIRAN B : FOTO ALAT


(6)

Universtasi Kristen Maranatha

vi

DAFTAR TABEL

Tabel II.1 Deskripsi dari Blok Diagram Chip MF1 IC S50………...

Tabel II.2 Konfigurasi Akses

Bit………...………

Tabel II.3 Konfigurasi Akses Bit Untuk Kondisi Akses Blok Sektor Trailer

Tabel II.4 Konfigurasi Akses Bit Untuk Kondisi Akses Blok Sektor Trailer

Tabel II.5 Spesifikasi ACM 120S-

SM……….………..

Tabel II.6 Fungsi Pin J1……….………

Tabel II.7 Fungsi Pin J3……….………

Tabel II.8 Fungsi Pin J6……….

Tabel II.9 Fungsi Pin J7……….………

Tabel II.10 Protokol Binary Frame yang Dikirim……….

Tabel II.11 Deskripsi Protokol Binary……….………….

Tabel II.12 Instruction Set……….

Tabel II.13 Kode Instruksi Reset yang Dikirim……….………

Tabel II.14 Kode Instruksi Select/Pilih yang Dikirim………...

...

Tabel II.15 Kode Instruksi Select/Pilih yang Diterima……….………

Tabel II.16 Kode Instruksi yang Diterima Jika Tidak Ada Kartu……….

Tabel II.17 Kode Instruksi Login yang Dikirim………

Tabel II.18 Kode Instruksi Login yang Diterima………..

Tabel II.19 Kode Instruksi Baca Blok Kartu yang Dikirim………..

Tabel II.20 Kode Instruksi Baca Blok Kartu yang Diterima……….

Tabel II.21 Kode Instruksi Baca Gagal yang Diterima

………….……….

Tabel II.22 Kode Instruksi Baca Nilai Blok Kartu yang Dikirim………..

Tabel II.23 Kode Instruksi Baca Nilai Blok Kartu yang Diter

ima………

Tabel II.24 Kode Instruksi Baca EEPROM Card Reader

yang Dikirim……..

Tabel II.25 Kode Instruksi Baca EEPROM Card Reader yang Diterima

…….

Tabel II.26 Kode Instruksi Tulis Blok Kartu yang Dikirim………….………..

Tabel II.27 Kode Instruksi Tulis Blok Kartu

Berhasil yang Diterima………..

Tabel II.28 Kode Instruksi Tulis Gagal yang Diterima……….…………

Tabel II.29 Kode Instruksi Tulis Nilai Blok Kartu yang Dikirim……….

7

14

15

16

17

18

18

19

19

20

20

21

21

22

22

22

23

23

23

24

24

24

24

25

25

26

26

26

27


(7)

Universtasi Kristen Maranatha

vii

Tabel II.30 Kode Instruksi Tulis Nilai Blok Kartu Berhasil yang Dikirim

…...

Tabel II.31 Kode Instruksi Tulis EEPROM Card Reader yang Dikirim

……..

Tabel II.32 Kode Instruksi Tulis EEPROM Card Reader

Berhasil yang Diterima……….……….

Tabel II.33 Kode Instruksi Penambahan yang dikirim

………..

Tabel II.34 Kode Instruksi Penambahan/Pengurangan Berhasil yang Diterima

Tabel II.35 Kode Instruksi Penambahan/Pengurangan Gagal yang Diterima...

Tabel II.36 Kode Instruksi Pengurangan yang dikirim

………..

Tabel II.37 Fungsi Khusus Port B

……….………….

Tabel II.38 Fungsi Khusus Port C

……….……...

Tabel II.39 Fungsi Khusus Port D

………..………..

Tabel II.40 Pengalamatan Register I/O

……….………...

Tabel III.1 Pengoperasian Keypad

……….…

...

Tabel III.2 Fungsi Pin LCD

………..……….

Tabel III.3 Kode Proses Pengisian

………..…………...

Tabel III.4 Pembagian Peta Memor Kartu

……….…………

Tabel IV.1 Pengujian Pengisian A1

………..……….

Tabel IV.2 Pengujian Pengisian A2

………...

Tabel IV.3 Pengujian Pengisian A3

………...

Tabel IV.4 Pengujian Pengisian A4

………..……….

Tabel IV.5 Pengujian Pengisian Rupiah

……….………..

Tabel IV.6 Pengujian Pengisian

Liter………

27

27

28

28

28

29

29

31

32

32

36

41

42

44

49

57

59

60

62

64

65


(8)

Universtasi Kristen Maranatha

viii

DAFTAR GAMBAR

Gambar II.1 Proses Transmisi Energi

………..

Gambar II.2 Deskripsi Komunikasi Smart Card dengan Card Reader

…..

...

Gambar II.3 Blok Diagram Chip MF1 IC S50

………...…...

Gambar II.4 Transaksi Sekuensial Data

……….………..

Gambar II.5 Organisasi Memori

………..

Gambar II.6 Blok Sektor Trailer

………..

Gambar II.7 Blok Buatan Pabrik

………..………

Gambar II.8 Akses Memori

………...………...

Gambar II.9 Blok Nilai

………..…….……….

Gambar II.10 Format Akses Bit

………..……….

Gambar II.11 Perangkat ACM 120S-SM

……….

Gambar II.12 Papan Circuit ACM 120S-SM

………..

Gambar II.13 konfigurasi kaki (pin) AT-Mega16

……….………..

Gambar II.14 Blok Diagram AT-Mega16

………..………..

Gambar II.15 Arsitektur Mikrokontroler AVR RISC

………..

Gambar II.16 Peta Memori Program AVR AT-Mega16

……….

Gambar II.17 Peta Memori Data AVR AT-Mega16

………..……..

Gambar III.1 Blok Diagram Sistem Perancangan

………...

Gambar III.2 Blok Diagram Perancangan Perangkat Keras

………

Gambar III.3 Skematik Rangkaian Mikrokontroler dengan Card Reader

…..

Gambar III.4 Skematik Mikrokontroler dengan Keypad

……….

Gambar III.5 Skematik Keypad

………

Gambar III.6 Skematik Mikrokontroler dengan LCD

………..

Gambar III.7 Skematik Mikrokontroler dengan LED

………..

Gambar III.8 Flowchart Program Utama

……….

Gambar III.9 Proses Setting Waktu

………..

Gambar III.10 Proses Deteksi Kartu

……….

Gambar III.11 Proses Baca dan Update

………

Gambar IV.1 Tampilan Setting Jam dan Menit

………..………..

Gambar IV.2 Memasukkan Nilai Jam dan Menit Benar

……….……….

5

6

7

8

11

12

12

13

13

14

16

18

31

33

34

35

36

38

39

40

40

41

42

43

46

47

48

49

50

50


(9)

Universtasi Kristen Maranatha

ix

Gambar IV.3 Memasukkan Nilai Jam dan Menit Salah

……….……….

Gambar IV.4 Respon Memasukkan Nilai Jam dan Menit Salah

…….………

Gambar IV.5 Tampilan Setting Tanggal, Bulan dan Tahun

……….

Gambar IV.6 Memasukkan Nilai Tanggal, Bulan dan Tahun Benar

………...

Gambar IV.7 Memasukkan Nilai Tanggal, Bulan dan Tahun Salah

…………

Gambar IV.7 Tampilan Waktu dan Selamat Datang

……….…………..

Gambar IV.8 Tampilan LCD Tidak Update...

Gambar IV.9 Tampilan LCD Update...

Gambar IV.10 Tampilan Nomor Plat, Harga dan Batasan...

Gambar IV.11 Tampilan Pembacaan dan Update Gagal...

Gambar IV.12 Tampilan Sebelum Pengisian A1

……….

Gambar IV.13 Tampilan Kode Pengisian A1

………....

...

Gambar IV.14 Tampilan Setelah Pengisian A1

………..………..

Gambar IV.15 Tampilan Sebelum Pengisian A2

………....

...

Gambar IV.16 Tampilan Kode Pengisian A2

………...

Gambar IV.17 Tampilan Transaksi Gagal

………

Gambar IV.18 Tampilan Sebelum Pengisian A3

……….

Gambar IV.19 Tampilan Kode Pengisian A3

……….……..

Gambar IV.20 Tampilan Sesudah Pengisian A3

……….……….

Gambar IV.21 Tampilan Sebelum Pengisian A4

……….

Gambar IV.22 Tampilan Kode Pengisian A4

………..

Gambar IV.23 Tampilan Sesudah Pengisian A4

………..………

Gambar IV.24 Tampilan Sebelum Pengisian Rupiah

………....

...

Gambar IV.25 Tampilan Kode Pengisian Rupiah

………

Gambar IV.26 Tampilan Sesudah Pengisian Rupiah

………...

Gambar IV.27 Tampilan Sebelum Pengisian Liter

………..

Gambar IV.28 Tampilan Kode Pengisian Liter

………

Gambar IV.29 Tampilan Sesudah Pengisian Liter

……….……..

Gambar IV.30 Tampilan Kode Salah

………..…….

Gambar IV.31 Tampilan Proses Pengisian

……….…………..

51

51

52

52

53

53

54

54

55

55

56

56

57

58

58

58

59

60

60

61

61

62

63

63

63

64

65

65

66

66


(10)

(11)

Universitas Kristen Maranatha

LAMPIRAN A

LISTING PROGRAM


(12)

Universitas Kristen Maranatha

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.3 Standard Automatic Program Generator

© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version : Date : 5/13/2008

Author : F4CG Company : F4CG Comments:

Chip type : ATmega16 Program type : Application Clock frequency : 11.059200 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256

*****************************************************/ #include <mega16.h>

#include <delay.h> #include <exor.h> #include <stdlib.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

#include <lcd.h> //global variabel

unsigned long kdetik,rdetik,rmenit,rjam,rtanggal,rbulan,rtahun,cadangan,vv;

unsigned char cdetik[10],cmenit[10],cjam[10],ctanggal[10],cbulan[10],ctahun[10];//,clt[10],crp[10];

// Timer 2 output compare interrupt service routine interrupt [TIM2_COMP] void timer2_comp_isr(void) {

// Place your code here

TCNT2=0;// jika sudah match set awal lagi if(++kdetik==8920)

{

if(++rdetik==60) {rdetik=0; lcd_clear();

if(++rmenit==60) {rmenit=0; lcd_clear(); if(++rjam==24) {rjam=0; lcd_clear(); rtanggal=rtanggal+1;

if(rtanggal==31 && rbulan==1) { rtanggal=0;

rbulan=rbulan + 1; }

if(rtanggal==28 && rbulan==2 && rtahun%4!=0) { rbulan=rbulan + 1;

}

if(rtanggal==29 && rbulan==2 && rtahun %4==0) { rbulan=rbulan + 1;

}

if(rtanggal==31 && rbulan==3) { rbulan=rbulan + 1;

}

if(rtanggal==30 && rbulan==4) { rbulan=rbulan + 1;


(13)

Universitas Kristen Maranatha

if(rtanggal==31 && rbulan==5) { rbulan=rbulan + 1;

}

if(rtanggal==30 && rbulan==6) { rbulan=rbulan + 1;

}

if(rtanggal==31 && rbulan==7) { rbulan=rbulan + 1;

}

if(rtanggal==31 && rbulan==8) { rbulan=rbulan + 1;

}

if(rtanggal==30 && rbulan==9) { rbulan=rbulan + 1;

}

if(rtanggal==31 && rbulan==10) { rbulan=rbulan + 1;

}

if(rtanggal==30 && rbulan==11) { rbulan=rbulan + 1;

}

if(rtanggal==31 && rbulan==12) { rtahun=rtahun + 1;

rbulan=0; } } } } kdetik=0; itoa(rdetik,cdetik); itoa(rmenit,cmenit); itoa(rjam,cjam); itoa(rtanggal,ctanggal); itoa(rbulan,cbulan); itoa(rtahun,ctahun); if(rtanggal<10) {

Write_SC[0]=0x30; Write_SC[1]=ctanggal[0]; }

else

{Write_SC[0]=ctanggal[0]; Write_SC[1]=ctanggal[1]; }

if(rbulan<10) {

Write_SC[2]=0x30; Write_SC[3]=cbulan[0]; }

else {

Write_SC[2]=cbulan[0]; Write_SC[3]=cbulan[1]; }

Write_SC[4]=ctahun[0]; Write_SC[5]=ctahun[1]; Write_SC[6]= ctahun[2]; Write_SC[7]= ctahun[3]; Write_SC[8]=0x00; Write_SC[9]=0x00; Write_SC[10]=0x00; Write_SC[11]=0x00; Write_SC[12]=0x00; Write_SC[13]=0x00; Write_SC[14]=0x00; Write_SC[15]=0x00;

} }


(14)

Universitas Kristen Maranatha

// Standard Input/Output functions #include <stdio.h>

// Declare your global variables here

unsigned char TEMP1,TEMP2,TEMP3,TEMP4[9];//,TEMP7,TEMP8;

// unsigned char TEMP9,TEMP10,TEMP11,TEMP12,TEMP13,TEMP14,TEMP15,TEMP16; int i,x,y,tp;

unsigned long lt,rp,tahun2,tanggal2,bulan2;

unsigned char blok4[15],blok6[15];

unsigned char input[8],harga[5];//,liter[5],rupiha[7]; unsigned long a;//,b,c,d;

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;

DDRA=0x00; // Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;

DDRB=0x03; // Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00; // Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;

TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00;


(15)

Universitas Kristen Maranatha

ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x02; TCNT2=0x00; OCR2=0x96;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x80;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00;

UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// LCD module initialization lcd_init(16);

//global enable interupts #asm ("sei")

while (1) {

// Place your code here // program utama TEMP4[1]='0'; TEMP4[2]='0'; TEMP4[3]='0'; TEMP4[4]='0'; y=0;

seting: x=1; do

{TEMP1=scan_keypad();

if(TEMP1!=' '&&TEMP1!='D') {

TEMP4[x]=TEMP1; x=x+1;

delay_ms(300); };


(16)

Universitas Kristen Maranatha

for(i=0;i<100;i++) { lcd_gotoxy(0,0); lcd_putsf(" "); lcd_gotoxy(5,0); lcd_putsf("HH:MM"); lcd_gotoxy(5,1); lcd_putchar(TEMP4[1]); lcd_putchar(TEMP4[2]); lcd_putsf(":");

lcd_putchar(TEMP4[3]); lcd_putchar(TEMP4[4]); };

y=y+1; if(y==1000) {lcd_clear(); y=0;}; if(x==1)

{for(i=0;i<300;i++) {

lcd_gotoxy(5,1); lcd_putsf("_"); };

}; if(x==2)

{for(i=0;i<300;i++) {

lcd_gotoxy(6,1); lcd_putsf("_"); };

}; if(x==3)

{for(i=0;i<300;i++) {

lcd_gotoxy(8,1); lcd_putsf("_"); };

}; if(x==4)

{for(i=0;i<300;i++) {

lcd_gotoxy(9,1); lcd_putsf("_"); };

}; if(x==5) x=1; }

while(TEMP1!='D'); lcd_clear();

rjam=TEMP4[1]-0x30; rjam=rjam*10+TEMP4[2]-0x30; rmenit=TEMP4[3]-0x30;

rmenit=rmenit*10+TEMP4[4]-0x30; if(rjam>23 || rmenit>59)

{lcd_gotoxy(0,0); lcd_putsf("Input salah"); lcd_gotoxy(0,1);

lcd_putsf("masukan ulang"); delay_ms(2000);

lcd_clear(); goto seting; };

TEMP4[1]='0'; TEMP4[2]='0'; TEMP4[3]='0'; TEMP4[4]='0'; TEMP4[5]='0'; TEMP4[6]='0'; TEMP4[7]='0'; TEMP4[8]='0';


(17)

Universitas Kristen Maranatha

y=0; seting1: x=1; do

{TEMP1=scan_keypad();

if(TEMP1!=' '&&TEMP1!='D') {

TEMP4[x]=TEMP1; x=x+1;

delay_ms(300); };

for(i=0;i<100;i++) { lcd_gotoxy(0,0); lcd_putsf(" "); lcd_gotoxy(3,0);

lcd_putsf("DD/MM/YYYY"); lcd_gotoxy(3,1);

lcd_putchar(TEMP4[1]); lcd_putchar(TEMP4[2]); lcd_putsf("/");

lcd_putchar(TEMP4[3]); lcd_putchar(TEMP4[4]); lcd_putsf("/");

lcd_putchar(TEMP4[5]); lcd_putchar(TEMP4[6]); lcd_putchar(TEMP4[7]); lcd_putchar(TEMP4[8]); };

y=y+1; if(y==1000) {lcd_clear(); y=0;}; if(x==1)

{for(i=0;i<300;i++) {

lcd_gotoxy(3,1); lcd_putsf("_"); };

}; if(x==2)

{for(i=0;i<300;i++) {

lcd_gotoxy(4,1); lcd_putsf("_"); };

}; if(x==3)

{for(i=0;i<300;i++) {

lcd_gotoxy(6,1); lcd_putsf("_"); };

}; if(x==4)

{for(i=0;i<300;i++) {

lcd_gotoxy(7,1); lcd_putsf("_"); };

}; if(x==5) {for(i=0;i<300;i++) {

lcd_gotoxy(9,1); lcd_putsf("_"); };

}; if(x==6)


(18)

Universitas Kristen Maranatha

{for(i=0;i<300;i++) {

lcd_gotoxy(10,1); lcd_putsf("_"); };

}; if(x==7) {for(i=0;i<300;i++) {

lcd_gotoxy(11,1); lcd_putsf("_"); };

}; if(x==8) {for(i=0;i<300;i++) {

lcd_gotoxy(12,1); lcd_putsf("_"); };

}; if(x==9) x=1; }

while(TEMP1!='D'); lcd_clear();

rtanggal=TEMP4[1]-0x30;

rtanggal=rtanggal*10+TEMP4[2]-0x30; rbulan=TEMP4[3]-0x30;

rbulan=rbulan*10+TEMP4[4]-0x30; cadangan=TEMP4[5]-0x30; rtahun=cadangan*1000; cadangan=TEMP4[6]-0x30; rtahun=rtahun+(cadangan*100); cadangan=TEMP4[7]-0x30; rtahun=rtahun+(cadangan*10); rtahun=rtahun+TEMP4[8]-0x30;

if((rtanggal>31 && rbulan==1)||(rtanggal>28 && rbulan==2 && rtahun%4!=0)|| (rtanggal>29 && rbulan==2 && rtahun %4==0) || (rtanggal>31 && rbulan==3)|| (rtanggal>30 && rbulan==4)||(rtanggal>31 && rbulan==5)||(rtanggal>30 && rbulan==6)|| (rtanggal>31 && rbulan==7)|| (rtanggal>31 && rbulan==8) || (rtanggal>30 && rbulan==9)|| (rtanggal>31 && rbulan==10)|| (rtanggal>30 && rbulan==11)||(rtanggal>31 && rbulan==12)|| (rbulan>12||rbulan==0||rtanggal==0)

)

{lcd_gotoxy(0,0); lcd_putsf("Input salah"); lcd_gotoxy(0,1);

lcd_putsf("masukan ulang"); delay_ms(2000);

lcd_clear(); goto seting1; }; Start:

for(i=1;i<100;i++) { lcd_gotoxy(9,0); lcd_putsf(":"); lcd_gotoxy(10,0); lcd_puts(cdetik); lcd_gotoxy(6,0); lcd_putsf(":"); lcd_gotoxy(7,0); lcd_puts(cmenit); lcd_gotoxy(4,0); lcd_puts(cjam); lcd_gotoxy(1,1); lcd_puts(ctanggal); lcd_gotoxy(3,1); lcd_putsf("/"); lcd_gotoxy(4,1);


(19)

Universitas Kristen Maranatha

lcd_puts(cbulan); lcd_gotoxy(6,1); lcd_putsf("/"); lcd_gotoxy(7,1); lcd_puts(ctahun); TEMP1=''; TEMP2='';

TEMP1=SCR_select(); TEMP2=SCR_login(1); if(TEMP1==4 && TEMP2=='L') goto read;

} lcd_clear(); for(i=1;i<100;i++) {

lcd_gotoxy(0,0);

lcd_putsf("selamat datang"); lcd_gotoxy(0,1);

lcd_putsf("di PT PERTAMINA"); TEMP1='';

TEMP2='';

TEMP1=SCR_select(); TEMP2=SCR_login(1);

if(TEMP1==4 && TEMP2=='L') goto read;

} lcd_clear();

goto Start; read:

TEMP1=SCR_read_block(0x04); blok4[0]=READ_SC[0]; blok4[1]=READ_SC[1]; blok4[2]=READ_SC[2]; blok4[3]=READ_SC[3]; blok4[4]=READ_SC[4]; blok4[5]=READ_SC[5]; blok4[6]=READ_SC[6]; blok4[7]=READ_SC[7]; blok4[8]=READ_SC[8]; blok4[9]=READ_SC[9]; blok4[10]=READ_SC[10]; blok4[11]=READ_SC[11]; blok4[12]=READ_SC[12]; TEMP3=SCR_read_block(0x06); blok6[0]=READ_SC[0]; blok6[1]=READ_SC[1]; blok6[2]=READ_SC[2]; blok6[3]=READ_SC[3]; blok6[4]=READ_SC[4]; blok6[5]=READ_SC[5]; blok6[6]=READ_SC[6]; blok6[7]=READ_SC[7]; TEMP2=SCR_read_value(0x05); lcd_clear();

if(TEMP1=='S'&&TEMP2=='S'&&TEMP3=='S') {

goto read1; } else

{lcd_gotoxy(0,0);

lcd_putsf("maaf pembacaan "); lcd_gotoxy(0,1);

lcd_putsf("gagal"); delay_ms(2000); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("silakan coba "); lcd_gotoxy(0,1);


(20)

Universitas Kristen Maranatha

lcd_putsf("lagi"); delay_ms(2000); lcd_clear(); goto Start; }; read1:

//cek tanggal dan update

tanggal2=(kov_hextobin(blok6[0])*10)+kov_hextobin(blok6[1]); bulan2=(kov_hextobin(blok6[2])*10)+kov_hextobin(blok6[3]);

tahun2=(kov_hextobin(blok6[4])*1000)+(kov_hextobin(blok6[5])*100)+(kov_hextobin(blok6[6])*10)+kov_hextobin(blok 6[7]);

if(rtanggal-tanggal2>=1 && rtanggal-tanggal2<32 &&rbulan-bulan2==0 && rtahun-tahun2==0) { //update tanggal dan write smartcard

do {

SCR_write_value(0x05,1000); }

while(value!=1000); do

{

TEMP1=SCR_write_block(0x06);

}

while(TEMP1!='S');

lcd_gotoxy(0,0);

lcd_putsf("sedang membaca "); delay_ms(1000);

lcd_clear(); }

else if(rtahun-tahun2>=1) {

do {

SCR_write_value(0x05,1000); }

while(value!=1000); do

{

TEMP1=SCR_write_block(0x06);

}

while(TEMP1!='S');

lcd_gotoxy(0,0);

lcd_putsf("sedang membaca "); delay_ms(1000);

lcd_clear(); }

else if(rbulan-bulan2>=1 && rbulan-bulan2<13 &&rtahun-tahun2==0) {

do {

SCR_write_value(0x05,1000); }

while(value!=1000); do

{

TEMP1=SCR_write_block(0x06);

}

while(TEMP1!='S');

lcd_gotoxy(0,0);


(21)

Universitas Kristen Maranatha

delay_ms(1000); lcd_clear(); }

else {

lcd_gotoxy(0,0);

lcd_putsf(" tidak update "); delay_ms(1000);

lcd_clear(); //tidak terjadi apa-apa };

// tampilkan data ke LCD do{

lcd_gotoxy(0,0); lcd_putchar(blok4[0]); lcd_gotoxy(1,0); lcd_putchar(blok4[1]); lcd_gotoxy(2,0); lcd_putchar(blok4[2]); lcd_gotoxy(3,0); lcd_putchar(blok4[3]); lcd_gotoxy(4,0); lcd_putchar(blok4[4]); lcd_gotoxy(5,0); lcd_putchar(blok4[5]); lcd_gotoxy(6,0); lcd_putchar(blok4[6]); lcd_gotoxy(7,0); lcd_putchar(blok4[7]); lcd_gotoxy(8,0); lcd_putchar(blok4[8]);

lcd_gotoxy(0,1); lcd_putchar(blok4[9]); lcd_gotoxy(1,1); lcd_putchar(blok4[10]); lcd_gotoxy(2,1); lcd_putchar(blok4[11]); lcd_gotoxy(3,1); lcd_putchar(blok4[12]);

lcd_putsf("/lt si ");

lcd_gotoxy(11,1); vv=value;

TEMP1=value/1000; lcd_putchar(TEMP1+0x30); lcd_gotoxy(12,1);

value=(value % 1000); TEMP1=value/100; lcd_putchar(TEMP1+0x30); lcd_gotoxy(13,1);

lcd_putchar(','); lcd_gotoxy(14,1); value=(value % 100); TEMP1=value/10;

lcd_putchar(TEMP1+0x30); lcd_gotoxy(15,1);

value=(value % 10); TEMP1=value;

lcd_putchar(TEMP1+0x30); value=vv;

TEMP2=scan_keypad(); }

while(TEMP2!='D');

lcd_clear(); delay_ms(500); // melakukan transaksi


(22)

Universitas Kristen Maranatha

x=0; TEMP1=''; harga[0]=blok4[9]; harga[1]=blok4[10]; harga[2]=blok4[11]; harga[3]=blok4[12];

a=(kov_hextobin(harga[0])*1000)+(kov_hextobin(harga[1])*100)+(kov_hextobin(harga[2])*10)+kov_hextobin(harga[3]); input[1]=' ';

input[2]=' '; input[3]=' '; input[4]=' '; input[5]=' '; input[6]=' '; do

{ do

{TEMP1=scan_keypad(); delay_ms(100);

lcd_gotoxy(x,0); lcd_putchar(TEMP1); }

while(TEMP1==' ');

lcd_gotoxy(x,0); lcd_putchar(TEMP1); delay_ms(400); input[x]=TEMP1; input1[x]=TEMP1; x=x+1;

}

while(TEMP1!='D');

lt=0;

if(input[0]=='D') { lcd_clear(); goto Exit; }

else if(input[0]=='A' && input[1]=='1' && input[2]=='D') { lt=200;

rp=2*a; tp=1; }

else if(input[0]=='A' && input[1]=='2' && input[2]=='D') {lt=1000;

rp=10*a; tp=2; }

else if(input[0]=='A' && input[1]=='3' && input[2]=='D') {

rp=10000; lt=10000*100/a; tp=3;

}

else if(input[0]=='A' && input[1]=='4' && input[2]=='D') { rp=50000;

lt=50000*100/a; tp=4;

}

else if(input[0]=='*' && input[1]!='A' && input[1]!='B'&& input[1]!='C' && input[2]!='A' && input[2]!='B'&& input[2]!='C'

) {

if(x==3 && input[2]=='D') { lt=kov_hextobin(input[1])*100; rp=lt*a/100;

tp=51; }

else if(x==4 && input[3]=='D')


(23)

Universitas Kristen Maranatha

rp=lt*a/100; tp=52; } else {

goto salah; };

}

else if(input[0]=='#'&& input[1]!='A' && input[1]!='B'&& input[1]!='C' && input[2]!='A' && input[2]!='B'&& input[2]!='C'

&& input[3]!='A' && input[3]!='B'&& input[3]!='C' && input[4]!='A' && input[4]!='B'&& input[4]!='C' && input[5]!='A' && input[5]!='B'&& input[5]!='C' && input[6]!='A' && input[6]!='B'&& input[6]!='C'

) {

if(x==6 && input[5]=='D') {

rp=(kov_hextobin(input[1])*1000)+(kov_hextobin(input[2])*100)+(kov_hextobin(input[3])*10)+kov_hextobin(input[4]);

lt=rp*100/a; tp=61; }

else if(x==7 && input[6]=='D') {

rp=(kov_hextobin(input[1])*10000)+(kov_hextobin(input[2])*1000)+(kov_hextobin(input[3])*100)+(kov_hextobin(input[ 4])*10)+(kov_hextobin(input[5]));

lt=rp*100/a; tp=62; } else if(x==8) {

rp=(kov_hextobin(input[1])*100000)+(kov_hextobin(input[2])*10000)+(kov_hextobin(input[3])*1000)+(kov_hextobin(in put[4])*100)+(kov_hextobin(input[5])*10)+(kov_hextobin(input[6]));

lt=rp*100/a; tp=63; } else {

goto salah; };

} else { salah:

lcd_gotoxy(0,0);

lcd_putsf("maaf kode salah"); delay_ms(2000);

lcd_clear(); goto Exit; }; do

{lcd_gotoxy(0,0); lcd_putsf("taruh kartu "); TEMP1=SCR_select(); TEMP2=SCR_login(1);

TEMP3=SCR_read_value(0x05); }

while(TEMP1!=4 && TEMP2!='L' && TEMP3!='S'); lcd_clear();

if(value>=lt) {

SCR_dec(0x05,lt); // tampilan harga dan liter


(24)

Universitas Kristen Maranatha

if(tp==1) {lcd_gotoxy(0,0); lcd_putsf("2 lt"); a=a*2; lcd_gotoxy(0,1); lcd_putsf("Rp "); kov_longtolcd1(a); };

if(tp==2) {lcd_gotoxy(0,0); lcd_putsf("10 lt"); a=a*10; lcd_gotoxy(0,1); lcd_putsf("Rp "); kov_longtolcd1(a); };

if(tp==3) { lcd_gotoxy(0,0); a=100*10000/a; kov_longtolcd2(a);

if(val3==2) {lcd_putchar('0'); lcd_putchar(',');

lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };

if(val3==3)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };

if(val3==4)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };

lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp 10000");

}; if(tp==4) { lcd_gotoxy(0,0); a=100*50000/a; kov_longtolcd2(a);

if(val3==2) {lcd_putchar('0'); lcd_putchar(',');

lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };

if(val3==3)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };


(25)

Universitas Kristen Maranatha

if(val3==4)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };

lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp 50000");

}; if(tp==51) {lcd_gotoxy(0,0); lcd_putchar(input1[1]); lcd_putsf(" lt");

a=a*kov_hextobin(input1[1]); lcd_gotoxy(0,1);

lcd_putsf("Rp "); kov_longtolcd1(a); };

if(tp==52) {lcd_gotoxy(0,0); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putsf(" lt");

a=a*((kov_hextobin(input1[1])*10) + kov_hextobin(input1[2]) ); lcd_gotoxy(0,1);

lcd_putsf("Rp "); kov_longtolcd1(a); }; if(tp==61)

{ lcd_gotoxy(0,0);

a=100*((kov_hextobin(input1[1])*1000)

+(kov_hextobin(input1[2])*100)+(kov_hextobin(input1[3])*10)+ (kov_hextobin(input1[4])*1))/a;

kov_longtolcd2(a);

if(val3==2) {lcd_putchar('0'); lcd_putchar(',');

lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };

if(val3==3)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };

if(val3==4)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };

lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]);


(26)

Universitas Kristen Maranatha

}; if(tp==62) { lcd_gotoxy(0,0);

a=100*((kov_hextobin(input1[1])*10000)

+(kov_hextobin(input1[2])*1000)+(kov_hextobin(input1[3])*100)+ (kov_hextobin(input1[4])*10)+(kov_hextobin(input1[5])*1))/a; kov_longtolcd2(a);

if(val3==2) {lcd_putchar('0'); lcd_putchar(',');

lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };

if(val3==3)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };

if(val3==4)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };

lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]); lcd_putchar(input1[5]); };

if(tp==63) { lcd_gotoxy(0,0);

a=100*((kov_hextobin(input1[1])*100000)

+(kov_hextobin(input1[2])*10000)+(kov_hextobin(input1[3])*1000)+

(kov_hextobin(input1[4])*100)+(kov_hextobin(input1[5])*10)+(kov_hextobin(input1[6])*1))/a; kov_longtolcd2(a);

if(val3==2) {lcd_putchar('0'); lcd_putchar(',');

lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };

if(val3==3)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };

if(val3==4)

{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');

lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };


(27)

Universitas Kristen Maranatha

lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]); lcd_putchar(input1[5]); lcd_putchar(input1[6]); };

PORTB=0x01; delay_ms(lt*100); PORTB=0x00;

} else

{ lcd_gotoxy(0,0); lcd_putsf("maaf transaksi "); lcd_gotoxy(0,1);

lcd_putsf("gagal "); delay_ms(2000); };

lcd_clear();

Exit: goto Start; #include <lcd.h> #include <delay.h> #include <mega16.h> #include <stdio.h> unsigned char TEMP; char READ_SC[17]; char Write_SC[17]; long val;

long value,bin; long val1,val2,val3; unsigned char nilai1[8]; unsigned long rp1; unsigned char exoreg; unsigned char input1[8]; void SCR_reset(void) {

putchar(0x02); putchar(0x01); putchar(0x01); putchar(0x78); putchar(0x78); putchar(0x03); }

char SCR_select(void) {

putchar(0x02); putchar(0x01); putchar(0x01); putchar(0x73); putchar(0x73); putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) { TEMP = getchar();


(28)

Universitas Kristen Maranatha

TEMP = getchar(); TEMP = getchar(); return 1; //no card }; if (TEMP == 0x04) {

TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 4; //standard milfare };

if (TEMP == 0x07) {

TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 7; //ultralight milfare };

if (TEMP == 0x0A) {

TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 0; //unknown };

TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 'X'; //error }

unsigned int exor(unsigned char xbyte,unsigned char ybyte) {

unsigned char ybyte1; unsigned char ybyte2; ybyte1=(xbyte|ybyte); ybyte2=(xbyte & ybyte); ybyte2=~(ybyte2); return((ybyte1&ybyte2)); }

char SCR_login(int sector) {

putchar(0x02); putchar(0x01); putchar(0x09); putchar(0x6C);


(29)

Universitas Kristen Maranatha

putchar(sector);/*sector*/ putchar(0xbb); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff);

TEMP = exor(0x01,0x09); TEMP = exor(TEMP,0x6C); TEMP = exor(TEMP,sector); TEMP = exor(TEMP,0xbb); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff);

putchar(TEMP); putchar(0x03);

TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();

if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

if (TEMP == 'E') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

if (TEMP == 'L') {

TEMP = getchar(); TEMP = getchar(); return 'L'; //Invalid };

TEMP = getchar(); TEMP = getchar(); return 'X';

}

char SCR_read_block(unsigned char block) {


(30)

Universitas Kristen Maranatha

putchar(0x01); putchar(0x02); putchar(0x72);

putchar(block);//block = (sec x 4) + block putchar(exor(0x71,block));

putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) {

TEMP = getchar(); if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

};

if (TEMP == 0x10) { READ_SC[0] = getchar(); READ_SC[1] = getchar(); READ_SC[2] = getchar(); READ_SC[3] = getchar(); READ_SC[4] = getchar(); READ_SC[5] = getchar(); READ_SC[6] = getchar(); READ_SC[7] = getchar(); READ_SC[8] = getchar(); READ_SC[9] = getchar(); READ_SC[10] = getchar(); READ_SC[11] = getchar(); READ_SC[12] = getchar(); READ_SC[13] = getchar(); READ_SC[14] = getchar(); //READ_SC[15] = TEMP = getchar();

TEMP = getchar(); TEMP = getchar();

return 'S'; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }

char SCR_write_block(unsigned char block) {


(31)

Universitas Kristen Maranatha

putchar(0x01); putchar(0x12); putchar(0x77);

putchar(block);//block = (sec x 4) + block putchar(Write_SC[0]);

putchar(Write_SC[1]); putchar(Write_SC[2]); putchar(Write_SC[3]); putchar(Write_SC[4]); putchar(Write_SC[5]); putchar(Write_SC[6]); putchar(Write_SC[7]); putchar(Write_SC[8]); putchar(Write_SC[9]); putchar(Write_SC[10]); putchar(Write_SC[11]); putchar(Write_SC[12]); putchar(Write_SC[13]); putchar(Write_SC[14]); putchar(Write_SC[15]); TEMP = exor(0x01,0x12); TEMP = exor(TEMP,0x77); TEMP = exor(TEMP,block); TEMP = exor(TEMP,Write_SC[0]); TEMP = exor(TEMP,Write_SC[1]); TEMP = exor(TEMP,Write_SC[2]); TEMP = exor(TEMP,Write_SC[3]); TEMP = exor(TEMP,Write_SC[4]); TEMP = exor(TEMP,Write_SC[5]); TEMP = exor(TEMP,Write_SC[6]); TEMP = exor(TEMP,Write_SC[7]); TEMP = exor(TEMP,Write_SC[8]); TEMP = exor(TEMP,Write_SC[9]); TEMP = exor(TEMP,Write_SC[10]); TEMP = exor(TEMP,Write_SC[11]); TEMP = exor(TEMP,Write_SC[12]); TEMP = exor(TEMP,Write_SC[13]); TEMP = exor(TEMP,Write_SC[14]); TEMP = exor(TEMP,Write_SC[15]); putchar(TEMP);

putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();

if (TEMP == 0x01) {

TEMP = getchar(); if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar();


(32)

Universitas Kristen Maranatha

return 'I'; //Invalid };

};

if (TEMP == 0x10) { READ_SC[0] = getchar(); READ_SC[1] = getchar(); READ_SC[2] = getchar(); READ_SC[3] = getchar(); READ_SC[4] = getchar(); READ_SC[5] = getchar(); READ_SC[6] = getchar(); READ_SC[7] = getchar(); READ_SC[8] = getchar(); READ_SC[9] = getchar(); READ_SC[10] = getchar(); READ_SC[11] = getchar(); READ_SC[12] = getchar(); READ_SC[13] = getchar(); READ_SC[14] = getchar(); //READ_SC[15] = TEMP = getchar();

TEMP = getchar(); TEMP = getchar();

return 'S'; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }

unsigned long SCR_read_value(unsigned char block) {

putchar(0x02); putchar(0x01); putchar(0x03); putchar(0x72); putchar(0x76);

putchar(block);//block = (sec x 4) + block putchar(exor(0x06,block));

putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) {

TEMP = getchar(); if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {


(33)

Universitas Kristen Maranatha

TEMP = getchar(); return 'I'; //Invalid };

};

if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = (val << 24); val=getchar(); value = value + (val << 16); val=getchar();

value = value + (val << 8); val=getchar();

value = value + val; TEMP = getchar(); TEMP = getchar(); return 'S'; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }

unsigned long SCR_write_value(unsigned char block,long write_val) {putchar(0x02);

putchar(0x01); putchar(0x07); putchar(0x77); putchar(0x76); putchar(block);

exoreg=exor(0x07 ,block);

TEMP = (write_val >> 24)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (write_val >> 16)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (write_val >> 8)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = write_val & 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); putchar(exoreg);

putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();

if (TEMP == 0x01) {

TEMP = getchar(); if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar();


(34)

Universitas Kristen Maranatha

return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

if (TEMP == 'X') {

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };

};

if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();

value = value + (val << 8); val=getchar();

value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }

long SCR_dec(char block,long dec_val) {

putchar(0x02); putchar(0x01); putchar(0x06); putchar(0x2D); putchar(block); exoreg=0x2A; exoreg=exor(exoreg,block); TEMP = (dec_val >> 24)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (dec_val >> 16)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (dec_val >> 8)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = dec_val & 0x00FF; putchar(TEMP); exoreg=exor(exoreg,TEMP); putchar(exoreg);

putchar(0x03); //answer TEMP = getchar(); TEMP = getchar(); TEMP = getchar();

if (TEMP == 0x01) {


(35)

Universitas Kristen Maranatha

if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

if (TEMP == 'X') {

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };

};

if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();

value = value + (val << 8); val=getchar();

value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }

long SCR_inc(char block,long inc_val) {

putchar(0x02); putchar(0x01); putchar(0x06); putchar(0x2B); putchar(block); exoreg=0x2E; exoreg=exor(exoreg,block); TEMP = (inc_val >> 24)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (inc_val >> 16)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = (inc_val >> 8)& 0x00FF; putchar(TEMP);

exoreg=exor(exoreg,TEMP); TEMP = inc_val & 0x00FF; putchar(TEMP); exoreg=exor(exoreg,TEMP);


(36)

Universitas Kristen Maranatha

putchar(exoreg); putchar(0x03); //answer TEMP = getchar(); TEMP = getchar(); TEMP = getchar();

if (TEMP == 0x01) {

TEMP = getchar(); if (TEMP == 'F') {

TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };

if (TEMP == 'N') {

TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };

if (TEMP == 'I') {

TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };

if (TEMP == 'X') {

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };

};

if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();

value = value + (val << 8); val=getchar();

value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };

TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid card }

char scan_keypad(void) {

int scankey; char keypressed =' '; DDRA = 0x0F; PORTA = 0xFE; scankey = PINA&0xf0; switch (scankey)


(37)

Universitas Kristen Maranatha

{

case 0xE0 : keypressed = '1'; break;

case 0xD0 : keypressed = '2'; break;

case 0xB0 : keypressed = '3'; break;

case 0x70 : keypressed = 'A'; break;

} PORTA = 0xFD; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {

case 0xE0 : keypressed = '4'; break;

case 0xD0 : keypressed = '5'; break;

case 0xB0 : keypressed = '6'; break;

case 0x70 : keypressed = 'B'; break;

} PORTA = 0xFB; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {

case 0xE0 : keypressed = '7'; break;

case 0xD0 : keypressed = '8'; break;

case 0xB0 : keypressed = '9'; break;

case 0x70 : keypressed = 'C'; break;

} PORTA = 0xF7; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {

case 0xE0 : keypressed = '*'; break;

case 0xD0 : keypressed = '0'; break;

case 0xB0 : keypressed = '#'; break;

case 0x70 : keypressed = 'D'; break;

}

return keypressed; }

long kov_hextobin(unsigned char hex) { switch(hex)

{case 0x30: bin = 0; break;

case 0x31: bin = 1; break;

case 0x32: bin = 2; break;

case 0x33: bin = 3; break;

case 0x34: bin = 4; break;

case 0x35: bin = 5; break;

case 0x36: bin = 6; break;


(38)

Universitas Kristen Maranatha

case 0x37: bin = 7; break;

case 0x38: bin = 8; break;

case 0x39:bin = 9; break;

}return bin; }

char kov_longtolcd1 (long nilai_a) { val1=100000;

do {

val2=nilai_a/val1; nilai_a =nilai_a % val1; val1=val1/10; }

while(val2==0); lcd_putchar(val2+0x30); do

{

val2=nilai_a/val1; nilai_a =nilai_a % val1; val1=val1/10;

lcd_putchar(val2+0x30);

}

while(val1!=0); return 0; }

char kov_longtolcd2 (long nilai_b) { val1=100000;

val3=1; nilai1[0]=' '; nilai1[1]=' '; nilai1[2]=' '; nilai1[3]=' '; nilai1[4]=' '; nilai1[5]=' '; nilai1[6]=' '; nilai1[7]=' ';

do {

val2=nilai_b/val1; nilai_b =nilai_b % val1; val1=val1/10; }

while(val2==0); nilai1[0]=val2; do

{

val2=nilai_b/val1; nilai_b =nilai_b % val1; val1=val1/10; nilai1[val3]=val2; val3=val3+1; }

while(val1!=0); return 0; }


(39)

Universitas Kristen Maranatha

LAMPIRAN B

FOTO ALAT


(40)

(41)

Universitas Kristen Maranatha

LAMPIRAN C

SKEMATIK ALAT


(42)

U

niv

ersi

tas

K

r

isten

M

a

rana

tha

PB0 (XCK/T0) 1 PB1 (T1) 2 PB2 (AIN0/INT2) 3 PB3 (AIN1/OC0) 4 PB4 (SS) 5 PB5 (MOSI) 6 PB6 (MISO) 7 PB7 (SCK) 8 RESET 9 PD0 (RXD) 14 PD1 (TXD) 15 PD2 (INT0) 16 PD3 (INT1) 17 PD4 (OC1B) 18 PD5 (OC1A) 19 PD6 (ICP) 20 PD7 (OC2) 21 XTAL2 12 XTAL1 13 GND 11 PC0 (SCL) 22 PC1 (SDA) 23 PC2 (TCK) 24 PC3 (TMS) 25 PC4 (TDO) 26 PC5 (TDI) 27 PC6 (TOSC1) 28 PC7 (TOSC2) 29

AREF 32 AVCC 30

GND 31 PA7 (ADC7) 33 PA6 (ADC6) 34 PA5 (ADC5) 35 PA4 (ADC4) 36 PA3 (ADC3) 37 PA2 (ADC2) 38 PA1 (ADC1) 39 PA0 (ADC0) 40

VCC 10 ATMEGA16 1 2 3 4 5 6 7 8 Key pad 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 LCD 1 2 3 4 5 6 7 Pin J7 Card Reader VCC 1 2 XTAL 22pF 22pF VCC 1K R? RPot C1+ 1 VDD 2 C1-3 C2+ 4 C2- 5 VEE 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 MAX232 LED 1uF 1uF 1uF 1uF VCC VCC R0 4k7 10nF


(43)

1

Pendahuluan

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

I.1

Latar Belakang

Dewasa ini kebutuhan akan pemakaian bahan bakar minyak (BBM) dunia

meningkat dengan cepat tanpa diimbangi oleh sumber penghasil BBM yang

memadai. Hal ini mengakibatkan persediaan BBM dunia menipis sehingga

harga BBM dunia meningkat.

Dalam peningkatan harga BBM dunia sangatlah berpengaruh pada kondisi

ekonomi bangsa Indonesia. Hal ini disebabkan kurangnya persediaan sumber

BBM di Indonesia sehingga pemerintah perlu mengimport BBM dari luar. Jika

pemerintah terus-menerus mengsubsidi harga BBM akibatnya APBN Negara

akan defisit sehingga diperlukan suatu solusi untuk penyaluran subsidi yang

tepat.

Salah satu solusi untuk menyelesaikan masalah penyaluran subsidi

tersebut adalah dengan mengatur harga pembelian BBM bersubsidi yang

disesuaikan dengan harga pajak kendaraan bermotor yang menerima subsidi

BBM. Selain mengatur harga pembelian, jumlah pembelian pun perlu dibatasi

agar tidak disalahgunakan dengan melakukan penimbunan. Solusi ini dapat

direalisasikan dengan menerapkan suatu sistem menggunakan Smart Card

sebagai kartu identitas dalam pembelian BBM. Sehingga pada tugas akhir ini

penulis membuat rancangan setiap pemilik kendaraan yang menerima subsidi

harus memiliki kartu smart card. Kartu tersebut akan digunakan sebagai

pembatas dan pengatur harga dalam pembelian BBM sehingga pada setiap SPBU

bersubsidi terpasang suatu perangkat Smart Card Reader yang dihubungkan pada

suatu panel dan layar LCD yang digunakan untuk membaca batasan dan harga

pembelian BBM.

I.2

Identifikasi Masalah

Bagaimana mengimplementasikan Sistem Pembatasan Pembelian dan

pengaturan harga BBM bersubsidi menggunakan Smart Card?


(44)

2

Pendahuluan

Universitas Kristen Maranatha

I.3

Tujuan

Membuat Sistem Pembatasan Pembelian dan pengaturan harga BBM

bersubsidi menggunakan Smart Card.

I.4

Pembatasan Masalah

Alat yang dibuat tidak dihubungkan ke mesin pengisian BBM

Proses pengisian BBM disimulasikan menggunakan LED

Informasi yang disimpan pada kartu yaitu : no plat, harga pembelian,

batasan pembelian, dan tanggal

I.5

Spesifikasi Alat Yang Digunakan

Mikrokontroler AVR AT-Mega 16

LCD

Keypad

Smart Card MF1Mifare IC MF1 IC S50

Smart Card Reader ACM 120S-SM

LED

Max 232

I.6

Sistematika Penulisan

BAB I

PENDAHULUAN

Bab ini akan membahas mengenai Latar Belakang Masalah,

Identifikasi Masalah, Tujuan Masalah, Batasan Masalah,

Spesifikasi Alat, dan Sistematika Penulisan.

BAB II

LANDASAN TEORI

Bab ini akan menjelaskan tentang teori-teori yang berhubungan

dalam penyusunan laporan ini yaitu meliputi : Teknologi RFID

(Radio Frequency Identification), Smart Card jenis Mifare 1K,


(45)

3

Pendahuluan

Universitas Kristen Maranatha

Card Reader jenis ACM120S-SM , Mikrokontroler AVR

ATmega16, Komunikasi Serial RS232.

BAB III PERANCANGAN DAN REALISASI

Bab ini akan dibahas mengenai perancangan dan realisasi

dalam pembatasan pembelian dan pengaturan harga BBM

dengan Smart Card, baik secara hardware maupun software.

BAB IV

PENGUJIAN ALAT

Bab ini akan membahas mengenai pengujian alat dalam

pembatasan pembelian dan pengaturan harga BBM dengan Smart

Card.

BAB IV

PENUTUP


(46)

Univesitas Kristem Maranatha

67

BAB V

KESIMPULAN DAN SARAN

V.1

Kesimpulan

Dari pembahasan laporan tugas akhir ini, dapat disimpulkan bahwa:

1.

Aplikasi pengaturan harga dan pembatasan pembelian BBM

subsidi dengan menggunakan smart card telah berhasil

direalisasikan.

2.

Dari hasil pengujian diperoleh keberhasilan 100%.

V.2

Saran

Untuk pengembangan selanjutnya, penulis mempunyai beberapa saran

sebagai berikut:

1.

Alat ini dapat dilanjutkan dengan merealisasikan pada mesin

pengisian BBM.

2.

Pada alat ini saat power off maka timer akan reset sehingga

diperlukan setting waktu ulang. Alat ini dapat dipasang RTC (real

time clock) dengan baterai untuk memperbaiki agar tidak

memerlukan proses setting waktu yang berulang-ulang.

3.

Alat ini dapat dikembangkan dengan menggunakan database pada

komputer dan dapat melakukan proses pembayaran.

4.

Selain untuk aplikasi pengaturan harga dan pembatasan pada

BBM, alat ini dapat juga diaplikasikan pada bidang lain seperti :

pembatasan pembelian pupuk subsidi, pembatasan peminjaman

buku pada perpustakaan, dan lain-lain.


(47)

Univesitas Kristem Maranatha

68

DAFTAR PUSTAKA

1.

Andrianto,Heri.2008. Buku Panduan Pelatihan Mikrokontroler AVR

ATMega16. Universitas Kristen Maranatha.

2.

Green,DC.1995. Komunikasi Data. Penerbit Andi yogyakarta

3.

Roddy dan Coolen.1984. Komunikasi Elektronika. Penerbit Erlangga.

4.

Shoji, Shigeki.2002. Buku Pegangan Teknik Telekomunikasi. PT

Pradnya Paramita.

5.

http://en.wikipedia.org/wiki/RFID

6.

http://id.wikipedia.org/wiki/RFID

7.

http://www.acs.com.hk/drivers-manual.php?driver=ACM120S

8.

http://www.acs.com.hk/drivers-manual.php?driver=ACR120

9.

www.circuitcella.com

10.

www.mytutorialcafe.com


(1)

tas K r isten M a rana tha PB0 (XCK/T0) 1 PB1 (T1) 2 PB2 (AIN0/INT2) 3 PB3 (AIN1/OC0) 4 PB4 (SS) 5 PB5 (MOSI) 6 PB6 (MISO) 7 PB7 (SCK) 8 RESET 9 PD0 (RXD) 14 PD1 (TXD) 15 PD2 (INT0) 16 PD3 (INT1) 17 PD4 (OC1B) 18 PD5 (OC1A) 19 PD6 (ICP) 20 PD7 (OC2) 21 XTAL2 12 XTAL1 13 GND 11 PC0 (SCL) 22 PC1 (SDA) 23 PC2 (TCK) 24 PC3 (TMS) 25 PC4 (TDO) 26 PC5 (TDI) 27 PC6 (TOSC1) 28 PC7 (TOSC2) 29

AREF 32 AVCC 30

GND 31 PA7 (ADC7) 33 PA6 (ADC6) 34 PA5 (ADC5) 35 PA4 (ADC4) 36 PA3 (ADC3) 37 PA2 (ADC2) 38 PA1 (ADC1) 39 PA0 (ADC0) 40

VCC 10 ATMEGA16 1 2 3 4 5 6 7 8 Key pad 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 LCD 1 2 3 4 5 6 7 Pin J7 Card Reader VCC 1 2 XTAL 22pF 22pF VCC 1K R? RPot C1+ 1 VDD 2 C1-3 C2+ 4 C2- 5 VEE 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 MAX232 1uF 1uF 1uF 1uF VCC VCC R0 4k7 10nF


(2)

1

Pendahuluan

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

I.1 Latar Belakang

Dewasa ini kebutuhan akan pemakaian bahan bakar minyak (BBM) dunia meningkat dengan cepat tanpa diimbangi oleh sumber penghasil BBM yang memadai. Hal ini mengakibatkan persediaan BBM dunia menipis sehingga harga BBM dunia meningkat.

Dalam peningkatan harga BBM dunia sangatlah berpengaruh pada kondisi ekonomi bangsa Indonesia. Hal ini disebabkan kurangnya persediaan sumber BBM di Indonesia sehingga pemerintah perlu mengimport BBM dari luar. Jika pemerintah terus-menerus mengsubsidi harga BBM akibatnya APBN Negara akan defisit sehingga diperlukan suatu solusi untuk penyaluran subsidi yang tepat.

Salah satu solusi untuk menyelesaikan masalah penyaluran subsidi tersebut adalah dengan mengatur harga pembelian BBM bersubsidi yang disesuaikan dengan harga pajak kendaraan bermotor yang menerima subsidi BBM. Selain mengatur harga pembelian, jumlah pembelian pun perlu dibatasi agar tidak disalahgunakan dengan melakukan penimbunan. Solusi ini dapat direalisasikan dengan menerapkan suatu sistem menggunakan Smart Card sebagai kartu identitas dalam pembelian BBM. Sehingga pada tugas akhir ini penulis membuat rancangan setiap pemilik kendaraan yang menerima subsidi harus memiliki kartu smart card. Kartu tersebut akan digunakan sebagai pembatas dan pengatur harga dalam pembelian BBM sehingga pada setiap SPBU bersubsidi terpasang suatu perangkat Smart Card Reader yang dihubungkan pada suatu panel dan layar LCD yang digunakan untuk membaca batasan dan harga pembelian BBM.

I.2 Identifikasi Masalah

Bagaimana mengimplementasikan Sistem Pembatasan Pembelian dan pengaturan harga BBM bersubsidi menggunakan Smart Card?


(3)

Universitas Kristen Maranatha

I.3 Tujuan

Membuat Sistem Pembatasan Pembelian dan pengaturan harga BBM bersubsidi menggunakan Smart Card.

I.4 Pembatasan Masalah

Alat yang dibuat tidak dihubungkan ke mesin pengisian BBM Proses pengisian BBM disimulasikan menggunakan LED

Informasi yang disimpan pada kartu yaitu : no plat, harga pembelian, batasan pembelian, dan tanggal

I.5 Spesifikasi Alat Yang Digunakan

Mikrokontroler AVR AT-Mega 16 LCD

Keypad

Smart Card MF1Mifare IC MF1 IC S50 Smart Card Reader ACM 120S-SM

LED Max 232

I.6 Sistematika Penulisan

BAB I PENDAHULUAN

Bab ini akan membahas mengenai Latar Belakang Masalah, Identifikasi Masalah, Tujuan Masalah, Batasan Masalah, Spesifikasi Alat, dan Sistematika Penulisan.

BAB II LANDASAN TEORI

Bab ini akan menjelaskan tentang teori-teori yang berhubungan dalam penyusunan laporan ini yaitu meliputi : Teknologi RFID (Radio Frequency Identification), Smart Card jenis Mifare 1K,


(4)

3

Pendahuluan

Universitas Kristen Maranatha

Card Reader jenis ACM120S-SM , Mikrokontroler AVR

ATmega16, Komunikasi Serial RS232.

BAB III PERANCANGAN DAN REALISASI

Bab ini akan dibahas mengenai perancangan dan realisasi dalam pembatasan pembelian dan pengaturan harga BBM dengan Smart Card, baik secara hardware maupun software.

BAB IV PENGUJIAN ALAT

Bab ini akan membahas mengenai pengujian alat dalam pembatasan pembelian dan pengaturan harga BBM dengan Smart

Card.

BAB IV PENUTUP


(5)

Univesitas Kristem Maranatha 67

V.1 Kesimpulan

Dari pembahasan laporan tugas akhir ini, dapat disimpulkan bahwa:

1. Aplikasi pengaturan harga dan pembatasan pembelian BBM

subsidi dengan menggunakan smart card telah berhasil direalisasikan.

2. Dari hasil pengujian diperoleh keberhasilan 100%.

V.2Saran

Untuk pengembangan selanjutnya, penulis mempunyai beberapa saran sebagai berikut:

1. Alat ini dapat dilanjutkan dengan merealisasikan pada mesin pengisian BBM.

2. Pada alat ini saat power off maka timer akan reset sehingga diperlukan setting waktu ulang. Alat ini dapat dipasang RTC (real time clock) dengan baterai untuk memperbaiki agar tidak memerlukan proses setting waktu yang berulang-ulang.

3. Alat ini dapat dikembangkan dengan menggunakan database pada komputer dan dapat melakukan proses pembayaran.

4. Selain untuk aplikasi pengaturan harga dan pembatasan pada BBM, alat ini dapat juga diaplikasikan pada bidang lain seperti : pembatasan pembelian pupuk subsidi, pembatasan peminjaman buku pada perpustakaan, dan lain-lain.


(6)

Univesitas Kristem Maranatha 68

DAFTAR PUSTAKA

1. Andrianto,Heri.2008. Buku Panduan Pelatihan Mikrokontroler AVR

ATMega16. Universitas Kristen Maranatha.

2. Green,DC.1995. Komunikasi Data. Penerbit Andi yogyakarta

3. Roddy dan Coolen.1984. Komunikasi Elektronika. Penerbit Erlangga. 4. Shoji, Shigeki.2002. Buku Pegangan Teknik Telekomunikasi. PT

Pradnya Paramita.

5. http://en.wikipedia.org/wiki/RFID

6. http://id.wikipedia.org/wiki/RFID

7. http://www.acs.com.hk/drivers-manual.php?driver=ACM120S

8. http://www.acs.com.hk/drivers-manual.php?driver=ACR120

9. www.circuitcella.com

10.www.mytutorialcafe.com