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