Praktikum Mikrokontroller Dan Interface PERCOBAAN 2 LCD DAN KEYPAD
I.
Tuuan! •
Mahasiswa mengerti cara membuat program C pada mikrokontroller ARM untuk melakukan pemrograman pada modul LCD
•
Mahasiswa mengerti cara membuat program C pada mikrokontroller ARM untuk melakukan pemrograman pada modul keypad
•
Mahasiswa mampu mengintegrasikan mengintegrasikan antara keypad dan LCD pada mikrokontroller ARM
II. Peralatan "an# $i#unakan! •
Modul ARM
•
Modul LCD
•
Modul Keypad
•
Software STM! Cube M"
•
Software Keil u#ision
III. Da%ar Teori
$ambar %& LCD character 'tampak (isual)
$ambar !& *iring Diagram LCD Karakter !+"!
Tabel&%& ,in -ut LCD character Pin%
De%cri&tion
%
$round
!
#cc
Contrast #oltage
.
/R0S/ 12nstruction0Register Select
3
/R0*/ 1Read0*rite LCD Registers
4
/5/ Clock
6 7 %.
Data 20- ,ins 'D+&&D6)
%3
Anoda '8) backlight
%4
Katoda '7) backlight
$ambar & Rangkaian pengatur kontras tampilan LCD
Tabel&!& Daftar 2nstruksi LCD Character R'( R') D* D+ D, D- D D2 D/ D0
In%truction'De%cri&tion
-
,
/- / /2 // /0
1
* Pin%
+
+
+
+
+
+
+
+
+
% Clear Display
+
+
+
+
+
+
+
+
%
9 Return Cursor and LCD to :ome ,osition
+
+
+
+
+
+
+
% 2D S Set Cursor Mo(e Direction
+
+
+
+
+
+
%
D
+
+
+
+
+
% SC RL 9
+
+
+
+
% DL <
+
+
+
%
A
A
A A A A Mo(e Cursor into C$RAM
+
+
%
A A
A
A A A A Mo(e Cursor to Display
+
%
;= 9
9
9
9
%
+
D D D
D
D D D D
*rite a Character to the Display at the Current Cursor ,osition
%
%
D D D
D
D D D D
Read the Character on the Display at the Current Cursor ,osition
=
9
C 9
9
; 5nable Display0Cursor 9 Mo(e Cursor0Shift Display 9 Set 2nterface Length
9 ,oll the /;usy =lag/
The bit descriptions for the different commands are> "*" - Not Used/Ignored.
This bit can be either "1" or "0"
Set Cursor Move Direction ID - Incre!ent the Cursor #ter $ach %&te 'ritten to Dis()a& i# Set S - Shi#t Dis()a& hen %&te 'ritten to Dis()a& $nab)e D C % -
Dis()a&/Cursor Turn Dis()a& +n,1/+##,0 Turn Cursor +n,1/+##,0 Cursor %)in +n,1/+##,0
Move Cursor/Shi#t Dis()a& SC - Dis()a& Shi#t +n,1/+##,0 - Direction o# Shi#t ight,1/e#t,0 Set Inter#ace ength D - Set Data Inter#ace ength ,1/2,0 N - Nu!ber o# Dis()a& ines 1,0/3,1 4 - Character 4ont 5610,1/567,0 8o)) the "%us& 4)ag" %4 - This bit is set hi)e the CD is (rocessing Move Cursor to C9M/Dis()a& - ddress ead/'rite SCII to the Dis()a& D - Data
,roses inisialisasi pemrograman LCD dalam mode . four bit> %& *ait more than %3 msecs after power is applied& !& *rite +"+ to LCD and wait 3 msecs for the instruction to complete & *rite +"+ to LCD and wait %4+ usecs for instruction to complete .& *rite +"+ A$A2< to LCD and wait %4+ usecs 'or poll the ;usy =lag) 3& Set the -perating Characteristics of the LCD o
*rite +"+! to the LCD to 5nable =our ;it Mode All follo3in# in%truction'Data )rite% re4uire t3o ni55le 3rite%.
o
*rite /Set 2nterface Length/
o
*rite +"+%0+"++ to turn off the Display
o
*rite +"++0+"+% to Clear the Display
o
*rite /Set Cursor Mo(e Direction/ Setting Cursor ;eha(iour ;its
o
*rite /5nable Display0Cursor/ ? enable Display and -ptional Cursor
$ambar .& Daftar Kode Karakter yang bisa ditampilkan di LCD karakter
=ungsi7fungsi yang sudah disediakan dalam pustaka 'library) file LCD&:>
•
1lcd1ready') memeriksa kesiapan LCD untuk melakukan perintah selan@utnya 'memeriksa status busy flag)
•
1lcd1write1data'unsigned char data) beri perintah ke LCD
•
lcd1write1byte'unsigned char addr unsigned char data) write a byte to the LCD character generator or display RAM
unsigned char lcd1read1byte'unsigned char addr) LCD •
read a byte from the
character generator or display RAM •
lcd1goto"y'unsigned char " unsigned char y)
set the LCD display
position "B+&& yB+&& lcd1clear') clear the LCD
•
•
lcd1putchar'char c) write the string str located in SRAM to the LCD
•
lcd1puts'char 9str) write the string str located in SRAM to the LCD
•
lcd1putsf'char flash 9str) write the string str located in =LAS: to the LCD
•
unsigned char lcd1init'unsigned char lcd1columns) initialie the LCD controller
I6.
Al#orit7ma Pemro#raman
%& ,ercobaan % Tampilkan tulisan ET5ST LCDF dengan cara masing masing huruf keluar secara bergantian dari T kemudian 5 kemudian S sampai huruf yang terakhir yaitu D dengan delay waktu % detik untuk pemunculan tiap hurufnya& !& ,ercobaan ! Tampilkan huruf dan angka yang ditekan pada keypad .". pada LCD dengan cara saat keypad ditekan maka huruf atau angka tersebut akan tampil pada LCD dan saat dilepas keypadnya maka tidak akan tampil lagi& & ,ercobaan •
Gika keypad % ditekan maka relay % akan aktif
•
Gika keypad ! ditekan maka relay ! akan aktif
•
Gika keypad ditekan maka relay akan aktif
•
Gika keypad . ditekan maka relay . akan aktif
•
Gika keypad 3 ditekan maka relay 3 akan aktif
•
Gika keypad 4 ditekan maka relay 4 akan aktif
•
Gika keypad 6 ditekan maka relay 6 akan aktif
•
Gika keypad H ditekan maka relay H akan aktif
•
Gika keypad A ditekan maka relay %!. akan aktif
•
Gika keypad ; ditekan maka relay 346H akan aktif
•
Gika keypad C ditekan maka semua relay akan aktif
•
Gika keypad 9 ditekan maka akan meng7lock perintah terakhir dan tidak merespon perintah keypad lainnya
•
Gika
keypad
I
ditekan
maka akan
meng7unlock dan
keypad
akan merespon kembali perintah yang diberikan •
Gika keypad 9 dan I ditekan bersamaan maka relay akan menyala sacara bergantian dari relay % sampai relay H dengan delay waktu % detik setiap pergantiannya
6.
Pro#ram
Perco5aan / :inc)ude "st!;3#266<98I+<98I+
CC<+scInitStruct.8.8H F 2= @<CC<+scCon#ig,CC<+scInitStruct= CC<98I+
Perco5aan 2 :inc)ude :inc)ude :inc)ude :inc)ude
"st!;3#266
void S&ste!C)oc<98I+<98I+
hi)e ,1 ?
s(rint#,si!(anA"e& !eansFc"Ae&(ad
void S&ste!C)oc<98I+
@<98I+
Perco5aan :inc)ude :inc)ude :inc)ude :inc)ude
"st!;3#266
void S&ste!C)oc<98I+<98I+
e)se i#,e&FFP2P ? @<98I+<'rite8in,98I+$A98I+<8IN<;A1= @<98I+<'rite8in,98I+$A98I+<8IN<0J98I+<8IN<1J98I+<8IN<3 J98I+<8IN<2J98I+<8IN<5J98I+<8IN
@<98I+
@<98I+
6I.
8lo3 C7art Perco5aan /
START
$oto"y'++) Cetak'ETF) Delay %s
$oto"y'%+) Cetak'E5F) Delay %s
$oto"y'!+) Cetak'ESF) Delay %s
$oto"y'+) Cetak'ETF) Delay %s
$oto"y'3+) Cetak'ELF) Delay %s
$oto"y'4+) Cetak'ECF) Delay %s
$oto"y'6+) Cetak'EDF) Delay %s
5
Perco5aan 2
START
Simpan B Ekey means B JcFkeypad1get1key1(alue
$oto"y'++) Cetak'Simpan)
A
Perco5aan
START
KeyBkeypad1get1key1(alue Simpan B Ekey means B JcFkeypad1get1key1(alue
$oto"y'++) Cetak'Simpan)
LA
KeyBB&
KeyBBI
A
LA
bahB+
bahB%
A
bahBB% LA
KeyBB%
KeyBB!
LA
LA
,2<5&+B%
,2<5&%B%
KeyBB KeyBB.
LA
,2<5&!B%
KeyBB3 LA
,2<5&B%
KeyBB4 KeyBB6
LA
,2<5&.B%
KeyBBH KeyBBA
LA
LA
LA
LA
C
;
,2<5&3B%
,2<5&4B%
,2<5&6B%
,2<5&+B ,2<5&%B,2<5&!B,2<5&B%
D
C
;
D
LA
KeyBB;
LA
KeyBBC
KeyBB9 ?? KeyBI
LA
,2<5&.B ,2<5&3B,2<5&4B,2<5&6B%
,2<5&+B ,2<5&%B,2<5&!B,2<5&B% ,2<5&.B ,2<5&3B,2<5&4B,2<5&6B%
,2<5&+B% delay %S ,2<5&%B% delay %S ,2<5&!B% delay %S ,2<5&B% delay %S ,2<5&.B% delay %S ,2<5&3B% delay %S ,2<5&4B% delay %S ,2<5&6B% delay %S
5
6II.
9am5ar Ran#kaian
Relay % Relay % Relay % Relay % Relay % Relay % Relay % Relay %
,D + N ,D 6 ,5 + & & & & &
LCD
ARM (TM28-
K5,AD
6III. Anali%a
,ada praktikum kali ini mempraktekkan tentag penerapan penggunaan LCD dan Keypad menggunakan mikrokontroller STM! =.& ,erlu diketahui bahwa untuk bisa menggunakan LCD dan Keypad pada ARM maka perlu menambahkan file header pada library ARM secara manual karena pada software keil u#ision tidak disediakan library untuk LCD dan Keypad& Ada ! buah library yang harus di copykan ke dalam library keil yaitu file bertipe header dan file bertipe source& :al tersebut bisa dilakukan dengan mengcopy file yang bertipe header lcd1character&h dan keypad1.".&h ke dalam folder inc& Serta mengcopy file bernama lcd1character&c dan keypad1.".&c ke dalam folder src&seperti gambar di bawah ini&
Langkah selan@utnya adalah menambahkan file header tersebut ke dalam application user dengan cara klik kanan dan pilih Add 5"siting =iles to $roup&
Kemudian carilah file lcd1character dan keypad1.". di dalam folder Src blok kedua file kemudian tambahkan dengan klik Add
Gika di dalam Application0sers sudah tedapat kedua file header maka bisa dilakukan langkah selan@utnya& ntuk memanggil header tersebut maka di dalam program perlu ditambahkan program untukk memanggil kedua file header terebut& :al tersebut bisa dilakukan dengan menambahkan program sebagai berikut > IincludeFlcd1character&hF IincludeFkeypad1.".&hF 2nisialisai @uga diperlukan agar program mengenal fungi fungsi yang ada di dalam header tersebut& :al ini dilakukan dengan melakukan penulisan program pada fungsi main0 utama tetapi di luar fungsi while'%) dengan program sebagai berikut > lcd1init')O keypad1init')O dengan penambahan ini maka bisa langsung dilakukan pemrograman untuk LC dan Keypad terebut& ,ada praktikum kali ini LCD dihubungkan dengan ,2< D mulai bit + sampai bit 6 sehingga untuk inisialisasi kita @adikan ,2< D ini sebagai $,2-1output& Sedangkan untuk keypad menggunakan ,2<5 mulai bit H sampai bit %3& Dimana untuk bit H N %% di@adikan sebagai $,2-1input dan bit %!7%3 di@adikan ebagai $,2-1output& :al ini dikarenakan konfigurasi untuk keypad .". ini membutuhkan . buah input dan . buah output untuk mengetahui posisi keypad mana yang sedang ditekan& ntuk output relay menggunakan ,-RT5 pin + sampai pin 6 sehingga ,-RT5 ini diiniialisasikan sebagai $,2-1output& I:.
Ke%im&ulan
%& ntuk menggunakan modul keypad dan LCD pada mikrokontroller ARM maka perlu menambahkan file tambahan yang diperoleh dari luar berupa file &: 'lcd1character&h ? keypad1.".&h) yang bertipe header dan file &C 'lcd1character&c ? keypad1.".&c) yang bertipe source& !& =ile yang bertipe &: perlu di copy dan ditempatkan pada folder 2nc dan file yang bertpe &C ditempatkan pada folder Src & ,ada program u#ision Keil memerlukan untuk menambahkan file source &C pada Application0ser @ika menggunakan LCD dan keypad