41
BAB III METODE PENELITIAN
Metode penelitian yang digunakan dalam penelitian tugas akhir ini adalah studi kepustakaan dan melakukan percobaan. Dengan ini penulis berusaha untuk mengumpulkan data, informasi serta materi–materi dasar yang bersifat teoritis yang sesuai dengan permasalahan. Hal tersebut diperoleh dari buku, materi kuliah, literatur melalui browsing di internet dan melakukan berbagai percobaan. Dari data-data yang diperoleh penulis berusaha menerapkannya untuk menyelesaikan permasalahan yang ada dalam penelitian ini. Pada sub bab ini akan membahas tentang perancangan sistem secara keseluruhan dari penelitian ini, yaitu tentang perancangan perangkat keras dan perangkat lunak. Keseluruhan sistem pada penelitian ini sesuai dengan blok diagram pada Gambar 3.1.
KOMPUTER
MAX 232 Converter
Driver Baris
Display DOT MATRIK
Mikrokontroler Driver Kolom Serial RTC
Gambar 3.1 Blok Diagram rangkaian keseluruhan.
42
3.1
Perancangan Perangkat Keras Langkah selanjutnya dalam perancangan perangkat keras pada sistem
kalender digital menggunakan dot matrix ini adalah merealisasikan rangkaian pada diagram diatas. Rangkaian-rangkaian yang akan direalisasikan adalah: 1.
Rangkaian Minimum Sistem AT89S52.
2.
Rangkaian Komunikasi Serial RS232.
3.
Rangkaian Serial RTC DS1307.
4.
Rangkaian Driver Baris (TIP42).
5.
Rangkaian Shift Register 74LS164.
6.
Rangkaian Display Dot Matrix.
Dalam perancangan perangkat lunak terdapat proses-proses sebagai berikut: program utama, program interrupt serial, program konversi kalender . 3.1.1
Rangkaian Minimum Sistem AT89S52 Rangkaian mikrokontroler berfungsi sebagai pusat pengontrol dari
rangkaian Kalender Digital ini. Pada Tugas Akhir ini digunakan mikrokontroler keluaran ATMEL yaitu Mikrokontroler AT89S52. Mikrokontroler ini mempunyai 40 pin dengan 4 jalur port yaitu Port 0, Port 1, Port 2, dan Port 3. Untuk mengetahui lebih lanjut konfigurasi mikrokontroler sebagai pengendali sistem, skematik rangkaian terlihat pada Gambar 3.2.
43
RN2
U2
Baris1 Baris2 Baris3 Baris4 Baris5 Baris6 Baris7 Baris8
XTAL1 XTAL2
39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 19 18 31 9
VCC
40 30pF XTAL1
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD PSEN
XTAL1 XTAL2
ALE/PROG EA/VPP RST VCC AT89S52
21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
A8 A9 A10 A11 SDA SCL
P3.0 Rx P3.1 Tx DATA CLOCK WE OE
29 30
GND
5v
D0 D1 D2 D3 D4 D5 D6 D7
20
2 3 4 5 6 7 8 9 1 RN2 R-PACK 2 3 4 5 6 7 8 9 R-PACK
Y1 CRY STAL 11.0592Mhz 30pF
XTAL2
Gambar 3.2 Minimum sistem Mikrokontroler AT89S52
Pada skematik yang tecantum pada gambar 3.2 terdapat beberapa port yang berhubungan dengan komponen yang lainnya. Port 0 dihubungkan dengan komponen 74HC573 yang berfungsi sebagai penyangga data yang diterima dari mikrokontroler. Port 1 terhubung dengan rangkaian driver baris. Pada port 1 ini digunakan untuk melakukan scanning 8 baris. Port 3 (P3.4 dan P3.5) masingmasing berfungsi sebagai input data dan input clock pada shift register. Pin RxD dan TxD berfungsi sebagai penerima dan pengirim data serial ke komputer, terhubung melalui MAX 232 sebagai konverter. Pada rangkaian mikrokontroler ini, digunakan komponen XTAL 11,0592 Mhz yang terhubung pada pin XTAL1 dan XTAL2.
A.
Rangkaian Programmer
44
Penulis menggunakan rangkaian programmer yang terdiri dari sebuah IC 74LS244 yang berguna sebagai buffer dan kabel downloader dengan interface DB25 yang terhubung pada port LPT1 pada komputer dalam melakukan proses download program dalam format .HEX dari komputer ke mikrokontroler. Sedangkan software yang digunakan adalah Atmel Microcontroller ISP Software. Skematik kabel downloader yang digunakan untuk mendownload program ke mikrokontroler seperti pada Gambar 3.3. P2
1 19
A1 A2 A3 A4 A5 A6 A7 A8 1OE 2OE
VCC
2 4 6 8 11 13 15 17
74LS244 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
18 16 14 12 9 7 5 3
1 2 3 4 5 6
HEADER 6
10
U11
20
J1
GND
1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 CONNECTOR DB25
Gambar 3.3 Rangkaian kabel downloader pada port LPT
Setelah kabel downloader terhubung ke Port paralel pada PC melalui DB25 dan terhubung ke mikrokontroler melalui konektor 6 pin. Tahap selanjutnya adalah melakukan download program ke mikro. Penulis menggunakan software Atmel Microcontroller. Antarmuka software dapat dilihat pada Gambar 3.4.
45
Gambar 3.4 Atmel Microcontroller ISP Software
Konektor 6 pin pada Gambar 3.3 dihubungkan terlebih dahulu pada Mikrokontroler AT89S52 jika akan melakukan proses download program. Konektor yang terhubung ke mikro seperti pada Gambar 3.5. J2 TR MOSI MISO SCK RESET
1 2 3 4 5 6 downloader
Gambar 3.5 Konektor downloader pada Mikrokontroler
3.1.2
Rangkaian Komunikasi Serial RS232 Data yang diterima dari komputer melalui serial port adalah berupa
tegangan dengan standar RS-232, yaitu antara -3 sampai -25 Volt untuk kondisi high dan +3 sampai +25 Volt untuk kondisi low. Sedangkan mikrokontroler bekerja dalam level tegangan TTL, yaitu +5 Volt untuk kondisi high dan 0 Volt
46
untuk kondisi low. MAX232 akan mengubah level tegangan RS-232 menjadi level tegangan TTL agar dapat diolah oleh mikrokontroler. Demikian pula sebaliknya, data yang dikirim mikrokontroler akan diubah ke level tegangan RS-232 agar dapat diolah oleh komputer. Pengiriman data dari program visual di PC ke mikrokontroler menggunakan komunikasi serial RS232. Diagram skematik dari rangkaian serial terlihat pada Gambar 3.6. P3.0 Rx P3.1 Tx U1
16 P1
VCC
13 8 C1
11 10
+ 1 3 4 5 2 6
10u +
C3
10u
C2 +
R1IN VCCR1OUT R2IN R2OUT T1IN T2IN
T1OUT T2OUT
12 9
5 9 4
14 7
8 3 7 2
C1+ C1C2+ C2V+ 15 V-
6 1 DB9
GND
10u
MAX232
+
C4
10u
Gambar 3.6 Rangkaian skematik RS232
Penulis menggunakan komunikasi serial mode 1 dengan baudrate sebesar 9600 bps. Sehingga pengaturan register SCON dan register PCON adalah seperti pada tabel 3.1 dan tabel 3.2. Tabel 3.1 Susunan bit dalam register SCON SM0
SM1
SM2
REN
0
1
0
1
TB8
0
Dari tabel 3.1 maka SCON bernilai 0x50 dimana
RB8
TI
RI
0
0
0
SM0 = 0 dan SM1 = 1
berarti menggunakan mode 1, sedangkan REN = 1 berarti mengaktifkan port serial untuk menerima data.
47
Tabel 3.2 Susunan bit dalam register PCON SMOD
-
-
-
GF1
GF0
PD
IDL
0
0
0
0
0
0
0
0
Dari tabel 3.2 maka PCON bernilai 0 x 00,
3.1.3
Rangkaian Serial RTC DS1307 Real Time Clock DS1307 digunakan untuk merancang jam digital. RTC
ini berkomunikasi secara serial dengan mikrokontroler melalui kaki SDA (serial data) dan SCL (serial clock). Pada rangkaian ini DS1307 beroperasi sebagai slave dengan mengirimkan data waktu ke mikrontroler yang berfungsi sebagai master. Konfigurasi dari pin RTC DS1307 yang digunakan dalam Tugas Akhir ini dapat dilihat pada Gambar 3.7.
Y3
U45
3 8
C1 100nF
SDA SQW/OUT
5
SDA
7
SCL VBAT VCC
BT2 CR2032 3V
4
6
SCL
X1 X2
GND
1 2
32.768kHz VCC
DS1307
GND
Gambar 3.7 Rangkaian Real Time Clock DS1307
3.1.4
Rangkaian Driver Baris (TIP42) Pada rangkaian kontroler memiliki 8 pasang transistor yang berfungsi
sebagai driver baris. Dimana setiap pasang terdiri dari transistor 9013 dan TIP42. Rangkaian driver baris terhubung ke Port 1 mikrokontroler dan ke baris dot matrix. Agar lebih jelas mengenai uraian diatas, dapat dilihat skematik driver baris seperti Gambar 3.8.
1
BRS 1
Q3
1
B1
Q5A C9013
BRS 2
1
B1
VCC Q6A C9013
2
BARIS7
Q11A C9013
1
2
R93
BRS 6
Q3
3
VCC
Q11A C9013
R93
Q3
BARIS3
3
2
BARIS6
1
2
R93
VCC
3
VCC
BRS 5
R93
Q3
BARIS2
Q11A C9013
3
B1
2
BARIS5
BRS 3
R93
Q3
BRS 7
Q3 VCC
VCC BARIS4
2
BARIS8
3 2
1 R93
Q11A C9013
1
Q11A C9013
3
R93
Q4A C9013
1
2
BARIS1
3
3
48
R93
BRS 4
BRS 8
Q3
Q3 VCC VCC
Gambar 3.8 Rangkaian driver baris transistor TIP42
Output dari mikrokontroler tidak cukup kuat untuk menyalakan satu baris led dot matrix yang terdiri atas 288 led. Dibutuhkan transistor yang berdaya besar untuk memperkuat arus dari mikrokontroler agar dapat menyalakan atau mematikan tiap baris led dot matrix. Penulis menggunakan 2 buah transistor PNP tipe TIP42 dan 9013 yang dirangkai seperti pada gambar 3.8. Transistor berfungsi sebagai saklar untuk menyalakan atau mematikan tiap baris dari led dot matrix. Display dot matrix terdiri dari 8 baris led sehingga digunakan 8 pasang rangkaian dengan setiap pasang transistor terhubung ke Port P1.0 sampai Port 1.7. Pin basis pada TIP42 terhubung ke mikrokontroler, pin collector sebagai output yang terhubung ke pin baris pada led dot matrix, sedangkan pin emitter terhubung pada tegangan 5V. Rangkaian driver ini mempunyai karakteristik akan aktif jika mendapat input low. Saat output dari mikrokontroler high, maka
49
transistor 9013 akan ON, tegangan di kolektor akan menjadi 0 V dan transistor TIP42 akan OFF, sehingga baris led akan mati. Sebaliknya jika output mikrokontroler low, maka transistor 9013 akan OFF, tegangan di kolektor 9013 akan menjadi 12 V dan transistor TIP42 akan ON sehingga baris led akan hidup.
3.1.5
Rangkaian Shift Register 74LS164 Rangkaian shift register digunakan sebagai driver kolom pada display dot
matrix. Input pada IC shift register berupa data, clock dan clear dimana masingmasing terhubung ke Port P3.4, Port P3.5 dan VCC dari mikrokontroler. Output shift register terhubung pada kolom display dot matrix. Agar lebih jelas tentang konfigurasi pin dari IC 74LS164, dapat dilihat skematik rangkaian pada Gambar 3.9. C6
CLR
R1 R2 R3 R4 R5 R6 R7 R8
H1 H2 H3 H4 H5 H6 H7 H8
H8
CLK VCC
U16 1 2
8 9
VCC
3 4 5 6 10 11 12 13
A B
CLK CLR
74LS164
GND
CLK
QA QB QC QD QE QF QG QH
7
A B
7
VCC 9
14
14 CLK 8
U16
VCC
DATA 1 2
GND
DATA CLK VCC
C6
QA QB QC QD QE QF QG QH
3 4 5 6 10 11 12 13
R9 R10 R11 R12 R13 R14 R15 R16
H9 H10 H11 H12 H13 H14 H15 H16
R25 R26 R27 R28 R29 R30 R31 R32
H25 H26 H27 H28 H29 H30 H31 H33 H32
74LS164
C6
14
14
C6
CLR
3 4 5 6 10 11 12 13
74LS164
R17 R18 R19 R20 R21 R22 R23 R24
H17 H18 H19 H20 H21 H22 H23 H24
H24
U16 1 2
CLK
8
VCC
9
VCC
QA QB QC QD QE QF QG QH
A B
CLK CLR
GND
CLK
7
VCC 9
A B
7
CLK 8
VCC
U16 1 2
GND
H16
QA QB QC QD QE QF QG QH
3 4 5 6 10 11 12 13
74LS164
Gambar 3.9 Rangkaian Shift Register 74LS164
Pada rangkaian display dot matrix terdiri dari 288 kolom sehingga masingmasing kolom tidak dapat terhubung langsung ke port mikrokontroler. Shift
50
Register digunakan untuk mengatasi masalah ini, dimana cukup dipakai 3 output dari mikrokontroler untuk mengatur seluruh 288 kolom led. Shift Register mempunyai 2 input A dan B yang terhubung oleh gerbang ’and’, kedua input ini dihubungkan jadi satu dan dihubungkan ke Port P3.5 dari mikrokontroler. Output dan Shift Register hanya ada 8 (QA-QH) jadi dipakai 36 buah Shift Register untuk mengatur 288 kolom LED. Output terakhir dari Shift Register (QH) dihubungkan ke input Shift Register yang berikutnya agar semua data dapat digeser oleh Shift Register. Semua kaki Clock dari Shift Register terhubung ke Port P3.4 dan semua kaki Clear terhubung ke VCC agar semua Shift Register berjalan secara sinkron. Rangkaian ini menggunakan sistem SIPO (Serial Input Parallel Output).
3.1.6
Rangkaian Display Dot Matrix Dalam perancangan kalender digital dengan dot matrix ini, ukuran display
yang digunakan 48x48, dimana mikrokontroler mempunyai display ukuran 8x288. Pola display tidak memanjang tetapi berbentuk persegi, karena dot matrix yang disusun ke bawah secara rapat sehingga membentuk suatu display dot matrix ukuran 48x48. Maksud dari rangkaian display dot matrix diperjelas melalui skematik seperti pada gambar 3.10.
51
J3
J2 H1 BRS1 H2 BRS2 H3 BRS3 H4 BRS4
2 4 6 8 10 12 14 16 18 20 22 24
1 3 5 7 9 11 13 15 17 19 21 23
H5
H9
BRS5 H6
BRS1 H10
BRS6 H7
BRS2 H11
BRS7 H8
BRS3 H12
BRS8
BRS4
1 3 5 7 9 11 13 15 17 19 21 23
BRS1 H18 BRS2 H19 BRS3 H20 BRS4
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
H13 BRS5 H14 BRS6 H15 BRS7 H16 BRS8
DOT MATRIX J4
DOT MATRIX J5 H17
2 4 6 8 10 12 14 16 18 20 22 24
H21
H25
BRS5 H22
BRS1 H26
BRS6 H23
BRS2 H27
BRS7 H24
BRS3 H28
BRS8
BRS4
DOT MATRIX
1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24
H29 BRS5 H30 BRS6 H31 BRS7 H32 BRS8
DOT MATRIX
Gambar 3.10. Rangkaian display dot matrix
3.1
Perancangan Perangkat Lunak Dalam perancangan perangkat lunak dibagi atas 2 jenis : perancangan
perangkat lunak pada komputer dan perancangan perangkat lunak pada mikrokontroler.
3.2.1
Perangkat Lunak pada Komputer Perancangan perangkat lunak pada komputer berfungsi sebagai interface
dan digunakan dalam proses konversi kalender yang selanjutnya digunakan untuk mengirimkan data pada mikrokontroler. Proses-proses utama pada perangkat lunak komputer antara lain proses konversi kalender dan proses menentukan hari dari kalender yang di-input-kan. Pada perancangan perangkat lunak, penulis menggunakan software Borland Delphi 5.0. Software ini berfungsi untuk melakukan konversi sistem penanggalan yang di-input-kan. Kalender Masehi yang akan ditampilkan ke
52
display dot matrix dilakukan proses konversi terlebih dahulu menjadi beberapa macam kalender serta menampilkan hari. A. Proses Penentuan Hari Proses penentuan hari bertujuan untuk mengetahui hari dari kalender yang telah di-input-kan. Hal ini dikarenakan terkadang kita tidak mengetahui hari pada kalender di masa lalu ataupun di masa mendatang. Kalender Masehi yang dijadikan input memiliki rentang waktu dari tahun 2000 sampai tahun 2099. Berikut ini algoritma untuk mencari hari dalam kalender : a y m
14 − month 12 = year – a = month + 12a – 2
=
(3.2)
Untuk kalender Masehi: d
= (day + y +
31m y y y + + ) mod 7 12 4 100 400
Dari perhitungan d akan didapatkan nilai sisa pembagian yang memiliki arti : 0 = Hari Minggu 1 = Hari Senin 2 = Hari Selasa. 3 = Hari Rabu 4 = Hari Kamis 5 = Hari Jumat 6 = Hari Sabtu
53
Listing program proses penentuan hari seperti berikut: begin Dum1 := (14 - Month) DIV 12; Dum2 := Year - Dum1; Dum3 := Month + (12 * Dum1) - 2; Day := (Date + Dum2 + (Dum2 DIV 4) - (Dum2 DIV 100) + (Dum2 DIV 400) + (31*Dum3) DIV 12); Day := Day MOD 7; Case Day of 0 : Label21.Caption := 'Senin'; 1 : Label21.Caption := 'Selasa'; 2 : Label21.Caption := 'Rabu'; 3 : Label21.Caption := 'Kamis'; 4 : Label21.Caption := 'Jumat'; 5 : Label21.Caption := 'Sabtu'; 6 : Label21.Caption := 'Minggu'; end; end;
B. Proses Konversi Kalender Proses konversi kalender ini meliputi konversi dari kalender Masehi ke kalender Hijriyah, kalender Cina, kalender Jawa. Proses konversi kalender tercantum dalam listing program berikut: // Konversi kalender Masehi ke Hijriyah Begin if ((y2>1582) OR((y2=1582) AND (m2>10))OR((y2=1582) AND (m2=10) AND (d2>14))) then jd := intPart((1461*(y2+4800+intPart((m2-14)/12)))/4)+ intPart((367*(m2-2-12*(intPart((m2-14)/12))))/12)intPart((3*(intPart( (y2+4900+intPart((m2-14)/12))/100)))/4)+d2-32075 else jd := 367*y2-intPart((7*(y2+5001+intPart((m2-9)/7)))/4)+ intPart((275*m2)/9)+d2+1729777; L := jd-1948440+10632; N := intPart((L-1)/10631); L := L-10631*n+354; J := (intPart((10985-L)/5316))*(intPart((50*L)/17719))+ (intPart(L/5670))*(intPart((43*l)/15238)); L := L-(intPart((30-j)/15))*(intPart((17719*j)/50))(intPart(j/16))*(intPart((15238*j)/43))+29; Rm := intPart((24*L)/709); Rd := l-intPart((709*Rm)/24); Ry := 30*n+j-30;
// Konversi kalender Masehi ke Cina Function TForm1.DecodeGregToCNDate (dtGreg: TDateTime): TCNDate;
54
Var IDayLeave: Integer; WYear, wMonth, wDay: WORD; I, j: integer; WBigSmallDist, wLeap, wCount, wLeapShift: WORD; Label OK; Begin Result := 0; IDayLeave := Trunc (dtGreg) - cstDateOrg; DecodeDate (IncMonth (dtGreg, -1), wYear, wMonth, wDay); If (iDayLeave <0) or (iDayLeave> 22295) then Exit; For i:= Low (cstCNTable) to High (cstCNTable) do begin WBigSmallDist := cstCNTabel [i]; WLeap := wBigSmallDist shr 12; If wLeap> 12 then begin WLeap := wLeap and 7; WLeapShift := 1; End else WLeapShift := 0; For j:= 1 to 12 do begin WCount := (wBigSmallDist and 1) + 29; If j = wLeap then wCount := wCount - wLeapShift; If iDayLeave <wCount then begin Result := (i shl 9) + (j shl 5) + iDayLeave + 1; Exit; End; IDayLeave := iDayLeave - wCount; If j = wLeap then begin WCount := 29 + wLeapShift; If iDayLeave <wCount then begin Result := (i shl 9) + (j shl 5) + iDayLeave + 1 + (1 shl 21); Exit; End; IDayLeave := iDayLeave - wCount; End; WBigSmallDist := wBigSmallDist shr 1; End; End; End; Function TForm1.isCNLeap(cnDate: TCNDate): boolean; Begin Result := (cnDate and $200000) <> 0; End; Function GetGregDateFromCN (cnYear, cnMonth, cnDay: word; bLeap: Boolean = False): TDateTime; Var I, j: integer; DayCount: integer; WBigSmallDist, wLeap, wLeapShift: WORD;
55
Begin DayCount := 0; If (cnYear <1990) or (cnYear> 2050) then begin Result := 0; Exit; End; For i := cstCNYearOrg to cnYear-1 do begin WBigSmallDist := cstCNTabel [i]; If (wBIgSmallDist and $F000) <> 0 then DayCount := DayCount + 29; DayCount := DayCount + 12 * 29; For j := 1 to 12 do begin DayCount := DayCount + wBigSmallDist and 1; WBigSmallDist := wBigSmallDist shr 1; End; End; WBigSmallDist := cstCNTabel [cnYear]; WLeap := wBigSmallDist shr 12; If wLeap > 12 then begin WLeap := wLeap and 7; WLeapShift := 1; // Tai, in Runru. End else WLeapShift := 0; For j := 1 to cnMonth-1 do begin DayCount := DayCount + (wBigSmallDist and 1) + 29; If j = wLeap then DayCount := DayCount + 29; WBigSmallDist := wBigSmallDist shr 1; End; If bLeap and (cnMonth = wLeap) then begin DayCount := DayCount + 30 - wLeapShift; Result := DayCount + cstDateOrg + cnDay - 1; End;
3.2.2
Perangkat Lunak pada Mikrokontroler Perancangan perangkat lunak pada mikrokontroler berfungsi sebagai
pengendali sistem dan digunakan dalam proses pengujian display dot matrix yang selanjutnya digunakan untuk mengirimkan data. Perangkat lunak yang digunakan adalah bahasa assembly dengan software MIDE. Proses-proses utama pada perangkat lunak mikrokontroler antara lain proses scanning baris, proses update waktu dan proses serial interrupt.
56
A. Proses Scanning Baris Untuk menghasilkan tampilan display dot matrix yang tidak berkedip, maka frekuensi dari scanning baris harus melebihi frekuensi penglihatan mata manusia dalam keadaan normal (60 Hz). Sehingga mikrokontroler harus dapat melakukan proses scanning delapan baris dengan frekuensi diatas 60 Hz. Perhitungannya adalah sebagai berikut: 1 f
T =
=
(3.1)
1 60 Hz
≅ 0.0167 s = 16,7 ms Sehingga masing-masing baris membutuhkan waktu maksimal sebesar: 16,7 = 2.09 ms 8 Karena dalam satu baris terdapat 288 kolom titik dot matrix, maka untuk menyalakan masing-masing led dalam dot matrix diberikan waktu sebesar: 2.09ms = 0.007 ms/led. 288led Dalam perangkat tugas akhir ini penulis menentukan waktu scanning tiap baris sebesar 2.09ms. Dengan waktu tersebut mikrokontroler dapat menghasilkan frekuensi sebesar 61,27 Hz. perhitungannya adalah sebagai berikut: 2.09 x 8 baris = 16.32 ms F =
1 16,32ms
= 61.27 Hz
57
Proses scanning baris pada modul mikrokontroler dapat ditunjukkan oleh diagram alir pada Gambar 3.11.
Start
Matikan semua transistor baris
Baris = Baris +1
Baris = 9
T
Baca data baris
Y
Baris =1
Output ke Shift register 74LS164
Aktifkan transistor baris
Gambar 3.11. Diagram alir proses scanning baris
Berikut listring program scanning pada baris : Program TH0Val_C TL0Val_C JCol_C
EQU 0000h EQU 0F8h ; nilai timer untuk scanning EQU 000h; : (65536 - TH0:TL0) * (12 MHz / 11.0592 MHz) EQU
200
58
DispBuffAddr_C
EQU
0h
;-------------------------; PORTS ;-------------------------Clk_P Data_P Row_P
BIT BIT EQU
p3.4 p3.5 p1
;-------------------------Timer_0 ;-------------------------MOV MOV PUSH PUSH PUSH PUSH PUSH
th0,#TH0Val_C tl0,#TL0Val_C a psw dph dpl 7
; off all transistor MOV MOV MOV T0J3 MOVX CLR ANL JZ SETB T0J4 SETB CLR INC DJNZ MOV
Row_P,#0 dptr,#DispBuffAddr_C r7,#JCol_C
MOV RR MOV MOV RL MOV CLR INC MOV CJNE SETB MOV MOV
a,BitMask_M a BitMask_M,a a,RowMask_M a RowMask_M,a LastRow_F ScanCtr_M a,ScanCtr_M a,#8,T0J1 LastRow_F ScanCtr_M,#0 RowMask_M,#00000001b
T0J1 POP POP POP POP POP RETI
7 dpl dph psw a
a,@dptr Data_P a,BitMask_M T0J4 Data_P
; ; ; 1 ; ;
2 cycles (24 osc.periods) 1 cycle (12 osc.periods) cycle (12 osc.periods) 2 cycles (24 osc.periods) 1 cycle (12 osc.periods)
Clk_P ; 1 cycle (12 osc.periods) Clk_P ; 1 cycle (12 osc.periods) dptr ; 2 cycles (24 osc.periods) r7,T0J3 Row_P,RowMask_M
59
B. Proses Update Waktu Proses set dan update waktu pada modul mikrokontroler dapat ditunjukkan oleh diagram alir pada Gambar 3.12.
START
Inisialisasi awal Memori, Timer, Serial
Cek RTC valid?
Reset Tanggal & Waktu
T
Y
Baca Tanggal Masehi Hijriyah Jawa Cina & Waktu (Jam, Menit, Detik)
Taruh di Buffer Display (RAM)
Baca tanggal Masehi dan waktu dari RTC
T
Detik sdh berubah? Y
Update tanggal jawa Cina & hijriyah di RTC
Taruh data di Buffer Display (RAM)
Gambar 3.12. Diagram alir program utama
Penjelasan dari diagram alir program utama pada Gambar 3.12 yaitu pada saat program pertama kali dijalankan, dilakukan inisialisasi terlebih dahulu yang
60
meliputi inisialisasi memori, timer dan serial. Dilakukan cek apakah internal clock serial RTC sudah sesuai. Jika internal clock tak sesuai dilakukan reset pada RTC. Sebaliknya jika sesuai dilakukan pembacaan tanggal dan waktu. Setelah di-set data internal clock diletakkan di buffer RAM. Setelah semua proses dilakukan, selanjutnya dilakukan update internal clock RTC. Proses ini dilakukan berulangulang dan setiap selesai update data disimpan pada buffer display pada RAM. C. Proses Serial Interrupt Proses serial interrupt menangani apabila terdapat interrupt dari user untuk mengganti atau melakukan update pada kalender. Proses tersebut ditunjukkan oleh diagram alir pada Gambar 3.13.
START
Ambil data dari SBUF
T
RETI
Data sudah di terima Lengkap? (Jam,Menit, Detik, Tgl,Bln,Thn Masehi, Hijriyah,Jawa,Cina)
Y
Update waktu, tgl Masehi, tgl Hijriyah, tgl Jawa, tgl Cina
RETI
Gambar 3.13. Diagram alir program serial interrupt
61
Penjelasan dari diagram alir program utama pada Gambar 3.13 adalah saat terjadi interupsi dari user dengan memberi input tanggal yang lain pada komputer dan melakukan update kalender. Program akan membaca data dari register SBUF. Kemudian program akan melakukan cek apakah data yang dikirimkan sudah diterima dengan lengkap meliputi jam, menit, detik, tanggal, bulan dan tahun Masehi, Hijriyah, Jawa, dan Cina. Seandainya data sudah lengkap akan dilakukan update kalender.