Senin, 19 Juli 2010

Trik Cerdas Troubleshooting DVD/VCD Player

Beberapa trik dalam memperbaiki DVD/VCD Player pada beberapa kerusakan :
  1. Hidupkan perangkat atau DVD/VCD Player. Jika mati total, periksa catu daya apakah memberikan tegangan yang sesuai atau tidak. Jika tidak, ganti modul catu daya tersebut (harganya sekitar 60 ribu rupiah)
  2. Jika catu daya normal, periksa apakah perangkat tersebut dapat membaca disc atau tidak. Ini dapat dilihat dari putaran disc tersebut yang cepat. Jika putarannya ternyata cepat, cek kabel data DVD/VCD mungkin putus karena sering bergerak atau cek driver motor pemutar disc tersebut.
  3. Jika sensor optik sudah tidak sensitif (sering gagal membaca disc/no disc). Ganti sensor optik tersebut (harganya sekitar 120 ribu rupiah)
  4. Jika kabel tidak putus dan pemutar bagus, besar kemungkinan modul MPEG rusak. Anda dapat mengganti IC yang diduga rusak menggunakan solder uap atau mengganti modul MPEG tersebut yang harganya sekitar 150 ribu rupiah.
Mudah-mudahan setelah membaca artikel ini anda dapat mencoba sendiri memperbaiki DVD/VCD Player.

Kamis, 08 Juli 2010

Komunikasi Serial Mikrokontroler

  • Pengenalan Komunikasi Serial
Pada prinsipnya komunikasi serial merupakan komunikasi dimana pengiriman data dilakukan per bit sehingga lebih lambat dibandingkan komunikasi paralel,
seperti pada port printer yang mampu mengirim 8 bit sekaligus dalam satu detak.

  • Peralatan Komunikasi Serial
Peralatan (device) pada komunikasi port serial dibagi menjadi 2 kelompok, yaitu Data Communication Equipment (DCE) dan Data Terminal (DTE).
Konektor port serial terdiri dari 2 jenis, yaitu konektor 25 pin(DB25) dan 9 pin (DB9) yang saling berpasangan. Bentuk dari konektor DB-25 sama persis dengan port paralel.
Umumnya COM1 berada di alamat 3F8H sedangkan COM2  di alamat 2F8H.



  • Komunikasi  Serial AT89S51/52
AT89S51/52 mempunyai On Chip serial port yang dapat digunakan untuk komunikasi data serial secara Full-Duplex sehingga port serial ini masih dapat menerima data pada saat
proses pengiriman data untuk menampung data yang diterima atau data yang akan dikrimkan.
Keluarga MCS-51 mempunyai sebuah register, yaitu SBUF yang terletak pada alamat 99H, dimana register ini berfungsi sebagai buffer pada saat mikrokontroler membaca data yang pertama dan data yang kedua yang belum diterima secara penuh  sehingga data tersebut tidak hilang.
Register SBUF terdiri  dari dua  buah register yang memang mempunyai alamat yang sama, yaitu 99H. Register tersebut merupakan Transmit Buffer Register yang bersifat  Wrute only (hanya dapat ditulis) dan Receive Buffer Register yang bersifat read only(hanya dapat dibaca).



Contoh program pengaturan LCD menggunakan port serial:
#include
#include
#include
#define PORT1 0x3F8  /* alamat port*/
  /* Definisi alamat base port serial */
  /* COM1 0x3F8                        */
  /* COM2 0x2F8                   */
  /* COM3 0x3E8                   */
  /* COM4 0x2E8                   */
void main(void)
{
 int c;
 int count;
 char init[] = { 0x0F, 0x01, 0x38 };
                 /* 0x0F - Init Display */
                 /* 0x01 - Clear Display */
                 /* 0x38 - Dual Line / 8 Bits */
 outportb(PORT1 + 1 , 0x0);   /* mematikan interupt - Port1 */
 outportb(PORT1 + 3 , 0x80);  /* SET DLAB ON */
 outportb(PORT1 + 0 , 0x0C);  /* Set Baud rate */                
                  /*         0x06 =  19,200 BPS */
                  /*         0x0C =   9,600 BPS */
                  /*         0x18 =   4,800 BPS */
                  /*         0x30 =   2,400 BPS */
 /* Set Baud rate - Divisor Latch High Byte */
outportb(PORT1 + 1 , 0x00);
outportb(PORT1 + 3 , 0x03);  /* 8 Bits, No Parity, 1 Stop Bit */
 outportb(PORT1 + 2 , 0xC7);  /* FIFO Control Register */
 outportb(PORT1 + 4 , 0x0B);  /* Turn on DTR, RTS, and OUT2 */
/* Register Select (DTR) */
 outportb(PORT1 + 4 , (inportb(PORT1 + 4) | 0x01));
/* 0 = Instruction Register */
 for (count = 0; count < 3; count++)
  {
   outportb(PORT1, init[count]);      /* kirim Init Data Bytes */
   delay(20);                         /* delay untuk  INIT */
  }
/* Register Select (DTR) */
/* 1 = Data Register */
outportb(PORT1 + 4 , (inportb(PORT1 + 4) & 0xFE));
printf("\nContoh program LCD Serial. Tekan ESC untuk keluar \n");
do {
     if (kbhit()){
          c = getch();
          outportb(PORT1, c);
          printf("%c",c);
         }
    } while (c !=27);