Jumat, 16 Mei 2014

Program LED dengan tombol (Push Button)

LED DENGAN PUSH BUTTON


Disini saya akan share beberapa program mikrokontroler yang berbasis ATmega 16, program dari bascom ini sebenarnya gak terlalu sulit untuk membuatnya. Langsung aja ke programnya.

Untuk membuat rangkaian saya menggunakan software proteus, kalian bisa download dimana saja...
nih gambar dari rangkaiannya.



Dari gambar di atas saya menggunakan port C sebagai input (push button) dan port D sebagai output, untuk yang sebelah kiri itu rangkaian crystal.

Berikut beberapa program yang saya buat :

> ini program apabila tombol 1 ditekan maka lampu 1 akan hidup dan tombol 2 akan menghidupkan lampu   2, begitu seterusnya sampai tombol 8.

'deklarasi crystal
$crystal = 4000000
'deklarasi header
$regfile = "m8535.dat"
'deklarasi variabel
Dim Datal As Byte
'pendifinisian pin mikro
Config Portc = Input
Config Portd = Output

Tombol1 Alias Pinc.0
Tombol2 Alias Pinc.1
Tombol3 Alias Pinc.2
Tombol4 Alias Pinc.3
Tombol5 Alias Pinc.4
Tombol6 Alias Pinc.5
Tombol7 Alias Pinc.6
Tombol8 Alias Pinc.7
Portc = 255
'rutin utama
Do
   If Tombol1 = 0 Then Set Portd.0
   If Tombol2 = 0 Then Set Portd.1
   If Tombol3 = 0 Then Set Portd.2
   If Tombol4 = 0 Then Set Portd.3
   If Tombol5 = 0 Then Set Portd.4
   If Tombol6 = 0 Then Set Portd.5
   If Tombol7 = 0 Then Set Portd.6
   If Tombol8 = 0 Then Set Portd.7
Loop
End

> ini program, bila tombol 1 ditekan led akan berjalan ke bawah, tombol 2 led jalan keatas, dan tombol 3 untuk menghentikan program tersebut.

'deklarasi crystal
$crystal = 11059200
'deklarasi header
$regfile = "m16def.dat"
'deklarasi variabel
Dim Datal As Byte
Dim A As Byte
Dim B As Byte
'deklarasi subrutin
Declare Sub Kiri()
Declare Sub Kanan()
Declare Sub Kedip()
Declare Sub Mati()
'pendifinisian pin mikro
Config Portc = Input
Config Portd = Output
'rutin utama
Datal = 1
Do
Datal = Pinc
Select Case Datal
Case 1 : Call Kiri()
Case 2 : Call Kanan()
Case 3 : Call Kedip()
Case Else : Call Mati
End Select
Loop
End
'sub rutin
'sub rutin kiri
Sub Kiri()
A = 1
For B = 0 To 8
Portd = A
Shift A , Left , 1
Waitms 100
Next
End Sub
'Sub Rutin Kanan
Sub Kanan()
A = 128
For B = 0 To 8
Portd = A
Shift A , Right , 1
Waitms 100
Next
End Sub
'sub rutin kedip
Sub Kedip()
For B = 1 To 8
Portd = 1
Waitms 100
Portd = 0
Waitms 100
Next
End Sub
'sub rutin mati
Sub Mati()
Portd = 00
End Sub

> ini program bila tombol 1 ditekan led akan jalan dua-dua.

$crystal = 4000000
$regfile = "m8535.dat"

Dim Datal As Byte
Dim A As Byte
Dim B As Byte
Declare Sub Kiri()

Config Portc = Input
Config Portd = Output

Datal = 1
Do
Datal = Pinc
Select Case Datal
Case 1 : Call Kiri
End Select
Loop
End

Sub Kiri
A = 1
For A = 0 To 8
Portd = A
Shift A , Left , 1

Portd = &B11000000
Waitms 1000
Portd = &B00110000
Waitms 1000
Portd = &B00001100
Waitms 1000
Portd = &B00000011
Waitms 1000
Next


End Sub

> ini program, bila tombol 1 ditekan led mati dan jalan ke kedua sisi

$crystal = 11059200
$regfile = "8535def.dat"

Dim Datal As Byte
Dim A As Byte
Dim B As Byte
Declare Sub Kiri()

Config Portc = Input
Config Portd = Output

Datal = 1
Do
Datal = Pinc
Select Case Datal
Case 1 : Call Kiri
End Select
Loop
End

Sub Kiri
A = 1
For A = 0 To 8
Portd = A
Shift A , Left , 1
   Portd = &B11100111
   Waitms 200
   Portd = &B11011011
   Waitms 200
   Portd = &B10111101
   Waitms 200
   Portd = &B01111110
   Waitms 200

Next



End Sub


Kalian bisa mengubah waktu led kedip dengan mengubah delay time/waitms nya terserah kalian ingin berapa, untuk waitms 1000 sama dengan 1 detik jam normal.

1 komentar: