Pengujian Keypad Matriks 4 X 4

Program di atas akan menampilkan kata “LAMPU” di baris pertama pada display LCD 2x16. . Gambar 4.3 Pengujian LCD

4.4 Pengujian Keypad Matriks 4 X 4

Untuk pengujian keypad ada beberapa tahap. Tentukan terlebih dahulu kolom sebagai output dari mikrokontroler sedangkan baris sebagai input kemikrokontroler. Langkah pertama Scanning kolom 1 PB0 keluarkan output ke kolom 1PB0 kemudian deteksi penekanan baris1 PB4 kemudian deteksi penekanan baris2 PB5 kemudian deteksi penekanan baris3 PB6 kemudian deteksi penekanan baris4 PB7 Langkah kedua Scanning kolom 2 PB1 keluarkan output ke kolom 2 PB1 kemudian deteksi penekanan baris1 PB4 kemudian deteksi penekanan baris2 PB5 kemudian deteksi penekanan baris3 PB6 kemudian deteksi penekanan baris4 PB7 Langkah ketiga Scanning kolom 3 PB2 keluarkan output ke kolom 3 PB2 kemudian deteksi penekanan baris1 PB4 kemudian deteksi penekanan baris2 PB5 kemudian deteksi penekanan baris3 PB6 Universitas Sumatera Utara kemudian deteksi penekanan baris4 PB7 Langkah kempat Scanning kolom 4 PB3 keluarkan output ke kolom 4 PB3 kemudian deteksi penekanan baris1 PB4 kemudian deteksi penekanan baris2 PB5 kemudian deteksi penekanan baris3 PB6 kemudian deteksi penekanan baris4 PB7 Untuk pengujian matriks 4 x 4 dapat digunakan program sebagai berikut: include stdio.h void tekan_keypad_tampil_lcd penekanan keypad kemudian ditampilkan di LCD {PORTB = 0b11111110; if PINB.4 == 0{data=16;} else if PINB.5 == 0{data=15;} else if PINB.6 == 0{data=14;} else if PINB.7 == 0{data=13;} PORTB = 0b11111101; if PINB.4 == 0 {data=12;} else if PINB.5 == 0 {data=9;} else if PINB.6 == 0 {data=6;} else if PINB.7 == 0 {data=3;} PORTB = 0b11111011; if PINB.4 == 0 {data=11;} else if PINB.5 == 0 {data=8;} else if PINB.6 == 0 {data=5;} else if PINB.7 == 0 {data=2;} PORTB = 0b11110111; if PINB.4 == 0 {data=0;} Universitas Sumatera Utara else if PINB.5 == 0 {data=7;} else if PINB.6 == 0 {data=4;} else if PINB.7 == 0 {data=1;} }void mainvoid { DDRA=0DDA7 | 0DDA6 | 0DDA5 | 0DDA4 | 0DDA3 | 0DDA2 | 0DDA1 | 0DDA0; PORTA=0PORTA7 | 0PORTA6 | 0PORTA5 | 0PORTA4 | 0PORTA3 | 0PORTA2 | 0PORTA1 | 0PORTA0; PORTB=0xff; DDRB=0x0f; DDRC=0DDC7 | 0DDC6 | 0DDC5 | 0DDC4 | 0DDC3 | 0DDC2 | 0DDC1 | 0DDC0; PORTC=0PORTC7 | 0PORTC6 | 0PORTC5 | 0PORTC4 | 0PORTC3 | 0PORTC2 | 0PORTC1 | 0PORTC0; DDRD=0DDD7 | 0DDD6 | 0DDD5 | 0DDD4 | 0DDD3 | 0DDD2 | 0DDD1 | 0DDD0; PORTD=0PORTD7 | 0PORTD6 | 0PORTD5 | 0PORTD4 | 0PORTD3 | 0PORTD2 | 0PORTD1 | 0PORTD0; UCSRA=0RXC | 0TXC | 0UDRE | 0FE | 0DOR | 0UPE | 0U2X | 0MPCM; UCSRB=0RXCIE | 1TXCIE | 0UDRIE | 0RXEN | 1TXEN | 0UCSZ2 | 0RXB8 | 0TXB8; UCSRC=1URSEL | 0UMSEL | 0UPM1 | 0UPM0 | 0USBS | 1UCSZ1 | 1UCSZ0 | 0UCPOL; UBRRH=0x00; UBRRL=0x8F; while 1 { tekan_keypad_tampil_lcd; putchardata; Universitas Sumatera Utara } } Gambar 4.4 Pengujian Keypad Matriks 4.5 Pengujian Radio Frekuensi 315 MHZ Pengujian radio frekuensi 315 Mhz ini bertujuan untuk mengetahui keadaan alat tersebut. Alat tersebut digunakan untuk mengirim data secara nirkabel atau tanpa kabel. Berikut Hasil Pengujian transmitter dan Receiver dalam Bentuk tabel. Universitas Sumatera Utara Tabel 4.5. Pengujian Transmiter dan Receiver Jarak antara Transmiter dan Receiver m Lampu Kipas 5 m Nyala Nyala 10 m Nyala Nyala 15 m Nyala Nyala 20 m Nyala Nyala 25 m Mati Mati 30 m Mati Mati Pengujian alat ini yaitu dengan cara memberikan program dibawah ini untuk transmitter. include mega32.h include stdlib.h include delay.h char data=0; define DATA_REGISTER_EMPTY 1UDRE define RX_COMPLETE 1RXC define FRAMING_ERROR 1FE define PARITY_ERROR 1UPE define DATA_OVERRUN 1DOR define TX_BUFFER_SIZE 8 char tx_buffer[TX_BUFFER_SIZE]; if TX_BUFFER_SIZE = 256 unsigned char tx_wr_index=0,tx_rd_index=0; else unsigned int tx_wr_index=0,tx_rd_index=0; endif if TX_BUFFER_SIZE 256 Universitas Sumatera Utara unsigned char tx_counter=0; else unsigned int tx_counter=0; endif interrupt [USART_TXC] void usart_tx_isrvoid { if tx_counter { --tx_counter; UDR=tx_buffer[tx_rd_index++]; if TX_BUFFER_SIZE = 256 if tx_rd_index == TX_BUFFER_SIZE tx_rd_index=0; endif } } ifndef _DEBUG_TERMINAL_IO_ define _ALTERNATE_PUTCHAR_ pragma used+ void putcharchar c { while tx_counter == TX_BUFFER_SIZE; asmcli if tx_counter || UCSRA DATA_REGISTER_EMPTY==0 { tx_buffer[tx_wr_index++]=c; if TX_BUFFER_SIZE = 256 if tx_wr_index == TX_BUFFER_SIZE tx_wr_index=0; endif ++tx_counter; } else UDR=c; Universitas Sumatera Utara asmsei } pragma used- endif Program diatas mengirimkan carekter hello ketansmiter. Data tersebut dikirim dengan jenis data char. Kemudian untuk receiver yaitu dengan memasukan program sebagai berikut. include mega32.h include stdlib.h int data, data1; include alcd.h include delay.h define lampu OCR1B define kipas OCR1A unsigned int input =0; char buff[20]; define DATA_REGISTER_EMPTY 1UDRE define RX_COMPLETE 1RXC define FRAMING_ERROR 1FE define PARITY_ERROR 1UPE define DATA_OVERRUN 1DOR define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE]; if RX_BUFFER_SIZE = 256 unsigned char rx_wr_index=0,rx_rd_index=0; else unsigned int rx_wr_index=0,rx_rd_index=0; endif if RX_BUFFER_SIZE 256 unsigned char rx_counter=0; else Universitas Sumatera Utara unsigned int rx_counter=0; endif bit rx_buffer_overflow; interrupt [USART_RXC] void usart_rx_isrvoid { char status,data; status=UCSRA; data=UDR; if status FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN==0 { rx_buffer[rx_wr_index++]=data; if RX_BUFFER_SIZE == 256 special case for receiver buffer size=256 if ++rx_counter == 0 rx_buffer_overflow=1; else if rx_wr_index == RX_BUFFER_SIZE rx_wr_index=0; if ++rx_counter == RX_BUFFER_SIZE { rx_counter=0; rx_buffer_overflow=1; } endif } } ifndef _DEBUG_TERMINAL_IO_ define _ALTERNATE_GETCHAR_ pragma used+ char getcharvoid { char data; while rx_counter==0; Universitas Sumatera Utara data=rx_buffer[rx_rd_index++]; if RX_BUFFER_SIZE = 256 if rx_rd_index == RX_BUFFER_SIZE rx_rd_index=0; endif asmcli --rx_counter; asmsei return data; } pragma used- endif Dari program diatas data yang diterima dari transmiter berupa char. Dan pada program ini di konversi kedalam bilangan hexa.

4.6 Pengujian Alat Keseluruhan