Untuk tutorial kali ini saya akan mencoba memberi logika pembuatan jam sederhana dengan menggunakan display LCD 16×2 hasil percobaan saya sendiri. untuk tutorial berikut belum menggunakan RTC (Real Time Clock) karena hanya rangkaian sederhana saja yang saya buat. Untuk RTC sendiri nanti saya akan posting di next postingan saja, karena sayapun belum terlalu paham dan terbiasa dengan RTC, masih belajara hehe 😀 . Baiklah langsung ke tutorialnya saja.
Membuat rangkaian:
- Buka aplikasi ISIS proteus.
- Buatkan rangkaian seperti gambar berikut ini:
- Simpan file rangkaian tersebut pada folder teman-teman.
Kode Program:
- Buka aplikasi BASCOM AVR.
- Tulis kode programberikut:
$regfile = “m16def.dat”
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
Dim Detik As Integer
Dim Menit As Integer
Dim Jam As Integer
Dim Seco As Integer
Cursor Off
Detik = 0
Menit = 0
Jam = 0
Seco = 0
Config Pind.0 = Input
Config Pind.1 = Input
Btn1 Alias Pind.0
Btn2 Alias Pind.1
Do
Cls
Incr Seco
Upperline : Lcd “TIME = ” ; Jam ; “:” ; Menit ; “:” ; Detik ; “:” ; Seco
If Seco = 10 Then
Seco = 1
Detik = Detik + 1
End If
If Detik = 60 Then
Detik = 0
Menit = Menit + 1
End If
If Menit = 60 Then
Menit = 0
Jam = Jam + 1
End If
If Jam = 12 Then
Jam = 0
End If
If Btn1 = 0 Then
Jam = Jam + 1
End If
If Btn2 = 0 Then
Menit = Menit + 1
End If
Waitms 100
Loop
- Simpan kode program diatas dengan nama LCD_JAM_SEDERHANA dan compile dengan menekan tombol F7 pada keyboard.
- Buka kembali rangkaian yang telah dibuat tadi lalu masukan hasil compile kode program degnan cara double klick pada ATmega16 lalu klik icon folder. Masuk kedalam folder penyimpanan file kode program dan cari file yang bernama LCD_JAM_SEDERHANA.hex kemudian Open dan OK.
- Klik Play button. Jika berhasil maka tampilan LCD akan menjadi seperti gambar berikut:
Penjelasan Kode Program:
Definisi IC mikrokontroler dan kristal yang digunakan dalam rangkaian
$regfile = “m16def.dat”
$crystal = 16000000
Configurasi LCD yang digunakan dan Pin mikrokontroler yang terhubung dengan kaki LCD 16×2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
Membuat sebuah data Integer untuk Jam, Menit, Detik dan Seco
Dim Detik As Integer
Dim Menit As Integer
Dim Jam As Integer
Dim Seco As Integer
Memberi nilai awal untuk Jam, Menit, Detik dan Seco
Detik = 0
Menit = 0
Jam = 0
Seco = 0
Configurasi kaki milkrokontroler yang digunakan untuk tombol pengatur Jam dan Menit.
Config Pind.0 = Input
Config Pind.1 = Input
Pemberian nama alias pada pin mikrokontroler agar lebih mudah memanggil fungsi pada saat coding dan eksekusi program
Btn1 Alias Pind.0
Btn2 Alias Pind.1
Membuat Timing Up atau Counter Up pada nilai seco
Incr Seco
Membuat tulisan pada kolom pertama dan baris pertama pada LCD 16×2
Cls
Upperline : Lcd “TIME = ” ; Jam ; “:” ; Menit ; “:” ; Detik ; “:” ; Seco
Membuat kondisi IF THEN pada nilai seco dan membatasi nilai seco sampai pada angka 10, dan jika menyentuh nilai 10 maka kembali ke angka 1 dan seterusnya. Dan jika nilai seco menyentuh nilai 10 maka nilai detik bertambah 1
If Seco = 10 Then
Seco = 1
Detik = Detik + 1
End If
Membuat kondisi IF THEN pada nilai detik dan membatasi nilai detik sampai pada angka 60 (karena dalam 1 menit ada 60 detik), dan jika menyentuh nilai 60 maka kembali ke angka 0 dan seterusnya. Dan jika nilai detik menyentuh nilai 60 maka nilai menit bertambah 1
If Detik = 60 Then
Detik = 0
Menit = Menit + 1
End If
Membuat kondisi IF THEN pada nilai menit dan membatasi nilai menit sampai pada angka 60 (karena dalam 1 jam ada 60 menit), dan jika menyentuh nilai 60 maka kembali ke angka 0 dan seterusnya. Dan jika nilai menit menyentuh nilai 60 maka nilai jam bertambah 1
If Menit = 60 Then
Menit = 0
Jam = Jam + 1
End If
Membuat kondisi IF THEN pada nilai Jam dan membatasi nilai Jam sampai pada angka 12 (menggunakan format 12, jika ingin menggunakan format 24 jam maka ganti angka 12 menjadi 24), dan jika menyentuh nilai 12 maka kembali ke angka 0 dan seterusnya.
If Jam = 12 Then
Jam = 0
End If
Membuat kondisi IF THEN pada tombol pertama yaitu BTN1. Jika tombol tersebut aktif maka nilai jam akan bertambah 1
If Btn1 = 0 Then
Jam = Jam + 1
End If
Membuat kondisi IF THEN pada tombol kedua yaitu BTN2. Jika tombol tersebut aktif maka nilai menit akan bertambah 1
If Btn2 = 0 Then
Menit = Menit + 1
End If