Translate

Program Basic Untuk Parsing Input Serial

Program Basic Untuk Parsing Input Serial

           Kali ini akan membahas bagaimana cara untuk mengambil data yang dikirimkan melalui port serial mikrokontroller ATMega dan ditampilkan ke 7segment display, jadi ceritanya terdapat mikrokontroller A yang mengirimkan data (misal data jarak) melalui wiireless atau kabel kemudian mikrokontroller B menerimanya melalui port serial juga RX dan TX, nah bagaimana caranya agar data jarak itu bisa diambil dan ditampilkan ke display 7segment ?, caranya yaitu menggunakan parameter parsing dan logika SIPO,
           Jadi ada 2 data yang dikirimkan oleh mikrokontroller A yaitu seperti ini :
        
           Temp = 31
           Distance = 4333 mm

           Nah bagaimana kita mengambil hanya data jaraknya saja tanpa mengambil data suhu ?, cara nya yaitu menggunakan deteksi kata "Distance" kemudian ditampilkan nilai sesudahnya, ambil 1 bit data untuk ratusan, puluhan dan satuan kemudian ubah dari string ke integer lalu dikeluarkan secara serial  ke 7segment, berikut skema 7segment dan program bascom AVRnya.

1. Minimum System



 2. Skematik Driver 7Segment


         Urutan pemasangan driver 7segment ke mikrokontroller yaitu PortA.0, PortA.1, PortA.2, PortA.3, VCC, GND, untuk 7segment yang dipakai yaitu common anoda dan IC driver 7segment yang dipakai yaitu IC 4094 CMOS

3. Program Bascom AVR

$regfile = "m8535.dat"
$crystal = 11059200
$baud = 19200

Dim Data_masuk As String * 100
Dim Cmd_pos As Byte
Dim Pjg_data As Byte
Dim Cmd As String * 18
Dim Cmd1 As String * 1
Dim Cmd2 As String * 1
Dim Cmd3 As String * 1
Dim Cmdbin As Byte
Dim Byteratusan As Byte
Dim Bytepuluhan As Byte
Dim Bytesatuan As Byte

Dim Y As Integer
Dim Ratusan As Integer
Dim Puluhan As Integer
Dim Satuan As Integer

Config Porta.0 = Output
Config Porta.1 = Output
Config Porta.2 = Output
Config Porta.3 = Output

Datas Alias Porta.0
Strobe Alias Porta.2
Clock Alias Porta.1
Oe Alias Porta.3

Strobe = 1
Oe = 0

Do

   Input Data_masuk

   Pjg_data = Len(data_masuk)

   Cmd_pos = Instr(data_masuk , "Distance")

   If Cmd_pos <> 0 Then
      'mengambil 1 bit data urutan ke 11 dari data_masuk 
      Cmd3 = Mid(data_masuk , 11 , 1 ) 
      'mengambil 1 bit data urutan ke 12
      Cmd2 = Mid(data_masuk , 12 , 1 )
      'mengambil 1 bit data urutan ke 13
      Cmd1 = Mid(data_masuk , 13 , 1 )

       'proses merubah string ke integer
 
   If Cmd1 = "0" Then
   Satuan = 0
   Elseif Cmd1 = "1" Then
   Satuan = 1
   Elseif Cmd1 = "2" Then
   Satuan = 2
   Elseif Cmd1 = "3" Then
   Satuan = 3
   Elseif Cmd1 = "4" Then
   Satuan = 4
   Elseif Cmd1 = "5" Then
   Satuan = 5
   Elseif Cmd1 = "6" Then
   Satuan = 6
   Elseif Cmd1 = "7" Then
   Satuan = 7
   Elseif Cmd1 = "8" Then
   Satuan = 8
   Elseif Cmd1 = "9" Then
   Satuan = 9
   End If

   If Cmd2 = "0" Then
   Puluhan = 0
   Elseif Cmd2 = "1" Then
   Puluhan = 1
   Elseif Cmd2 = "2" Then
   Puluhan = 2
   Elseif Cmd2 = "3" Then
   Puluhan = 3
   Elseif Cmd2 = "4" Then
   Puluhan = 4
   Elseif Cmd2 = "5" Then
   Puluhan = 5
   Elseif Cmd2 = "6" Then
   Puluhan = 6
   Elseif Cmd2 = "7" Then
   Puluhan = 7
   Elseif Cmd2 = "8" Then
   Puluhan = 8
   Elseif Cmd2 = "9" Then
   Puluhan = 9
   End If


   If Cmd3 = "0" Then
   Ratusan = 0
   Elseif Cmd3 = "1" Then
   Ratusan = 1
   Elseif Cmd3 = "2" Then
   Ratusan = 2
   Elseif Cmd3 = "3" Then
   Ratusan = 3
   Elseif Cmd3 = "4" Then
   Ratusan = 4
   Elseif Cmd3 = "5" Then
   Ratusan = 5
   Elseif Cmd3 = "6" Then
   Ratusan = 6
   Elseif Cmd3 = "7" Then
   Ratusan = 7
   Elseif Cmd3 = "8" Then
   Ratusan = 8
   Elseif Cmd3 = "9" Then
   Ratusan = 9
   End If

      'menampilkan ke 7segment
   For Y = 1 To 10
   Oe = 1
   Bytesatuan = Lookup(satuan , Data7seg)                  
   Shiftout Datas , Clock , Bytesatuan , 1
   Bytepuluhan = Lookup(puluhan , Data7seg)              
   Shiftout Datas , Clock , Bytepuluhan , 1
   Byteratusan = Lookup(ratusan , Data7seg)               
   Shiftout Datas , Clock , Byteratusan , 1
   Next Y
   Wait 1

   End If


Loop


Data7seg:
Data &B11000000                                             '0
Data &B11111001                                             '1
Data &B10100100                                             '2
Data &B10110000                                             '3
Data &B10011001                                             '4
Data &B10010010                                             '5
Data &B10000010                                             '6
Data &B11111000                                             '7
Data &B10000000                                             '8
Data &B10010000                                             '9










No comments:

Post a Comment