Daftar Isi 1.
2.
3.
Pendahuluan........................................................................... 1.1 Spesifikasi DT51 KND ...................................................... 1.2 Tata Letak DT51 KND...................................................... Memasang DT51 KND......................................................... 2.1 Perlengkapan DT51 KND.................................................. 2.2 Sistem yang Dianjurkan....................................................... 2.3 Hubungan DT51 Ver 3.0 dengan DT51 KND..................... 2.4 Pengujian DT51 KND........................................................ Perangkat Lunak DT51 KND .............................................. 3.1 Modul dan Rutin ................................................................ 3.2 Contoh Program................................................................. Appendix Skema DT51 KND..................................................................
1 1 1 3 3 3 3 4 4 5 10 19
Trademarks & Copyright
AT is a trademark of International Business Machines Corp. IBM, PC, and PC-DOS are trademarks of International Business Machines Corp. MS-DOS is a registered trademark of Microsoft Corporation. Pentium is a registered trademark of Intel Corporation. ALDS is copyright by Himpunan Mahasiswa Elektronika Sekolah Tinggi Teknik Surabaya.
1. Pendahuluan DT51 KND merupakan Keypad And 7 Segment Display add-on board untuk 89C51 Development Tools DT51 Ver 3.0. DT51 KND berfungsi untuk menerima input tombol keypad serta menampilkan digit / karakter yang diinginkan ke 7 Segment Display. Dengan dilengkapi rutin-rutin untuk keypad maupun display maka DT51 KND sangat mudah digunakan dalam sistem kontrol yang membutuhkan input tombol dan tampilan. 1.1 Spesifikasi DT51 KND Spesifikasi DT51 KND sebagai berikut : • Kompatibel penuh dengan DT51 Ver 3.0. • 12 tombol Keypad dengan susunan matriks 3 x 4.. • 6 digit 7 Segment Display dengan tinggi 0.5 inch jenis super bright (sangat terang). • Menggunakan sistem scanning. • Kemudahan interface, mudah dihubungkan dengan mikroprosesor / mikrokontroler lain. • Tersedia rutin siap pakai untuk Keypad dan 7 Segment Display. 1.2 Tata Letak DT51 KND Tata letak DT51 KND ditunjukkan pada gambar 1-1. Keypad dan 7 Segment Display diletakkan pada sisi yang berlainan, sehingga bila diinginkan pemasangan pada panel akan menjadi mudah dan rapi.
1
Gambar 1-1 Tata Letak DT51 KND Detail urutan masing-masing konektor sebagai berikut : 2 1
2 1 PA1
PC0
PA3 PA5
PC2
PC1 PC3
PC4
PC5
PA6
PA7
PC6
PB0
PB1
PB2 PB4
PB3 PB5
PA0 PA2 PA4
JP2 PORT C & PORT 1
JP1 PORT A & PORT B
2
2.
Memasang DT51 KND Berikut ini akan dijelaskan persiapan serta langkah-langkah yang diperlukan untuk menghubungkan DT51 KND dengan DT51 Ver 3.0 atau sistem yang lain.
2.1 Perlengkapan DT51 KND Setiap kemasan DT51 KND berisi :
< &
1 buah board DT51 1 disket program 1 buku manual
2.2 Sistem yang Dianjurkan Perangkat keras : • PC XT / AT / PentiumT M IBM Compatible dengan port serial (COM1 / COM2). • Board DT51 Ver 3.0 • Floppy Disk 3.5”, kapasitas 1,44 Mbytes. • Hard Disk dengan kapasitas minimum 500 Kbytes Perangkat lunak : • Sistem operasi MS-DOS TM atau PC-DOS TM. • File-file yang ada pada disket program. 2.3 Hubungan DT51 Ver 3.0 dengan DT51 KND DT51 KND memang di-desain sebagai add on board DT51 Ver 3.0, tetapi tidak menutup kemungkinan untuk dihubungkan dengan sistem mikroprosesor / mikrokontroler yang lain. Apabila Anda ingin menghubungkan DT51 KND dengan sistem yang lain kami sarankan untuk mempelajari skema DT51 KND (lihat Appendix). 3
Untuk menghubungkan DT51 KND dengan DT51 Ver 3.0 dianjurkan untuk menggunakan kabel pita (flat ribbon cable). Hubungannya ditunjukkan pada tabel-tabel berikut : DT51 [Port A & Port B] Pin DT51 KND [JP1] Pin
PA0 1 PA0 1
PA1 2 PA1 2
PA2 3 PA2 3
PA3 4 PA3 4
PA4 5 PA4 5
PA5 6 PA5 6
PA6 7 PA6 7
DT51 [Port A & Port B] Pin DT51 KND [JP1] Pin
PA7 8 PA7 8
PB0 9 PB0 9
PB1 10 PB1 10
PB2 11 PB2 11
PB3 12 PB3 12
PB4 13 PB4 13
PB5 14 PB5 14
PC0 1 PC0 1
PC1 2 PC1 2
PC2 3 PC2 3
PC3 4 PC3 4
PC4 5 PC4 5
PC5 6 PC5 6
PC6 7 PC6 7
DT51 [Port C & Port 1] Pin DT51 KND [JP2] Pin
DT51 KND memerlukan catu daya 5V DC yang dihubungkan dengan konektor JP3. Perhatikan polaritasnya jangan sampai terbalik, karena dapat mengakibatkan kerusakan. 2.4 Pengujian DT51 KND Pengujian DT51 KND dapat dilakukan dengan menghubungkan board DT51 KND dengan board DT51 Ver 3.0 (baca bagian 2.3). Hubungkan catu daya ke masing-masing board. Kemudian jalankan program TESKND1.EXE (memori eksternal) atau TESKND2.EXE (memori internal) yang terdapat pada disket program. 7 Segment akan menampilkan angka 0-9 dan penekanan tombol keypad akan menampilkan angka 0-9 serta fungsi geser ke kanan atau ke kiri. 3.
Perangkat Lunak DT51 Disket DT51 KND berisi file-file berikut : 4
• Test File TESKND1.EXE, TESKND1.HEX, dan TESKND1.ASM (menggunakan memori eksternal). TESKND2.EXE, TESKND2.HEX, dan TESKND2.ASM (menggunakan memori internal). • Sample File SAMPLE1.ASM, SAMPLE2.ASM, SAMPLE3.ASM, dan SAMPLE4.ASM. • Modul dan Library. DATADIS.ASM : display library berisi kode karakter untuk tampilan 7 Segment. DATAKEY.ASM : keypad library berisi kode untuk penekanan tombol keypad. KNDEXT.ASM : modul menggunakan memori eksternal KNDINT.ASM : modul menggunakan memori internal • Datasheet ULN2803A.PDF : datasheet ULN2803A 3.1 Modul dan Rutin Pada DT51 KND telah disediakan 2 buah modul program yaitu KNDEXT.ASM dan KNDINT.ASM. Modul-modul ini berisi rutin-rutin yang mempermudah Anda dalam mengembangkan program untuk Keypad dan 7 Segment Display dengan DT51 Ver 3.0. A. KNDEXT.ASM Modul ini menggunakan memori eksternal (EEPROM) sebagai memori display, modul ini cocok digunakan bila pada memori internal 89C51 sudah tidak tersedia cukup ruang lagi (biasanya dipakai untuk stack memory dan variabel). Kelebihan dari modul ini adalah karakter tampilan tersimpan pada Non Volatile memory sehingga tidak hilang saat catu daya mati dan dapat dipakai lagi saat catu daya menyala. Resources DT51 yang dipakai (otomatis tidak dapat dipakai untuk keperluan lain) adalah : 5
• Memori internal dengan alamat 18H-20H. • Timer 0 dan interuptnya • PPI 8255 Adapun rutin-rutin pada modul ini sebagai berikut : InitKND Fungsi : Menginisialisasi PPI dan Interupt untuk keperluan scanning display dan keypad. Input :Output : Remark : Sebelum memakai rutin-rutin yang lain pada modul KNDEXT.ASM, Anda harus memanggil rutin ini. Write7S Fungsi : Menuliskan karakter ke memori display untuk ditampilkan. Input : ACC diisi dengan karakter yang akan ditulis. Ouput :Karakter yang tersedia pada library sebagai berikut : Kode 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 0BH
Karakter '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '.' 'A'
Kode 0CH 0DH 0EH
0FH 10H 11H 12H 13H 14H 15H 16H 17H
Karakter 'C' 'd' 'E' 'F' 'G' 'H' 'i' 'J' 'L' 'o' 'P' 'U'
Contoh penggunaan : MOV LCALL
A,#0H Write7S ; menuliskan ‘0’ pada memory display serta ditampilkan
6
ClrDisMem Fungsi : Menghapus seluruh karakter pada memori display dan tampilan. Input :Output : Remark : CursorON Fungsi : Menampilkan kursor Input :Output : Remark : Apabila rutin ClrDisMem dijalankan , maka pada tampilan akan tampak kursor yang berkedip CursorOFF Fungsi : Mematikan kursor Input :Output : Remark : RealDis Fungsi : Menset memori display sebesar 6 byte sesuai dengan jumlah 7 Segment pada tampilan. Input :Output : Remark : Jika anda memakai rutin RealDis (real display), maka karakter maksimum yang dapat Anda tuliskan hanya 6, penulisan karakter yang ke 7 akan menyebabkan seluruh tampilan terhapus dan ditampilkan sebagai karakter ke 1. VirtualDis Fungsi : Menset memori display sebesar 18 byte sesuai dengan 3 x jumlah 7 Segment (6 digit) pada tampilan. Input :Output
: -
7
Remark
: Jika Anda memakai VirtualDis (virtual display), maka seakan-akan Anda memiki tampilan sebanyak 18 karakter, penulisan karakter yang ke 7 akan menggeser tampilan sebelumnya ke kiri 1 kali demikian seterusnya sampai penulisan karakter yang ke 18. ShftDisRight Fungsi : Menggeser tampilan ke kanan satu kali (tanpa mengubah memori display). Input :Output : Remark : Rutin ini hanya berlaku jika display diset pada kondisi virtual. ShftDisLeft Fungsi : Menggeser tampilan ke kiri satu kali (tanpa mengubah memori display). Input :Output : Remark : Rutin ini hanya berlaku jika display diset pada kondisi virtual. EnbKeyInt Fungsi : Mengaktifkan External Interrupt 1 agar menghasilkan sinyal interupt setiap kali ada keypad yang ditekan. Input :Output : Remark : Dengan mengaktifkan keypad interrupt Anda tidak perlu melakukan poolling untuk mengetahui apakah ada tombol yang ditekan, yang perlu Anda siapkan adalah interrupt service routine untuk external interrupt 1 (lihat contoh program sample2.asm), Kode tombol yang ditekan akan berada pada variabel KeyCode.
8
Kode (heksadesimal) masing-masing tombol keypad ditunjukkan pada gambar berikut :
03H
04H
09H
0AH
02H
05H
08H
0BH
01H
06H
07H
0CH
DisKeyInt Fungsi : Mematikan External Interrupt 1 (kondisi default) sebagai keypressed interrupt Input :Output : Remark : Untuk mengetahui apakah ada tombol keypad yang ditekan Anda harus melakukan poolling pada variabel KeyPressed, jika berlogika “1” maka ada tombol yang ditekan, kode tombol yang ditekan akan berada pada variabel KeyCode (lihat contoh sample1.asm).
9
B. KNDINT.ASM Modul ini menggunakan memori internal 89C51 alamat 40H-53H sebagai memori display, modul ini cocok digunakan bila pada memori internal 89C51 masih tersedia cukup ruang (biasanya dipakai untuk stack memory dan variabel). Kelebihan dari modul ini adalah kecepatan prosesnya, sehingga tidak menimbulkan blink/kedip pada 7 Segment Display. Resources DT51 yang dipakai (otomatis tidak dapat dipakai untuk keperluan lain) adalah • Memori internal dengan alamat 18H-20H. • Memori internal dengan alamat 40H-53H (perhatikan bahwa SP minimum diset pada address 53H). • Timer 0 dan interuptnya. • PPI 8255 Adapun rutin-rutin untuk modul ini persis sama dengan rutin-rutin pada KNDEXT.ASM seperti yang telah dijelaskan sebelumnya. 3.2 Contoh Program Berikut ini beberapa contoh program untuk (diasumsikan menggunakan Assembler ALDS© ).
DT51
SAMPLE1.ASM : Contoh program menggunakan KNDEXT.ASM tanpa interupt. ;-----------------------------------------------------;Sample Program Using DT51 KND Routine ; Without External Interrupt 1 ;-----------------------------------------------------.CODE ORG 4000H LJMP Start ORG LJMP
400BH Scanning
ORG 4100H INCLUDE KNDEXT.ASM
10
KND
JMPTABLE:
S1Act:
S2Act:
S3Act:
S4Act:
S5Act:
S6Act:
S7Act:
S8Act:
S9Act:
LJMP LJMP LJMP
S1Act S2Act S3Act
LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP
S4Act S5Act S6Act S7Act S8Act S9Act S10Act S11Act S12Act A,#0 Write7S Loop A,#1 Write7S Loop A,#2 Write7S Loop A,#3 Write7S Loop A,#4 Write7S Loop A,#5 Write7S Loop A,#6 Write7S Loop A,#7 Write7S Loop A,#8 Write7S Loop
11
S10Act:
MOV ACALL LJMP ACALL LJMP ACALL LJMP
A,#9 Write7S Loop ShftDisRight Loop ShftDisLeft Loop
Start:
MOV MOV LCALL LCALL LCALL LCALL
P1,#0FBH SP,#40H InitKND CursorOn VirtualDis ClrDisMem
Loop:
JNB CLR MOV MOV DEC MOV MUL JMP END
KeyPressed,$ KeyPressed A,KeyCode DPTR,#JMPTABLE A B,#3 AB @A+DPTR
S11Act: S12Act:
SAMPLE2.ASM : Contoh program menggunakan KNDEXT.ASM dengan interupt. ;------------------------------------;Sample Program Using DT51 KND Routine ; With External Interrupt 1 ;------------------------------------.CODE ORG 4000H LJMP Start ORG LJMP ORG LJMP
400BH Scanning 4013H ISR_EI1
12
ORG 4100H INCLUDE KNDEXT.ASM ISR_EI1:
MOV MOV DEC MOV MUL JMP
A,KeyCode DPTR,#JMPTABLE A B,#3 AB @A+DPTR
JMPTABLE:
LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP
S1Act S2Act S3Act S4Act S5Act S6Act S7Act S8Act S9Act S10Act S11Act S12Act
S1Act:
MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI
A,#0 Write7S
S2Act:
S3Act:
S4Act:
S5Act:
S6Act:
A,#1 Write7S A,#2 Write7S A,#3 Write7S A,#4 Write7S A,#5 Write7S
13
S7Act:
S8Act:
S9Act:
S10Act:
S11Act: S12Act:
Start:
MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI ACALL RETI ACALL RETI
A,#6 Write7S
MOV MOV LCALL LCALL LCALL LCALL LCALL AJMP
P1,#0FBH SP,#40H InitKND CursorOn VirtualDis ClrDisMem EnbKeyInt $
A,#7 Write7S A,#8 Write7S A,#9 Write7S ShftDisRight ShftDisLeft
END
SAMPLE3.ASM : Contoh program menggunakan KNDINT.ASM tanpa interupt. ;------------------------------------;Sample Program Using DT51 KND Routine ; Without External Interrupt 1 ;------------------------------------.CODE ORG 4000H LJMP Start ORG LJMP
400BH Scanning
14
ORG 4100H INCLUDE KNDINT.ASM JMPTABLE:
LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP
S1Act S2Act S3Act S4Act S5Act S6Act S7Act S8Act S9Act S10Act S11Act S12Act
S1Act:
MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP MOV ACALL LJMP
A,#0 Write7S Loop A,#1 Write7S Loop A,#2 Write7S Loop A,#3 Write7S Loop A,#4 Write7S Loop A,#5 Write7S Loop A,#6 Write7S Loop A,#7 Write7S Loop A,#8 Write7S Loop
S2Act:
S3Act:
S4Act:
S5Act:
S6Act:
S7Act:
S8Act:
S9Act:
15
S10Act:
MOV ACALL LJMP ACALL LJMP ACALL LJMP
A,#9 Write7S Loop ShftDisRight Loop ShftDisLeft Loop
Start:
MOV MOV LCALL LCALL LCALL LCALL
P1,#0FBH SP,#53H InitKND CursorOn VirtualDis ClrDisMem
Loop:
JNB CLR MOV MOV DEC MOV MUL JMP END
KeyPressed,$ KeyPressed A,KeyCode DPTR,#JMPTABLE A B,#3 AB @A+DPTR
S11Act: S12Act:
SAMPLE4.ASM : Contoh program menggunakan KNDINT.ASM dengan interupt. ;------------------------------------;Sample Program Using DT51 KND Routine ; With External Interrupt 1 ;------------------------------------.CODE ORG 4000H LJMP Start ORG LJMP ORG LJMP
400BH Scanning 4013H ISR_EI1
16
ORG 4100H INCLUDE KNDINT.ASM ISR_EI1:
MOV MOV DEC MOV MUL JMP
A,KeyCode DPTR,#JMPTABLE A B,#3 AB @A+DPTR
JMPTABLE:
LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP LJMP
S1Act S2Act S3Act S4Act S5Act S6Act S7Act S8Act S9Act S10Act S11Act S12Act
S1Act:
MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI
A,#0 Write7S
S2Act:
S3Act:
S4Act:
S5Act:
S6Act:
A,#1 Write7S A,#2 Write7S A,#3 Write7S A,#4 Write7S A,#5 Write7S
17
S7Act:
S8Act:
S9Act:
S10Act:
S11Act: S12Act:
Start:
MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI MOV ACALL RETI ACALL RETI ACALL RETI
A,#6 Write7S
MOV MOV LCALL LCALL LCALL LCALL LCALL AJMP
P1,#0FBH SP,#53H InitKND CursorOn VirtualDis ClrDisMem EnbKeyInt $
A,#7 Write7S A,#8 Write7S A,#9 Write7S ShftDisRight ShftDisLeft
END
Bila Anda menemui kesulitan dalam menggunakan DT51 KND, hubungi technical support kami melalui e-mail : -
[email protected]
18
19
A
B
C
1
PC6 PC5 PC4 PC3 PC2 PC1 PC0
P B3
P B2
P B1
PB0
1N 4 1 4 8
D4
1N 4 1 4 8
D3
1N 4 1 4 8
D2
1N 4 1 4 8
D1
R E SP AC K 7
R 15 8 7 6 5 4 3 2 1
R7 R6 R5 R4 R3 R2 R1 VCC
S3
S6
S9
S 12
U? IN 1O U T 1 IN 2O U T 2 IN 3O U T 3 IN 4O U T 4 IN 5O U T 5 IN 6O U T 6 IN 7O U T 7 IN 8O U T 8 CO M U LN 2803A
PB 0 PB 1 PB 2 PB 3 PB 4 PB 5
18 17 16 15 14 13 12 11
S2
S5
S8
S1 1
R1
S1
R2
S4
R3
S7
R4
S 10
2
M1 M2 M3 M4 M5 M6
R7 R6 R5
R 9 .. . 13 = 1 K CO CO CO CO CO CO
R 1 .. . 8 = 1 5 0
A B C D E F G DP Q1 2 N 3 9 06 COM 6 U1
U2
COM 5
Q2 2 N 3 90 6
U3
VC C
Q3 2 N 3906
U4
Q4 2N 3906
U5
Q5 2N 3906
U6
Q6 2N 3906
4
PC 0 PC 2 PC 4 PC 6
PA0 PA2 PA4 PA6 PB 0 PB 2 PB 4 PB 6
1 3 5 7 9 11 13 15
1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16
2 4 6 8 10 12 14 16 H E AD ER 8 X2
JP 2
H E AD ER 8 X2
JP 1
PC1 PC3 PC5 PC7
P A1 P A3 P A5 P A7 PB1 PB3 PB5 PB7
S iz e A D ate: F ile : 3
Ti tle
GND
VCC GND
VC C
DT51 K ND
2 5 - J u l- 2 0 0 0 D : \I E\ S ch \ D T5 1 K N D .s c h
N um ber
JP 3 1 2 H EA D E R 2
Sh ee t o f D r aw n B y : 4
R e v is io n
1 2 3 4 5 E D CA6 C DP
1 2 3 4 5 6 7 8 10 COM 4
1 2 3 4 5 E D CA5 C DP
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 CA4
D CA5
3
COM 3
1 2 3 4 5
2
CA6
10 G 9 F 8 CA6 7 A 6 B
CA3
E D CA4 C DP
10 G 9 F 8 CA5 7 A 6 B
COM 2
1 2 3 4 5
10 G 9 F 8 CA4 7 A 6 B
CA2
E D CA3 C DP
10 G 9 F 8 CA3 7 A 6 B
COM 1
1 2 3 4 5 E D CA2 C DP
10 G 9 F 8 CA2 7 A 6 B
CA1
10 G 9 F 8 CA1 7 A 6 B
1 2 3 4 5 E D CA1 C DP
1
A
B
C
D
Skema DT51 KND
Appendix