Menampilkan nilai ‘koma’ pada AVR Mikrokontroler

Pada beberapa aplikasi mikrokontroler, kita kadang membutuhkan tampilan nilai dalam pecahan desimal. Sebagai contoh aplikasi termometer digital. Nilai yang diukur dalam bentuk 1 angka dibelakang koma, misalnya 27,8 Celcius. Nah gimana cara menampilkannya ke LCD ? Kita simulasikan yuk. Kita bikin dengan mikrokntroler Atmega8535 dan tampilan LCD 216.

Aplikasi Mikrokontroler

Baik, untuk program dengan bahasa Bascom-AVR perhatikan program berikut :

$regfile = “m8535.dat”
$crystal = 1000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Dim Suhu As Single
Dim S As String * 16
Suhu = 27.3567
S = Fusing(suhu , “##.#”)
Lcd “T=” ; Suhu
Locate 2 , 1
Lcd “T=” ; S
End

Banner MM AVR
Pada BASCOM-AVR cukup kita tambahkan perintah “Fusing”. Perhatikan baris S=Fusing(suhu,”##.#”). Suhu merupakan variabel bertipe single (floating point) atau pecahan. Tanda pagar “##.#” maksudnya 1 angka dibelakang koma. Kalau dikehendaki 2 angka dibelakang koma : “##.##”. Gampang bukan ? Nih hasilnya :

Hasil Tampilan BASCOM-AVR

Selanjutnya untuk bahasa C yaitu dengan CodeVisionAVR :

99 proyek arduino

#include  
#include
#include

float suhu;
char str[16];
void main(void)
{

lcd_init(16);
suhu = 27.3567;
sprintf(str,”T=%.2f”,suhu);
lcd_puts(str);
while (1)
      {  
      }
}

Perhatikan baris perintah : sprintf(str,”T=%.2f”,suhu);
Disitu konversi ke string memakai %.2f maksudnya 2 angka dibelakang koma. Jika menghendaki 3 angka dibelakang koma maka tinggal mengganti menjadi : %.3f.
Mudah juga bukan ? Berikut hasil untuk bahasa C. Oya pin RW dari LCD dihubungkan dengan PC.1 ya, beda dengan Bascom-AVR dimana pin RW terhubung ke ground.

Hasil Tampilan CVAVR

Selamat mencoba !

This entry was posted in Mikrokontroler AVR and tagged , , , , . Bookmark the permalink.

2 Responses to Menampilkan nilai ‘koma’ pada AVR Mikrokontroler

  1. sammy says:

    dear master inkubator…..
    bisa minta tlg di revisikan untuk menampilkan 2 angka desimal di bekang koma tuk program di bawah ini…
    ini sebenarnya program dari 9 proyek ultrasonik yang saya beli dari inkubatek cuma bingung mau nampilkan angka desimal nya
    mohon pencerahannya thx

    $regfile = “m16def.dat”
    $crystal = 16000000

    ‘——-deklarasi variabel
    Dim Jarak As Word , K As Word , T_air As Word , Vol As Single
    Dim La As Word
    ‘——- ———————-

    ‘——- konfigurasi Sensor SRF04 )))
    _trig Alias Portb.0
    _echo Alias Pinb.1

    Ddrb.0 = 1
    Ddrb.1 = 0
    Ddrd.0 = 1

    ‘——- konfigurasi LCD
    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
    Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
    Config Lcd = 16 * 2
    Cursor Off

    Cls
    Lcd ” PENGHITUNG VOLUME ”
    Lowerline
    Lcd ” BENSIN ”
    Wait 5
    Cls
    Lcd “Vol=”
    Lowerline
    Lcd “Stat=”
    ‘—–
    ‘ tinggi tangki 30 cm
    ‘ diameter alas 22 cm
    ‘ Luas alas = 3.14×11.25 x11.25 = 380 cm2
    ‘ pembulatan = 380 cm2
    La = 397.40

    Do
    Gosub Ukur_jarak
    If Jarak > 30 Then Jarak = 30
    T_air = 30 – Jarak
    Vol = La * T_air
    Vol = Vol / 1000
    ‘Vol = Vol1
    Locate 1 , 5
    Lcd Vol ; “L”
    ‘—— Menampilkan status
    If Vol 5 Then
    Locate 2 , 6
    Lcd “BBM aman”
    Portd.1 = 0
    End If
    Waitms 500

    Loop

    End
    ‘————————————
    Ukur_jarak:
    Jarak = 0
    _trig = 1
    Waitus 15
    _trig = 0
    Bitwait _echo , Set
    For K = 0 To 300
    If _echo = 1 Then Incr Jarak
    Waitus 58
    Next
    Return

    • admin says:

      Tipe variabel La itu bukan single ya, jadi kalau mau pecahan maka variabel2 yang berkaitan harus pecahan juga tidak bisa bilangan bulat (integer)

Leave a Reply