Aplikasi Mikrokontroler Untuk Menampilkan Karakter Ke Layar Televisi.

(1)

ABSTRAK

Setiap sistem terdiri atas 3 komponen utama yaitu komponen masukan, pemrosesan data, data keluaran. Keluaran sistem memiliki bermacam-mcam bentuk, salah satu bentuk keluaran sistem adalah informasi yang ditampilkan pada suatu media display. Informasi ini bisa berbentuk karakter atau angka-angka. Media display yang dipergunakan juga bermacam-macam seperti monitor, touch screen, televisi dan lain-lain. Pada penelitian tugas akhir ini hanya memfokuskan pada pemanfaatan televisi sebagai media display keluaran system.

Pada tugas akhir ini telah dirancang dan direalisasikan alat sederhana yang dapat menampilkan karakter berupa angka dan huruf berbasis mikrokontroler. Alat ini dirancang dengan menggunakan ATmega 16 dengan televisi sebagai media display keluaran. Di sini mikrokontroler diisi dengan program untuk menampilkan karakter ke televisi yang telah dikompile menjadi hexa file dan output dari mikrokontroler tersebut dikirim ke televisi melalui sebuah interface dengan menggunakan konektor RCA yellow .

Setelah dilakukan perancangan, realisasi, serta pengujian alat ternyata alat ini belum menampilkan karakter dengan baik. Hal ini disebabkan karena sulitnya mengatur sinkronisasi dan delay yang benar-benar tepat dengan sinkronisasi dan delay televisi. Namun alat ini dapat dikembangkan dengan menambahkan komponen seperti IC LM1880 yang dapat mengatur proses sinkronisasi dan delay dengan tepat sesuai dengan standar sinkronisasi televisi, sehingga karakter dapat ditampilkan dengan baik.


(2)

ABSTRACT

Every system consist of three primary components, those are input component, data process, and output data. Output system has many form, one of them is displayed information at one particular media display. This information form could be numbers or characters. Media display also many kinds such as monitor, touch screen, television and others. This final project only focussed at television utility as media display output.

This final project have been designed and realized the simple tool which is able to display characters in the form of numbers and letters base on mikrokontroler. This tool is designed by using ATmega 16 with television as media display. The mikrokontroler filled with program for displaying the characters to television which have compiled become hexa file, and the output from mikrokontroler is sent to television through an interface by using RCA yellow connector .

After designing, realizationing, and testing, the tool actually does not yet display the character better. It caused by the difficultness to arrange the synchronization and delay which is really precise to the synchronization and delay of the television. But this tool could be envolved by adding the component like IC LM1880 which is able to arrange the synchronization process and delay correctly according to the standard television synchronization. So that the character could be displayed better.


(3)

DAFTAR ISI

LEMBAR PENGESAHAN SURAT PERNYATAAN

ABSTRAK i

ABSTRACK ii

KATA PENGANTAR iii

DAFTAR ISI v

DAFTAR TABEL viii

DAFTAR GAMBAR ix

DAFTAR LAMPIRAN xi

BAB I PENDAHULUAN

I.1 Latar Belakang 1

I.2 Identifikasi Masalah 2

I.3 Tujuan 2

I.4 Pembatasan Masalah 2

I.5 Sistematika Pembahasan 3

BAB II LANDASAN TEORI

II.1 Mikrokontroler 4

II.4.1 Arsitektur ATMega16 5

II.4.2 Peta Memori 7


(4)

II.4.4 Serial Pheripheral Interface 9

II.2 Sinyal Video 12

II.3 Pengulasan (scanning) 13

II.4 Pulsa Sinkronisasi Horizontal 15 II.4.1 Bentuk Pulsa Sinkronisasi Horizontal 16 II.5 Pulsa Sinkronisasi Vertikal 16 II.5.1 Bentuk Pulsa Sinkronisasi Vertikal 17 II.6 Standar Sistem Televisi 18 II.6.1 PAL (Phase Alternating Lines) 18

BAB III PERANCANGAN

III.1 Cara Kerja Alat 19

III.2 Spesifikasi Alat 20

III.3 Perancangan Perangkat Keras 20 III.3.1 Perancangan Interface 20 III.3.2 Mikrokontroler ATMega16 21

III.3.3 Komputer 24

III.3.4 Display 24

III.4 Perancangan Perangkat Lunak 24 III.4.1 Diagram Alir Perangkat Lunak pada Mikrokontroler 25 III.4.2 Langkah Kerja Program 28

BAB IV PENGUJIAN DAN ANALISA

4.1 Pengujian Mikrokontroler 29 4.1.1 Analisa Pengujian Mikrokontroler 29 4.1.2 Analisa Pengujian Interface 32 4.2 Pengujian Bentuk Sinyal Keluaran Mikrokontroler 33


(5)

4.2.1 Analisa Bentuk Sinyal Keluaran Mikrokontroler 34

BAB V KESIMPULAN DAN SARAN

V.1 Kesimpulan 36

V.2 Saran 36

DAFTAR PUSTAKA 37

LAMPIRAN A DATA SHEET KOMPONEN

LAMPIRAN B LISTING PROGRAM MIKROKONTROLER

LAMPIRAN C SKEMA RANGKAIAN ALAT


(6)

DAFTAR TABEL

Tabel IV.1 Hasil Perhitungan Tegangan Port Keluaran 32


(7)

DAFTAR GAMBAR

Gambar II.1 Konfigurasi Kaki Pengendali Mikrokontroler ATMega16 5 Gambar II.2 Blok Diagram Fungsional ATMega16 6 Gambar II.3 Konfigurasi Memori Data AVR ATmega16 7 Gambar II.4 Memori Program AVR ATmega16 8

Gambar II.5 Register EECR 9

Gambar II.6 SPI Saat Menggunakan 1 Slave 10 Gambar II.7 Perubahan Shift Register Saat Komunikasi SPI 11 Gambar II.8 Tiga Level Sinyal Video 12 Gambar II.9 Proses Interlace Scanning Dalam Dua Bagian 14 Gambar II.10 Sinyal Gambar Komposit 15 Gambar II.11 Pulsa sinkronisasi Horizontal dan Sinyal Gambar 16 Gambar II.12 Sinyal gambar pada awal field ganjil dan akhir field genap 17 Gambar II.13 Sinyal gambar pada awal field genap dan akhir field ganjil 18 Gambar III.1 Diagram Blok Sistem 19 Gambar III.2 Sketsa Rangkaian Interface 21 Gambar III.3 Sketsa Utama Rangkaian Hardware 23 Gambar III.4 Diagram Alir Utama 25 Gambar III.5 Diagram Alir Subroutine PAL mode 26 Gambar III.6 Diagram Alir Subroutine PAL sinkronisasi 27 Gambar IV.1 Blok Tampilan Jika Data Sukses Dikirim 30 Gambar IV.2 Blok Tampilan Lengkap Jika Data Sukses Dikirim 30 Gambar IV.3 Blok Tampilan Jika Data Gagal Dikirim 31 Gambar IV.4 Blok Tampilan Lengkap Jika Data Gagal Dikirim 31 Gambar IV.5 Bentuk Sinyal Keluaran pada PB.5 33 Gambar IV.6 Bentuk Sinyal Keluaran pada PC.1 33 Gambar IV.7 Bentuk Sinyal Keluaran RCA Video 34


(8)

DAFTAR LAMPIRAN

LAMPIRAN A DATA SHEET KOMPONEN

LAMPIRAN B LISTING PROGRAM MIKROKONTROLER

LAMPIRAN C SKEMA RANGKAIAN ALAT

LAMPIRAN D FOTO RANGKAIAN ALAT


(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

LAMPIRAN B


(18)

//Simplest universal VGA(20x20)/PAL(38x20) terminal //For sync used Timer0 Timer1

//To avoid flickering while receive UART data,recommend to send UART data after VSYNC #include <avr/io.h> #include <avr/signal.h> #include <avr/sleep.h> #include <avr/pgmspace.h> #include <string.h> #include <inttypes.h> #include <stdint.h> #include <stddef.h> #include <string.h> #include "symbol_tbl.h"

#define true 1 #define false 0

#define NOP asm("nop")

//Global definitions for VGA render

#define vga_field_line_count 525 //standart VGA quantity lines #define vga_symbols_per_row 20 //symbols quantity per horizontal #define vga_row_count 20 //symbols quantity per vertical #define vga_symbol_height 24 //rendered symbol height


(19)

//Global defenitions for render PAL

#define pal_field_line_count 312 //standart PAL/SECAM quantity lines

(interlaced 625~312*2)

#define pal_symbol_height 12 //rendered symbol height #define pal_symbols_per_row 38 //symbols quantity per horizontal #define pal_row_count 20 //symbols quantity per vertical

//Makro for video handle //Video

#define video_off DDRB=0x90 #define video_on DDRB=0xB0

//HSYNC

//define hsync_off sbi(PORTD,3) #define hsync_off PORTD |=(1<<PD3);

//define hsync_on cbi(PORTD,3) #define hsync_on PORTD &=~(1<<PD3); //VSYNC

#define vsync_off PORTD |=(1<<PD2); //define hsync_off sbi(PORTD,2) #define vsync_on PORTD &=~(1<<PD3);

//define hsync_on cbi(PORTD,2)

//PAL Jumper

#define check_PAL_jumper bit_is_clear(PINC,1)

//Global variables

volatile unsigned char str_array

[pal_symbols_per_row*pal_row_count+1]; //Chars array for display buffer volatile unsigned int current_symbol; //Current symbol number at terminal


(20)

volatile unsigned char video_enable_flg; //flag for enable render

volatile unsigned char raw_render; //Current row at display buffer for render volatile unsigned int linecount; // current line for render

volatile unsigned char y_line_render; //Current Y-line at symbol for render

//Store strings data at Program Space, to avoid RAM leakage

const char str1[] PROGMEM = "Simple PAL terminal v1.2 UART-19200bps"; const char str2[] PROGMEM = "Kennery W.S Manurung";

const char str3[] PROGMEM = "0122088";

static void avr_init(void);

//All VGA sincronize made here.. SIGNAL(SIG_OVERFLOW0) {

TCNT0 = 0xC3; //reload counter value

//******Syncronization Handler********

//Count number of lines

if (++linecount == vga_field_line_count) {

linecount = 0;

//clear pointers for render display buffer raw_render = 0;

y_line_render = 0; }


(21)

//Make Vsync length 2 VGA lines if ((linecount == 10 )||(linecount == 11 ))

{

//Make here vertical syncronization & HSYNC syncro level on vsync_on;

} else {

//.. & HSYNC syncro level on vsync_off;

}

video_enable_flg = true;

if (linecount < 45) {

video_enable_flg = false; //Add to avoid flickering at top display

NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP;


(22)

NOP; NOP; NOP; NOP; NOP; NOP; NOP; } else {

//Forming current string for rendering

if (++y_line_render == vga_symbol_height) {

raw_render++; y_line_render = 0; } else { NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; }


(23)

}

hsync_off; //HSYNC syncro level off

//******Syncronization Handler********

}

//All PAL sincronize made here..

SIGNAL(SIG_OUTPUT_COMPARE1A) {

//Count number of lines

if (++linecount == pal_field_line_count) {

linecount = 0;

//clear pointers for render display buffer raw_render = 0;

y_line_render = 0; }

//Invert HSYNC for VSYNC

if (linecount > 305 && linecount < 309) {

//Make here vertical syncronization

//sbi(PORTC,1); //inverted syncro level on PORTC|=(1<<PC1);

char i = 15; while (--i)


(24)

{ NOP;}

//And "black" = 8 mksk;

//cbi(PORTC,1); //inverted syncro level off PORTC&=~(1<<PC1);

}

else {

//Make HSYHC = 4 mksk;

//cbi(PORTC,1); //syncro level on PORTC&=~(1<<PC1); char i = 30;

while (--i)

{ NOP;}

//And "black" = 8 mksk;

//sbi(PORTC,1); //syncro level off PORTC|=(1<<PC1); }

video_enable_flg = true;

if ((linecount < 40) || (linecount > 278)) {

video_enable_flg = false;

//Add to avoid flickering at top display NOP;

NOP; NOP; NOP; NOP;


(25)

NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; } else {

//Forming current string for rendering if (++y_line_render == pal_symbol_height)

{

raw_render++; y_line_render = 0; } else { NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP;


(26)

}

}

}

void spi_init (void) {

//Set SPI PORT DDR bits //sbi(DDRB, 7); //SCK //cbi(DDRB, 6); //MISO //sbi(DDRB, 5); //MOSI //sbi(DDRB, 4); //SS DDRB=0XB0;

SPSR = 1 << SPI2X;

SPCR = (1 << SPE) | (1 << MSTR); //SPI enable as master ,FREQ = fclk/2 //That's a great pity, that we can't work with SPI with FREQ = fclk,

//because may be possible build terminal up 40 symbol per row!!! }

static void uart_init(void) {

UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00;

UCSRC = 0x86; //8 bits data & 2 stop bits //UART SPEED 19200 bps

UBRRL = 0x33; //set baud rate lo UBRRH = 0x00; //set baud rate hi //UART SPEED 38400 bps

//UBRRL = 0x19; //set baud rate lo //UBRRH = 0x00; //set baud rate hi


(27)

//UART SPEED 76800 bps

//UBRRL = 0x0C; //set baud rate lo //UBRRH = 0x00; //set baud rate hi //UART SPEED 115200 bps //UBRRL = 0x08; //set baud rate lo //UBRRH = 0x00; //set baud rate hi //UART RX Enable

UCSRB = (1 << RXEN); }

static void pal_terminal_handle(void) {

// Parser received symbols from UART while(UCSRA & (1<<RXC))

{

unsigned char current_line, received_symbol; received_symbol = UDR;

//Check for overflow display buffer

if(current_symbol == (pal_row_count*pal_symbols_per_row)) {

//Clear display buffer unsigned char i = pal_row_count;

char * ptr;

//Set pointers for clear string array ptr = &str_array[0];

while(i--) {

//Don't use here loop, to fastest clear display buffer


(28)

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;


(29)

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

};

current_symbol = 0x0; }

switch ( received_symbol ) {

//BackSpace

case 0x08:

if(current_symbol)

{

str_array[current_symbol] = 0x0; str_array[--current_symbol] = 0x0;

} break;

//TAB

case 0x09:

if((current_symbol + 5) < (pal_row_count*pal_symbols_per_row)) {

//Add 5 Space


(30)

current_symbol += 5; }

break;

//RETURN

case 0x0D:

current_line = current_symbol / pal_symbols_per_row; if((current_line) < 19)

{

str_array[current_symbol] = 0x0;

current_symbol = current_line*pal_symbols_per_row + pal_symbols_per_row; }

break;

default: str_array[current_symbol++] = received_symbol; }

} }

void pal_render(void) {

unsigned char i; char * _ptr;

const char * _ptr1;

//Initialize display buffer with StartUp strings

strcpy_P(&str_array[pal_symbols_per_row*(pal_row_count-1)],&str1[0]);

//Enable global interrupt asm ("sei"); for(;;) {


(31)

//Wait compare interrupt signal from Timer1 sleep_mode();

//Check symbol on UART if (UCSRA & (1<<RXC))

{

//Parse received symbol pal_terminal_handle();

//Can easealy add here RX polling buffer //to avoid display flickering continue;

}

//To make horizontal shift rendered image i=14;

while(i--) NOP; //Check visible field if(video_enable_flg)

{

//OK, visible

//Main render routine

//Set pointer for render line (display bufffer)

_ptr = &str_array[raw_render * pal_symbols_per_row];

//Set pointer for render line (character generator) _ptr1 = &symbol[0][y_line_render];

//Cycle for render line


(32)

video_on; while(i--)

{

SPDR = pgm_read_byte(_ptr1 + (* _ptr++)*pal_symbol_height);

//That's a great pity can't shift data faster (8Mhz at FOSC=16Mhz)!!

NOP; NOP; NOP; }

//Delay for draw last symbol i=6;

while(i--) NOP;

video_off;

} else {

//Not visible //Can do something else..

//******Cursor handle******

//Count frame

static unsigned int framecount; framecount++;

//Here draw cursor

if (framecount&0x800) {


(33)

str_array[current_symbol] = ' '; }

else {

str_array[current_symbol] = 0x7F; }

//******Cursor handle******

//You can add here your own handlers.. }

}//for(;;)

}

static void vga_terminal_handle(void) {

// Parser received symbols from UART while(UCSRA & (1<<RXC))

{

unsigned char current_line, received_symbol; received_symbol = UDR;

//Check for overflow display buffer

if(current_symbol == (vga_row_count*vga_symbols_per_row)) {


(34)

//Clear display buffer

unsigned char i = vga_row_count;

char * ptr;

//Set pointers for clear string array ptr = &str_array[0];

while(i--) {

//Don't use here loop, to fastest clear display buffer

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;

*ptr++ = 0x0;


(35)

};

current_symbol = 0x0; }

switch ( received_symbol ) {

//BackSpace

case 0x08:

if(current_symbol)

{

str_array[current_symbol] = 0x0; str_array[--current_symbol] = 0x0;

} break;

//TAB

case 0x09:

if((current_symbol + 5) < (vga_row_count*vga_symbols_per_row)) {

//Add 5 Space

str_array[current_symbol] = 0x0;

current_symbol += 5;

} break;

//RETURN

case 0x0D:

current_line = current_symbol / vga_symbols_per_row; if((current_line) < 19)


(36)

str_array[current_symbol] = 0x0;

current_symbol = current_line*vga_symbols_per_row + vga_symbols_per_row; }

break;

default: str_array[current_symbol++] = received_symbol; }

} }

void vga_render() {

unsigned char i; char * _ptr;

const char * _ptr1;

//Initialize display buffer with StartUp strings

strcpy_P(&str_array[vga_symbols_per_row*(vga_row_count-2)],&str2[0]); strcpy_P(&str_array[vga_symbols_per_row*(vga_row_count-1)],&str3[0]);

//Enable global interrupt asm ("sei"); for(;;) {

//Wait compare interrupt signal from Timer1 sleep_mode();

//Check symbol on UART if (UCSRA & (1<<RXC))


(37)

//Parse received symbol

vga_terminal_handle(); continue;

}

//Check visible field

if(video_enable_flg) {

//OK, visible

//Main render routine

//Set pointer for render line (display bufffer)

_ptr = &str_array[raw_render * vga_symbols_per_row];

//Set pointer for render line (character generator)

_ptr1 = &symbol[0][y_line_render >> 1];

//Cycle for render line

i = vga_symbols_per_row; while(i--)

{

SPDR = pgm_read_byte(_ptr1 + (* _ptr++)*vga_symbol_height/2);

video_on;

//That's a great pity can't shift data faster (8Mhz at FOSC=16Mhz)!! NOP;

NOP; }

//Delay for draw last symbol NOP;


(38)

NOP; NOP; NOP; NOP; video_off; } else {

//Not visible //Can do something else..

//******Cursor handle******

//Count frame

static unsigned int framecount; framecount++;

//Here draw cursor

if (framecount&0x800) {

str_array[current_symbol] = ' '; }

else {

str_array[current_symbol] = 0x7F; }

//******Cursor handle******

//You can add here your own handlers.. }


(39)

}//for(;;) } #include <avr/io.h> int main(void) { avr_init(); //Check pin VGA/PAL

if(check_PAL_jumper) pal_render(); else vga_render(); return(0); }

static void avr_init(void) {

//Set pin jumper VGA/PAL //sbi(DDRC,0); DDRC&=~(1<<DDC0); //sbi(PORTC,0); PORTC|=(1<<PC0); //Enable SPI spi_init(); //init uart uart_init();


(40)

//Set power mode

set_sleep_mode(SLEEP_MODE_IDLE);

//Check pin mode VGA/PAL if(check_PAL_jumper) {

//init PAL SYNC port //sbi(PORTC,1);

PORTC|=(1<<PC1); //sbi(DDRC,1);

DDRC|=(1<<DDC1);

//C.0 is sync:1000 ohm + diode to 75 ohm resistor //MOSI is video:330 ohm + diode to 75 ohm resistor

// Initialize Sync for PAL

OCR1A = 1024; //One PAL line 64us

TCCR1B = (1<<WGM12)|(1<<CS10);//full speed; clear-on-match TCCR1A = 0x00; //turn off pwm and oc lines

TIMSK = 1<<OCIE1A; //enable interrupt from Timer1 CompareA }

else {

//init VGA SYNC ports //HSYNC

//sbi(PORTD,3);

PORTD=(1<<PD3); //sbi(DDRD,3);


(41)

//VSYNC //sbi(PORTD,2); PORTD=(1<<PD2); //sbi(DDRD,2);

DDRD=(1<<DDD2);

// Initialize Sync for VGA TCCR0 = 0x00; //stop

TCNT0 = 0xC3; //set count, One VGA line 31.77us TCCR0 = 1<<CS01; //start timer with prescaler select 1/8 TIMSK = 1<<TOV0; //enable interrupt from Timer0 overflow }

return; }


(42)

LAMPIRAN C


(43)

(44)

(45)

LAMPIRAN D


(46)

(47)

Rangkaian Alat Untuk Menampilkan Karakter Ke Layar TV


(48)

(49)


(50)

(51)

(52)

BAB I

PENDAHULUAN

Pada bab I laporan tugas akhir ini akan dijelaskan mengenai latar belakang, identifikasi masalah, tujuan, pembatasan masalah dan sistematika penulisan.

I.1 Latar Belakang

Adanya kemajuan teknologi dibidang Video/Visual membuat Kartu Grafik sangat dibutuhkan. Karena dengan instrumen ini gambar atau tulisan yang muncul pada layar dapat dinikmati sesuai dengan yang diinginkan. Merk dan harganya yang bervariasi dipasaran membuat kualitas instrumen ini berbeda-beda, semakin tinggi harganya semakin bagus kualitas gambar yang dihasilkan. Melihat masalah ini penyusun mencoba untuk membuat alat sederhana yang dapat menampilkan karakter ke layar TV.

Aplikasi alat ini bisa digunakan di tempat-tempat umum seperti di bandara udara, rumah sakit, apotik atau juga di stasiun. Selain karakter aplikasi alat ini bisa juga dikembangkan untuk menampilkan gambar baik diam ataupun bergerak. Tapi pada penulisan laporan Tugas Akhir ini, alat ini hanya diaplikasikan untuk menampilkan karakter saja yang berupa angka dan huruf ke layar TV. Alat ini akan dirancang dengan menggunakan sebuah Mikrokontroller AVR ATMega16.

Diharapkan melalui perancangan alat ini dapat memberikan sumbangan pengetahuan yang cukup berguna bagi para pembaca yang mungkin tertarik untuk mengembangkannya lebih lanjut.


(53)

I.2 Identifikasi Masalah

ƒ Bagaimana bentuk sinyal yang dapat diterima oleh Televisi ?

ƒ Bagaimana mengubah output dari Mikrokontroler menjadi Composite Video Signal agar dapat ditampilkan di layar TV ?

I.3 Tujuan

Tujuan pelaksanaan tugas akhir ini adalah merancang dan merealisasikan alat sederhana berbasis mikrokontroler AVR untuk menampilkan karakter ke layar Televisi.

I.4 Pembatasan Masalah

ƒ Mikrokontroler yang digunakan adalah AVR AT Mega16. ƒ Output pada TV berupa karakter (angka dan huruf).

ƒ Tampilan pada TV berupa karakter hitam putih tanpa background. ƒ Karakter yang ditampilkan adalah 20 baris 38 karakter.

ƒ Jenis sinyal yang ditampilkan adalah Video Monokrom PAL. ƒ Menggunakan TV sebagai output display.


(54)

I.5 Sistematika Penulisan

Laporan tugas akhir ini terdiri atas lima bab dengan penyusunan sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi penjelasan mengenai latar belakang, identifikasi masalah, tujuan, pembatasan masalah, dan sistematika pembahasan untuk memberikan gambaran secara umum mengenai tugas akhir yang dilakukan.

BAB II DASAR TEORI

Pada bab ini akan diuraikan tentang mikrokontroler AVR, arsitektur AT Mega16, sinyal video, teknik pengulasan (scanning), bentuk pulsa sinkronisasi, standar sistem televisi.

BAB III PERANCANGAN

Pada bab ini akan diuraikan mengenai perancangan perangkat keras, perangkat lunak, cara kerja alat, spesifikasi alat yang digunakan, diagram alir serta langkah kerja program yang digunakan untuk merealisasikan alat sederhana yang dapat menampilkan karakter ke layar televisi berbasis mikrokontroler.

BAB IV PENGUJIAN DAN ANALISA

Pada bab ini berisi tentang pengujian masing-masing rangkaian dari alat untuk menampilkan karakter ke layar televisi beserta analisa datanya.

Bab V KESIMPULAN DAN SARAN

Pada bab ini akan dipaparkan kesimpulan dan saran-saran yang dapat digunakan untuk mengembangkan topik ini lebih lanjut.


(55)

BAB V

KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan dari data pengamatan dan saran.

V.1 Kesimpulan

1. Setelah melakukan percobaan dan analisa maka dapat disimpulkan bahwa bentuk sinyal yang dapat diterima oleh televisi adalah bentuk sinyal analog yang dihasilkan dari gabungan proses encode sinkronisasi, intensitas dan warna dalam satu kawat.

2. Beberapa komponen yang digunakan dalam pengerjaan Tugas Akhir ini sudah berfungsi dengan semestinya. Namun ada beberapa hal yang menyebabkan mikrokontroler belum dapat menampilkan karakter dengan baik yaitu sulitnya pengaturan sinkronisasi dan delay yang benar-benar tepat.

3. Untuk dapat mengubah output dari Mikrokontroler menjadi Composite Video Signal agar dapat diterima oleh TV maka diperlukan suatu interface yang dapat menghasilkan sinyal analog dengan level tegangan antara 0, 0.3 dan 1 V.


(56)

V.2 Saran

1. Agar tampilan keluaran yang dihasilkan oleh mikrokontroller benar-banar baik maka perlu ditambahkan beberapa komponen lagi, seperti IC LM1880 yang dapat mengatur dan mengontrol sistem proses sinkronisasi dan delay lebih akurat lagi sesuai dengan standar proses sinkronisasi pada televisi .

2. Alat ini dapat dikembangkan dengan menggunakan keypad sebagai input karakter yang akan ditampilkan ke layar televisi.

LAMPIRAN A


(1)

(2)

UNIVERSITAS KRISTEN MARANTHA

BAB I

PENDAHULUAN

Pada bab I laporan tugas akhir ini akan dijelaskan mengenai latar belakang, identifikasi masalah, tujuan, pembatasan masalah dan sistematika penulisan.

I.1 Latar Belakang

Adanya kemajuan teknologi dibidang Video/Visual membuat Kartu Grafik sangat dibutuhkan. Karena dengan instrumen ini gambar atau tulisan yang muncul pada layar dapat dinikmati sesuai dengan yang diinginkan. Merk dan harganya yang bervariasi dipasaran membuat kualitas instrumen ini berbeda-beda, semakin tinggi harganya semakin bagus kualitas gambar yang dihasilkan. Melihat masalah ini penyusun mencoba untuk membuat alat sederhana yang dapat menampilkan karakter ke layar TV.

Aplikasi alat ini bisa digunakan di tempat-tempat umum seperti di bandara udara, rumah sakit, apotik atau juga di stasiun. Selain karakter aplikasi alat ini bisa juga dikembangkan untuk menampilkan gambar baik diam ataupun bergerak. Tapi pada penulisan laporan Tugas Akhir ini, alat ini hanya diaplikasikan untuk menampilkan karakter saja yang berupa angka dan huruf ke layar TV. Alat ini akan dirancang dengan menggunakan sebuah Mikrokontroller AVR ATMega16.

Diharapkan melalui perancangan alat ini dapat memberikan sumbangan pengetahuan yang cukup berguna bagi para pembaca yang mungkin tertarik untuk mengembangkannya lebih lanjut.


(3)

UNIVERSITAS KRISTEN MARANTHA I.2 Identifikasi Masalah

ƒ Bagaimana bentuk sinyal yang dapat diterima oleh Televisi ?

ƒ Bagaimana mengubah output dari Mikrokontroler menjadi Composite Video Signal agar dapat ditampilkan di layar TV ?

I.3 Tujuan

Tujuan pelaksanaan tugas akhir ini adalah merancang dan merealisasikan alat sederhana berbasis mikrokontroler AVR untuk menampilkan karakter ke layar Televisi.

I.4 Pembatasan Masalah

ƒ Mikrokontroler yang digunakan adalah AVR AT Mega16. ƒ Output pada TV berupa karakter (angka dan huruf).

ƒ Tampilan pada TV berupa karakter hitam putih tanpa background. ƒ Karakter yang ditampilkan adalah 20 baris 38 karakter.

ƒ Jenis sinyal yang ditampilkan adalah Video Monokrom PAL. ƒ Menggunakan TV sebagai output display.


(4)

UNIVERSITAS KRISTEN MARANTHA I.5 Sistematika Penulisan

Laporan tugas akhir ini terdiri atas lima bab dengan penyusunan sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi penjelasan mengenai latar belakang, identifikasi masalah, tujuan, pembatasan masalah, dan sistematika pembahasan untuk memberikan gambaran secara umum mengenai tugas akhir yang dilakukan.

BAB II DASAR TEORI

Pada bab ini akan diuraikan tentang mikrokontroler AVR, arsitektur AT Mega16, sinyal video, teknik pengulasan (scanning), bentuk pulsa sinkronisasi, standar sistem televisi.

BAB III PERANCANGAN

Pada bab ini akan diuraikan mengenai perancangan perangkat keras, perangkat lunak, cara kerja alat, spesifikasi alat yang digunakan, diagram alir serta langkah kerja program yang digunakan untuk merealisasikan alat sederhana yang dapat menampilkan karakter ke layar televisi berbasis mikrokontroler.

BAB IV PENGUJIAN DAN ANALISA

Pada bab ini berisi tentang pengujian masing-masing rangkaian dari alat untuk menampilkan karakter ke layar televisi beserta analisa datanya.

Bab V KESIMPULAN DAN SARAN

Pada bab ini akan dipaparkan kesimpulan dan saran-saran yang dapat digunakan untuk mengembangkan topik ini lebih lanjut.


(5)

UNIVERSITAS KRISTEN MARANTHA

BAB V

KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan dari data pengamatan dan saran.

V.1 Kesimpulan

1. Setelah melakukan percobaan dan analisa maka dapat disimpulkan bahwa bentuk sinyal yang dapat diterima oleh televisi adalah bentuk sinyal analog yang dihasilkan dari gabungan proses encode sinkronisasi, intensitas dan warna dalam satu kawat.

2. Beberapa komponen yang digunakan dalam pengerjaan Tugas Akhir ini sudah berfungsi dengan semestinya. Namun ada beberapa hal yang menyebabkan mikrokontroler belum dapat menampilkan karakter dengan baik yaitu sulitnya pengaturan sinkronisasi dan delay yang benar-benar tepat.

3. Untuk dapat mengubah output dari Mikrokontroler menjadi Composite Video Signal agar dapat diterima oleh TV maka diperlukan suatu interface yang dapat menghasilkan sinyal analog dengan level tegangan antara 0, 0.3 dan 1 V.


(6)

UNIVERSITAS KRISTEN MARANTHA V.2 Saran

1. Agar tampilan keluaran yang dihasilkan oleh mikrokontroller benar-banar baik maka perlu ditambahkan beberapa komponen lagi, seperti IC LM1880 yang dapat mengatur dan mengontrol sistem proses sinkronisasi dan delay lebih akurat lagi sesuai dengan standar proses sinkronisasi pada televisi .

2. Alat ini dapat dikembangkan dengan menggunakan keypad sebagai input karakter yang akan ditampilkan ke layar televisi.

LAMPIRAN A