Interface remote tv sony dengan TSOP 1738 berbasis atmega 16……. Untuk membaca data tombol remote TV sony. Kita dapat membuat alat reciver remote sony dengan tampilan LCD berbasis atmega 16. Rangkaian sebagai berikut….. PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/IN T2 3 PB3/AIN1/O C0 4 PB4/SS 5 PB5/M O SI 6 PB6/MISO 7 P B 7/SCK 8 RESET 9 X TA L2 12 X TA L1 13 PD0/RXD 14 PD 1/TXD 15 PD2/IN T0 16 PD3/IN T1 17 PD4/O C1B 18 PD5/O C1A 19 PD6/IC P1 20 PD7/O C2 21 PC 0/SC L 22 PC1/SDA 23 PC 2/TC K 24 PC3/TM S 25 PC4/TD O 26 PC5/TD I 27 PC 6/TO SC1 28 PC 7/TO SC2 29 P A 7/ADC 7 33 P A 6/ADC 6 34 P A 5/ADC 5 35 P A 4/ADC 4 36 P A 3/ADC 3 37 P A 2/ADC 2 38 P A 1/ADC 1 39 P A 0/ADC 0 40 AREF 32 AVCC 30 U1 A TM E G A 16 C1 47uf R1 4k7 X1 CRYSTAL C2 22p C3 22p D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LC D 1 LM 016L RV1 50K 1 2 3 TSO P 1738 A. Universal remote control TV SONY Remote sony memiliki feature 12-bit, 15-bit and 20- bit versions of the protocol exist (12-bit described here). 5-bit address and 7-bit command length (12-bit protocol) . Untuk modulasi lebar pulsa saat “high” atau “low” adalah :
37
Embed
Interface Remote Tv Sony Dengan TSOP 1738 Berbasis Atmega 16
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Interface remote tv sony dengan TSOP 1738 berbasis atmega 16…….
Untuk membaca data tombol remote TV sony. Kita dapat membuat alat reciver
remote sony dengan tampilan LCD berbasis atmega 16.
E Enable0 = strast to lach data to LCD character1 = disable
7 DB0 Data bit ke-0 (LSB)8 DB1 Data bit ke-19 DB2 Data bit ke-210 DB3 Dat bit ke-311 DB4 Data bit ke-412 DB5 Dat bit ke-513 DB6 Data bit ke-614 DB7 Data bit ke-7 (MSB)15 BPL Back Plane Light16 GND Ground voltage
(Heri andrianto,2008)Secara umum setiap pinnya didefinisikan sebagai berikut :
a. .Pin 1 : Ground
b. Pin 2 : Vcc
c. Pin 3 : VEE (contrast)
d. Pin 4 : RS (Register Select).
0 = Instruction Register. 1 = Data Register
e. Pin 5 : R/W (Read / Write mode).
0 = Write Mode. 1 = Read Mode
f. Pin 6 : En (Enable).
0 = start to latch data to LCD. 1 = Disable
g. Pin7-14 : DB0 - DB7 (Data Bus)
h. Pin 15 : Back Light (+)
i. Pin16 : Back Light (-)
Display karakter pada LCD diatur oleh pin EN, RS dan RW. Jalur EN dinamakan
Enable. Jalur ini digunakan untuk memberitahu LCD bahwa kita sedang mengirimkan
sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat
logika low “0” dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur yang
lain telah siap, set EN dengan logika “1” dan tunggu untuk sejumlah waktu tertentu (sesuai
dengan datasheet dari LCD tersebut) dan berikutnya set EN ke logika low “0” lagi. Jalur
RS adalah jalur Register Select. Ketika RS berlogika low “0”, data akan dianggap perintah
atau instruksi khusus (seperti clear screen, posisi kursor, dll). Ketika RS berlogika high
“1”, data yang dikirim adalah data text yang akan ditampilkan pada display LCD. Sebagai
contoh, untuk menampilkan huruf “T” pada layar LCD maka RS harus diset logika high
“1”. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka
informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”,
maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi
umum pin RW selalu diberi logika low ”0”. Setiap pemberian logika RS, EN, dan R/W
membutuhkan waktu sekitar 15ms.
C. Mikrokontroler ATmega 16
AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis
arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi
dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter
fleksibel dengan compare mode, interrupt internal dan eksternal, serial UART,
programmable Watchdog Timer, dan mode power saving, ADC dan PWM internal. AVR
juga mempunyai In-System Programmable Flash on-chip yang mengijinkan memori
program untuk ulang dalam sistem menggunakan hubungan serial SPI. (Solikhul Hadi,
2008:1)
ATMega 16 salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai
macam fungsi. Pada mikrokontroler AVR sudah terdapat oscillator internal dan ADC.
Selain itu AVR memiliki Power-On Reset, yaitu tidak perlu adanya tombol reset dari luar,
karena hanya cukup mematikan supply, maka secara otomatis AVR akan melakukan reset.
ATmega16 dilengkapi dengan 32 jalur I/O yang dapat digunakan untuk
mengakses data dari luar dan mengeluarkan data. Komponen ATmega16 dibuat dengan
konfigurasi pin dan set intruksinya sesuai dengan standar industri dari keluarga
mikrokontroler ATmega16.
1. Konfigurasi Pin ATmega 16
Gambar 3. Konfigurasi kaki (pin) ATmega 16
(www.atmel.com)
ATmega 16 memiliki 40 pin yang masing-masing pin memiliki fungsi yang
berbeda-beda baik sebagai port maupun sebagai fungsi lainya. Fungsi dari masing-
masing pin pada ATmega 16 adalah sebagai berikut:
a. VCC
VCC berfungsi sebagai masukan catu daya.
b. GND
GND merupakan Ground. Referensi nol suplai tegangan digital.
c. Port A
Port A yaitu pin nomor 33 sampai 40 (PA0..PA7) merupakan port I/O 8-bit
dengan resistor pull-up internal tiap pin. Buffer port D memiliki kapasitas menyerap
dan menyatu. Fungsi lain dari pin ini adalah sebagai input ADC.
d. Port B
Port B yaitu pin nomor 1 sampai 8 (PB0..PB7). Port I/O dua arah
(bidirectional) 8-bit dengan resistor pull-up internal tiap pin. Buffer port B memiliki
kapasitas menyerap dan menyatu. Fasilitas khusus dari port B ini adalah adanya In-
System Programming, yaitu PB5 sebagai MOSI, PB6 sebagai MISO, PB7 sebagai
Port C yaitu pin nomor 22 sampai 29 (PC0..PC7). Port I/O dua arah
(bidirectional) 8-bit dengan resistor pull-up internal tiap pin dan pin fungsi
khusus.Buffer port C memiliki kapasitas menyerap dan menyatu.
Tabel 3. Fungsi Khusus Port C ATmega 16
Port Pin Fungsi Alternatif
PC7 TOSC2 (Timer Oscillator Pin2)
PC6 TOSC1 (Timer Oscillator Pin1)
PC5 TD1 (JTAG Test Data In)PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-wire Serial Bus Data Input/Output Line)PC0 SCL (Two-wire Serial Bus Clock Line)
(Atmel Corporation 2002)
f. Port D
Port D yaitu pin nomor 14 sampai 21 (PD0..PD7). Port I/O dua arah
(bidirectional) 8-bit dengan resistor pull-up internal tiap pin. Buffer port D
memiliki kapasitas menyerap dan menyatu.Fasilitas khusus dari port D ini yakni
PD0 sebagai RXD, PD1 sebagai TXD. Seperti dapat dilihat pada tabel berikut:
Tabel 4. Fungsi Khusus Port D ATmega 16
Port Pin Fungsi Alternatif
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICP (Timer/Counter1 Input Capture Pin)PD5 OC1A (Timer/Counter1 Output Compare A Match Output)PD4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
(Atmel Corporation ,2002)
g. RESET
Fungsi pin ini adalah untuk mereset mikrokontroler ATmega 16. Sinyal LOW
pada pin ini dengan lebar minimum 1,5µs akan membawa mikrokontroler pada
kondisi RESET meskipun clock tidak sedang berjalan. Sinyal dengan lebar kurang
dari 1,5µs tidak menjamin terjadinya reset.
h. AREF
Pin analog untuk tegangan referensi ADC.
i. XTAL 1
Merupakan pin input penguat inverting oscillator dan input clock Eksternal.
j. XTAL 2
Merupakan pin output dari penguat inverting oscillator.
k. AVCC
AVCC adalah pin suplai tegangan untuk ADC. Pin ini harus dihubungkan
dengan VCC, meskipun ADC tidak digunakan, jika ADC digunakan VCC harus
dihubungkan ke AVCC melalui low-pass filter untuk mengurangi noise. (Atmel
Corporation: 2003).
1. Arsitektur Mikrokontroler AVR RISC
Gambar 4. Arsitektur Mikrokontroler AVR RISC
(www.atmel.com)
Dari gambar di atas, AVR menggunakan arsitektur Harvard dengan
memisahkan antara memori dan bus untuk program dan data untuk memaksimalkan
kemampuan dan kecepatan. Instruksi dalam memori program dieksekusi dengan
pipelining single level. Dimana ketika satu instruksi dieksekusi, instruksi berikutnya
diambil dari memori program.
Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPU terdiri
dari 32x8 bit general purpose register yang dapat diakses dengan cepat dalam satu
clock cycle, yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat dilakukan
dalam satu cycle. Pada operasi ALU, dua operand berasal dari register, kemudian
operasi dieksekusi dan hasilnya disimpan kembali pada register dalam satu clock cycle.
Operasi aritmatik dan logic pada ALU akan mengubah bit-bit yang terdapat pada Status
Register (SREG). Proses pengambilan instruksi dan pengeksekusian instruksi berjalan
secara parallel.
Gambar 3. Proses pengambilan dan pengeksekusian instruksi secara parallel.
Secara umum, pemrograman C paling sederhana dapat dilakukan dengan hanya
menuliskan program utamanya saja. Beberapa peraturan yang ada dalam bahasa C adalah:
1. Header
Header berisi include file (.hex), yaitu library (pustaka) yang akan digunakan
dalam pemrograman. Perhatikan contoh dibawah ini:
#include <mega16.h>
#include <delay.h>
#incude <stdio.h>
2. Tipe Data
Berikut ini adalah tabel tipe-tipe variabel data yang dapat digunakan di compiler
Code Vision AVR:
Tabel 7. Type Data
Type Size (Bits) Range
Bit 1 0,1
Char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
Int 16 -32768 to 32767
short int 16 -23768 to32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
unsigned long int 32 0 to 4294967295
signed long int 32 -2147483648 to 2147483647
Float 32 ±1.175e-38 to ±3.402e38
Double 32 ±1.175e-38 to ±3.402e38
(Heri andrianto,2008:21)
3. Konstanta
Penulisan konstanta adalah sebagai berikut:
a. Integer atau long integer dapat ditulis dengan format decimal (contoh 1234), biner
dengan awalan 0b (contoh 0b101001), heksadesimal dengan awalan 0x (contoh 0xff)
atau oktal dengan awalan 0 (contoh 0777).
b. Unsigned integer ditulis dengan diakhiri U (contoh 10000U).
c. Long integer ditulis dengan diakhiri L (contoh 99L).
d. Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL).
e. Floating point ditulis dengan diakhiri F (contoh 1.234F).
Karakter konstanta harus ditulis dalam tanda kutip (contoh ‘a’), sedangkan
konstanta string harus dalam tanda kutip dua (contoh “Saya Belajar C”).
4. Label, Variabel, Fungsi
Identifikasi label, variabel dan fungsi dapat berupa huruf (A…Z, a…z) Dan
angka (0…9), juga karakter underscore (_). Meskipun begitu identikasi hanya bias
dimulai dengan huruf atau karakter underscore. Yang lebih penting lagi, identifikasi ini
Case is significant, yaitu huruf besar dan kecil berbeda. Misal Variable1 tidak sama
dengan variabel1. Identifikasi bisa memuat sebanyak 32 karakter.
5. Komentar
Komentar diawali dengan tanda ’/*’ dan diakhiri dengan ‘*/’. Perhatikan
contoh dibawah:
/* ini komentar */
6. Reserved Keywords
Berikut ini adalah daftar kata baku yang tidak bias dipakai (reserfed keywords)
untuk label, identifikasa atau variable:
Break flash signed do int typedef
Bib float sizeof double interrupt union
Case for sfrb eeprom long unsigned
Char funcused sfrw else register void
const goto static enum return volatile
continue if struct extern short while
default inline witch
7. Operator
Berikut ini beberapa operator yang digunakan pada bahasa pemrograman C
adalah:
a. Operator Kondisi
Operator kondisi menyediakan operator yang dimaksudkan untuk menyatakan
kondisi. Operator kondisi dilihat pada Tabel 7.
Tabel 8. Operator Kondisi
Operator Kondisi Keterangan.
< Lebih kecil
<= Lebih kecil atau sama dengan
> Lebih besar
>= Lebih besar sama dengan
= = Sama dengan
!= Tidak sama dengan
a. Operator Aritmatika
Operator untuk operasi aritmatika yang tergolong operator binary seperti
yang terdapat pada Tabel 8.
Tabel 9. Operator Aritmatika
(Heri Andrianto:
2008)
b. Operator Logika
Merupakan operasi boolean yang terdiri dari AND, OR, NOT.
Tabel 10. Operator logika
Operator logika Keteranagan
! Bolehan NOT
&& Bolehan AND
|| Bolehan OR
Operator aritmatika keteranagan
+ Penjumlahan
- Penguranagan
* Perkalian
/ Pembagian
% Sisa hasil bagi
(Heri Andrianto: 2008)
c. Operator Bitwise
Tabel 11. Operator bitwise
Operator bitwise Keteranagan
~ Komplemen Bitwise
& Bitwise AND
| Bitwise OR
^ Bitwise Exclusive OR
>> Right Shift
<< Left Shift
(Heri Andrianto: 2008)
d. Operasi assignment
Tabel 12. Operasi assignment.
Operator assignment
Keterangan
= Untuk memasukan nilai
+ = Untuk menambahkan nilai dari keadaan semula
- = Untuk mengurangi nilai dari keadaan semula
*= Untuk mengkalikan nilai dari keadaan semula
/= Untuk melakukan pembagian nilai dari bilanagan semula
%= Untuk memasukan nilai sisa hasil dari pembagian bilangan semula
<<= Untuk memasukan shift left
>>= Untu memasukan shift right
&= Untuk memasukan bitwise AND
^= Untuk memasukan bitwise OR
\= Untuk memasukan bitwise XOR
(Heri Andrianto: 2008)
8. Konversi Pola ( % )
Karakter % dipakai sebagai operator konversi pola. Konversi pola akan
sangat berguna pada saat kita menampilkan hasil ke LCD.
a. %d menampilkan bilangan bulat positif.
Contoh: Sprintf (buf,”angka%d”,14);
b. %o menampilkan bilangan octal bulat.
c. %x menampilkan bilangan heksadesimal bulat.
d. %u menampilkan bilangan decimal tanpa tanda.
e. %f menampilkan bilangan pecahan.
f. %i menampilkan bilangan integer.
g. %c menampilkan karakter yang ditunjukkan bilangan ASCII.
9. Memasukkan Bahasa Assembly
Sering disebut juga dengan in-line assembly. Pemrograman dengan bahasa C ini
masih dapat memasukkan bahasa assembly ke dalam program C. Struktur
penulisannya juga mudah, yaitu:
…
#asm //dimulai dengan #asm
nop// blok bahasa assembly
nop//
#endasm // diakhiri dengan #endasm
….
Atau
….
#asm(“nop\nop\nop”)
….
10. Pernyataan kendali lainnya
a. Break
Pernyataan ini akan menghentikan dan menyebabkan keluar dari suatu blok
program.
b. Continue
Pernyataan ini akan menyebabkan kendali melakukan kembali proses
perulangan dari awal.
c. Goto – label
Pernyataan ini akan melakukan loncatan ke label yang dituju.. .(Heri Andrianto:
2008)
B. ISIS Proteus
Proteus adalah sebuah software yang memiliki kemampuan simulasi rangkaian
elektronik dan simulasi terhadap firmware pada embedded system seperti
mikrokontroler. Proteus memiliki labcenter elektronik yang menyediakan macam alat
ukur, mulai dari oscilloscope, frequency counter, spectrum analyzer, multimeter, signal
generator komponen baik pasif, aktif maupun embedded system (uP) dengan jumlah
yang tidak terbatas.
C. ARES (Avenced Routing and Editing Software)
ARES (Avenced Routing and Editing Software) merupakan software yang
digunakan untuk mendesain layout PCB. Software ini merupakan salah satu modul dari
Proteus Sistem. Pada software ini dilengkapi perangkat untuk mendesain PCB dengan
beragam tool yang disediakan. (Cholis Syarifudin: 2011). Tool yang penting dalam
menggambar layout PCB seperti Gambar 27.
Gambar 27. Simbol pada Ares
Package merupakan tool yang digunakan dalam pengambilan komponen
sedangkan trace digunakan untuk menggabungkan atau membuat jalur antar komponen.
List progam
lib remote tv soni. TSOP1738slamet harimukti***********************************************************/unsigned int nilai,count, code, pulse_count; unsigned char data[15]; bit tanda;void timer0_init();// External Interrupt 0 service routineinterrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here tanda=~tanda; if(tanda==1) { MCUCR=0x03; //rissing edge timer0_init(); //timer0 on, nilai=0, mulai mencacah } else { TCCR0=0; //timer0 off, berhenti mencacah count=TCNT0; //simpan nilai timer0 MCUCR=0x02; //falling edge if(pulse_count>0){ data[pulse_count]=count; if(data[pulse_count] >9) //9*0.0853=0.7677ms { code = code | (1 << (pulse_count-1)); } else { code = code & ~(1 << (pulse_count-1)); };
pulse_count=pulse_count+1; //sinyal pertama tanda=1 if(pulse_count==12) //jumlah data = 8 bit { nilai=code; nilai=nilai&0b0000111111111111; code= pulse_count=0; }; } else //verifikasi start bit atau start pulse (2.4 ms long) {
if(count >= 28) // pulse = 2.4ms maka adalah sinyal start bit (28*0.08533ms = 2.3892ms) { pulse_count=pulse_count+1; } else { delay_ms(20); // tunda 20ms } }; }; } //timer0 initvoid timer0_init(){ //8-bit timer for measuring delay between IR pulses TCNT0 = 0; //reset the timer TCCR0 = 0x05; //CLK / 1024 0.0853ms}void remot_init(){ tanda=0; MCUCR=0x02; GICR |= 0x40; // Global enable interrupts #asm(“sei”)}void remot_off(){ tanda=0; MCUCR=0x00; GICR = 0x00; // Global enable interrupts #asm(“cli”)}
Tabel 5. Data pada tombol remote sony.Tombol Kode Remote Tombol Kode Remote