Thursday, May 15, 2014

Interfacing barcode reader dengan mikrokontroler

Interface barcode reader dan mikrokontroler




LCD dot matrik ini membutuhkan sepuluh buah pin masukan/keluaran dari mikrokontroler. Adapun pin-pin tersebut yakni PortB.0 pada kaki RS yang digunakan sebagai sinyal pemilih register dan portB.1 pada pada kaki RD yang digunakan untuk mengatur pembacaan atau penulisan pada LCD. Serta portB.2 pada kaki Enable digunakan sebagai sinyal operasi awal, sinyal enable ini mengaktifkan data tulis atau baca oleh mikrokontroler. Pada portB.4-7dihubungkan dengan pin data bus pada LCD yang digunakan untuk menampilkan karakter yang dikehendaki oleh mikrokontroler. Ketika terdapat data pada jalur data, data tersebut akan ditahan dengan memberikan clock pin E pada LCD. Pin RS menentukan apakah data yang ditahan akan digunakan sebagai instruksi untuk mengatur setting tampilan pada LCD atau sebagai kode karakter yang diperlukan LCD untuk menampilkan suatu karakter. 
             
 Untuk pin Vcc pada LCD dihubungkan ke supply +Vcc dan Vss dihubungkan ke ground. Pin VLC beserta pin Vcc dan Vss dihubungkan ke potensio. Potensio ini digunakan untuk mengatur kontras dari tampilan LCD dengan cara mengubah tegangan pada pin VLC .


 
Untuk menghubungkan barcode reader dengan mikrokontroler terdapat 4 pin yang perlu dihubungkan antara lain Vcc, Gnd, Clock dan Data. Untuk Vcc dihubungkan ke catu daya +5V dan Gnd dihubungkan ke ground catu daya. Untuk pin clock dihubungkan ke kaki interupsi pada mikrokontroler sehingga mikrokontroler akan mengkonversi data setiap ada clock masukan pada kaki tersebut. Sedangkan untuk kaki data dihubungkan pada kaki portD.7 yang merupakan data input dari barcode reader. Barcode reader akan mengirimkan sinyal clock dan data pada saat yang hampir bersamaan. Kemudian mikrokontroler akan menterjemahkan hasil input dari barcode reader setelah mikrokontroler mendapatkan 11bit data dari barcode reader. Data-data tersebut antara lain 1 bit start, 8 bit data, 1 parity dan 1 bit stop. Data-data tersebut kemudian akan diterjemahkan oleh mikrokontroler sehingga dapat diproses lebih lanjut.  

berikut adalah copy program untuk menghubungkan barcode reader dengan mikrokontroler dan ditampilkan ke dalam LCD 2x16



char Barcode[10];
int data[15],index,count,cc;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
    if((count>=1)&&(count<9))
    {
        if((count<9)&&(index<14))
        {
            data[index]=data[index]<<1;
            data[index]=data[index]+PIND.3;
        }
    }
    count++;
    if(count==33)
    {
        count=0;
    }
    if(count==0)
        index++;
       
    cc++;   

}

// Declare your global variables here
char GetAsci(int val)
{
    char retval;
        if (val==0xA2)retval=48;//'0'
        else if (val==0x68)retval=49;//'1'
        else if (val==0x78)retval=50;//'2'
        else if (val==0x64)retval=51;//'3'
        else if (val==0xA4)retval=52;//'4'
        else if (val==0x74)retval=53;//'5'
        else if (val==0x6C)retval=54;//'6'
        else if (val==0xBC)retval=55;//'7'
        else if (val==0x7C)retval=56;//'8'
        else if (val==0x62)retval=57;//'9'
        else retval=88;   
    return retval;
}
void ReadBarcode()
{
    int i;
    char code[8];
   
    sprintf(Barcode,"");
    for(i=0;i<10;i++)
      {
        code[i]=GetAsci(data[i]);
        sprintf(Barcode,"%s%c",Barcode,code[i]);
      }
}


// Global enable interrupts
#asm("sei")
count=0;index=0;cc=0;
for(i=0;i<15;i++)
    data[i]=0;
while (1)
      {
      //for(i=0;i<15;i++)  code[i]=GetAsci(data[i]);
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_putsf("NIM:");
      //sprintf(buff,"%c%c%c%c%c%c%c%c%c%c",code[0],code[1],code[2],code[3],code[4],code[5],code[6],code[7],code[8],code[9]);
      lcd_gotoxy(0,1);
      //lcd_puts(buff);
      ReadBarcode();
      lcd_puts(Barcode);
      delay_ms(200);
      };
}




untuk listing program lengkapnya dapat di download disini

1 comment: