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
terimakasih gan. saya cobak dulu
ReplyDelete