SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
LAPORAN PRAKTIKUM MIKROKONTROLER
2
DISUSUN OLEH :
Nama : MUHAMMAD TAUFIK
Kelas : 2 ELEKTRONIKA B
Tingkat : 2 (Dua)
Semester : 4 ( Empat )
POLITEKNIK MANUFAKTUR NEGERI
BANGKA BELITUNG
2014/2015
Kawasan Industri Air Kantung Sungailiat 33211
Bangka Induk Propinsi Kepulauan Bangka Belitung
Telp : (0717) 431335 ext. 2281, 2126
Fax : (0717) 93585 email : polman@polman-babel.ac.id
http://www.polman-babel.ac.id/
Praktikum 1
Aplikasi Keypad 4x4 dengan Output LCD
#include <mega32.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
void main(void)
{PORTA=0x00;
DDRA=0xF0;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
lcd_init(16);
while(1)
{ delay_ms(5);
lcd_init(16);
PORTA=0b11101111;
delay_ms(5);
if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('1');}
if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('4');}
if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('7');}
if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('D');}
delay_ms(5);
PORTA=0b11011111;
delay_ms(5);
if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('2');}
if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('5');}
if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('8');}
if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('0');}
delay_ms(5);
PORTA=0b10111111;
delay_ms(5);
if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('3');}
if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('6');}
if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('9');}
if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('E');}
delay_ms(5);
PORTA=0b01111111;
delay_ms(5);
if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('A');}
if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('B');}
if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('C');}
if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('F');}
delay_ms(5);}}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data
masukan berasal dari Keypad.
Pada Program keypad merupakan kumpulan pushbutton dimana agar kita dapat
menggunakan tiap tombol kita harus menyeleksi data tiap kolom dan baris dengan logika
low(0) dengan contoh program PORTA=0b11101111/untuk kolom; if(PINA.0==0)/untuk
baris maka kita dapat menggunakan tombol pada kolom 0 pada baris ke 0. Kemudian karena
lcd_gotoxy(0,0); lcd_putchar() maka data pada keypad / putchar() pada kolom ke 0 baris ke 0
akan dimasukan pada LCD pada baris ke 0 kolom ke 0. Pada program ini tiap tombol pada
keypad 4x4 dimasukan dengan data yang berbeda. Untuk menggunakan/ menampilkan data
pada keypad yang tersimpan maka kita harus memanggil selektor data pada tiap baris dan
kolom maka saat program dijalankan dan tombol ditekan maka akan menampilkan data pada
LCD sesuai data pada tombol yang ditekan.
Tugas 1A
Aplikasi Keypad 4x4 dengan Output 7Segment
#include <mega32.h>
#include <delay.h>
void main(void)
{PORTA=0x00;
DDRA=0xF0;
PORTB=0x00;
DDRB=0xF0;
PORTC=0xFF;
DDRC=0xFF;
while(1)
{
delay_ms(5);
PORTA=0b11101111;
delay_ms(5);
if(PINA.0==0){PORTC = 0xE1;}
if(PINA.1==0){PORTC = 0xE4;}
if(PINA.2==0){PORTC = 0xE7;}
if(PINA.3==0){PORTC = 0xED;}
delay_ms(5);
PORTA=0b11011111;
delay_ms(5);
if(PINA.0==0){PORTC = 0xE2;}
if(PINA.1==0){PORTC = 0xE5;}
if(PINA.2==0){PORTC = 0xE8;}
if(PINA.3==0){PORTC = 0xE0;}
delay_ms(5);
PORTA=0b10111111;
delay_ms(5);
if(PINA.0==0){PORTC = 0xE3;}
if(PINA.1==0){PORTC = 0xE6;}
if(PINA.2==0){PORTC = 0xE9;}
if(PINA.3==0){PORTC = 0xEE;}
delay_ms(5);
PORTA=0b01111111;
delay_ms(5);
if(PINA.0==0){PORTC = 0xEA;}
if(PINA.1==0){PORTC = 0xEB;}
if(PINA.2==0){PORTC = 0xEC;}
if(PINA.3==0){PORTC = 0xEF;}
delay_ms(5);}
}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan 7Segment dengan data yang berasal dari PINA dengan
data masukan berasal dari Keypad.
Pada Program keypad kita harus menyeleksi data tiap kolom dan baris dengan logika
low(0) dengan contoh program PORTA=0b11101111/untuk kolom; if(PINA.0==0)/untuk
baris maka kita dapat menggunakan tombol pada kolom 0 pada baris ke 0. Kemudian karena
PORTC = 0xE.. Maka pada keypad pada kolom ke 0 baris ke 0 akan menampilkan data ke
7Segment. Pada program ini tiap tombol pada keypad 4x4 dimasukan dengan tampilan
7Segment dengan data yang berbeda. Maka untuk menggunakan/ menampilkan data pada
saat keypad ditekan maka kita harus memanggil selektor data pada tiap baris dan kolom maka
saat program dijalankan dan tombol ditekan maka akan menampilkan data pada 7Segment
sesuai tombol yang ditekan.
Tugas 1B
Aplikasi Keypad 4x4 Counter UP/ Down dengan Output LCD
#include <mega32.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
// Declare your global variables here
int i;
unsigned char kata[16];
void naik(void)
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Counter UP");lcd_putsf(" ");i++;
delay_ms(200);
while(PINA.2==0){}; }
void turun(void)
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Counter down");lcd_putsf(" ");i--;
delay_ms(200);
while(PINA.3==0){} }
void reset(void)
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Reset");lcd_putsf(" ");i=0;
delay_ms(200);
}
void main(void)
{PORTA=0x00;
DDRA=0xF0;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{ if(i==101) i=0;
if (i<0) i=0;
sprintf(kata,"%d",i);
lcd_gotoxy(0,1);
lcd_puts(kata);
PORTA=0b11011111;
delay_ms(5);
if(PINA.3==0){reset();}
delay_ms(5);
PORTA=0b01111111;
delay_ms(5);
if(PINA.2==0){naik();}
delay_ms(5);
PORTA=0b01111111;
delay_ms(5);
if(PINA.3==0){turun();}
delay_ms(5);}
}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data
masukan berasal dari Keypad.
Pada Program keypad kita ingin membuat Counter Up dan Counter Down dengan
tombol panah atas dan bawah dengan tombol 0 untuk reset. Maka agar kita dapat
menggunakan tombol keypad dengan meyeleksi baris dan kolom keypad sesuai tombol yang
diinginkan. Pada program ini kita mengunakan sub menu naik turun reset dengan naik untuk
proses Counter Up ,turun untuk Counter Down, dan Reset untuk mereset nilai, Di program ini
juga kita menggunakan data i yang tersimpan agar proses looping dapat berulang. Sehingga
pada saat program dijalankan pada menu utama saat tombol panah atas ditekan akan
membaca data sub menu atas dan menampilkan pada LCD Counter Up 0-100. Pada saat
tombol panah bawah diatas maka akan menjalankan perintah sub menu bawah sehingga
menampilkan Counter Down dari i-0 pada LCD dan saat tombol 0 ditekan maka i=0 sehingga
akan menampilkan angka 0 pada LCD.
Praktikum 2
Aplikasi ADC dengan Output LED
#include <mega32.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60
unsigned char read_adc(unsigned char adc_input)
{ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;}
void main(void)
{PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AVCC pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
while (1)
{PORTC = read_adc(0);
delay_ms(1000);};
}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LED dengan data yang berasal dari PINA dengan data
ADC
Pada Program ini kita ingin menyalakan LED dengan tegangan yang berasal dari
ADC PINA. Maka agar kita harus menyeting PINA sebagai ADC sehingga saat program
dijalankan maka karena PORTC = read_adc maka Led akan aktif dengan tegangan ADC port
A dimana tegangan tersebut diatur oleh potensiometer. Sehingga nyala LED tergantung dari
tegangan ADC yang berasal dari potensiometer pada PINA.
Tugas 2A.1
Menghitung tegangan ADC 8 BIT dan ditampilkan ke LCD
#include <mega32.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60
unsigned char nilai[16];
unsigned char bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7;
int data;
unsigned char read_adc(unsigned char adc_input)
{ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;}
void main(void)
{PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AVCC pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{data=read_adc(0);
sprintf(nilai,"D=%4d",data);
lcd_gotoxy(0,0);
lcd_puts(nilai);
delay_ms(100);
sprintf(nilai,"H=%2xH",data);
lcd_gotoxy(8,0);
lcd_puts(nilai);
delay_ms(100);
//BINER
bit0=data%2;
bit1=data/2%2;
bit2=data/4%2;
bit3=data/8%2;
bit4=data/16%2;
bit5=data/32%2;
bit6=data/64%2;
bit7=data/128%2;
lcd_gotoxy(0,1);
lcd_putchar(bit0+0x30);
delay_ms(10);
lcd_gotoxy(1,1);
lcd_putchar(bit1+0x30);
delay_ms(10);
lcd_gotoxy(2,1);
lcd_putchar(bit2+0x30);
delay_ms(10);
lcd_gotoxy(3,1);
lcd_putchar(bit3+0x30);
delay_ms(10);
lcd_gotoxy(4,1);
lcd_putchar(bit4+0x30);
delay_ms(10);
lcd_gotoxy(5,1);
lcd_putchar(bit5+0x30);
delay_ms(10);
lcd_gotoxy(6,1);
lcd_putchar(bit6+0x30);
delay_ms(10);
lcd_gotoxy(7,1);
lcd_putchar(bit7+0x30);
delay_ms(10);}}
Nilai ADC Pada 8 bit
No Vref
Vin
Analog
ADC
Perhitungan
ADC
Yang
Terukur
%ERROR
1 5 0 0 0 0%
2 5 0.1 4.54 5 1%
3 5 0.2 9.07 9 1%
4 5 0.3 13.61 14 3%
5 5 0.4 18.15 18 1%
6 5 0.5 22.69 23 1%
7 5 0.6 27.22 27 1%
8 5 0.7 31.76 31 2%
9 5 1 45.37 47 3%
10 5 2 90.75 91 0%
11 5 2.5 113.43 115 1%
12 5 3 136.12 139 2%
13 5 4 181.49 181 0%
14 5 5 226.87 230 1%
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data
ADC
Pada Program ini kita ingin menghitung tegangan yang berasal dari ADC PINA
dengan ADC 8 Bit. Maka agar kita harus menyeting PINA sebagai ADC. Dengan data PINA
maka akan diproses pada rumus Desimal, Biner, dan Heksa. Pada program ini
sprintf(nilai,"D=%4d",data) untuk mengubah data ADC menjadi bilangan desimal,
sprintf(nilai,"H=%2xH",data) untuk mengubah data ADC menjadi bilangan Heksa, dan
program bit0=data%2… untuk mengubah data ADC menjadi bilangan Biner, sehingga saat
program dijalankan maka karena Data = read_adc maka data ADC akan terbaca pada LCD
dengan tegangan diatur oleh potensiometer. Sehingga pada LCD akan menampilkan
Tegangan ADC pada bilangan Desimal, Biner, dan Heksa sesuai dengan Tabel Pengukuran.
Tugas 2A.2
Menghitung tegangan ADC 10 BIT dan ditampilkan ke LCD
#include <mega32.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input)
{ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;}
// Declare your global variables here
unsigned char nilai[16];
int bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8,bit9;
int data;
void main(void)
{PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{ data=read_adc(0);
sprintf(nilai,"D=%4d",data);
lcd_gotoxy(0,0);
lcd_puts(nilai);
delay_ms(100);
sprintf(nilai,"H=%2xH",data);
lcd_gotoxy(8,0);
lcd_puts(nilai);
delay_ms(100);
//BINER
bit0=data%2;
bit1=data/2%2;
bit2=data/4%2;
bit3=data/8%2;
bit4=data/16%2;
bit5=data/32%2;
bit6=data/64%2;
bit7=data/128%2;
bit8=data/256%2;
bit9=data/512%2;
lcd_gotoxy(0,1);
lcd_putchar(bit0+0x30);
delay_ms(10);
lcd_gotoxy(1,1);
lcd_putchar(bit1+0x30);
delay_ms(10);
lcd_gotoxy(2,1);
lcd_putchar(bit2+0x30);
delay_ms(10);
lcd_gotoxy(3,1);
lcd_putchar(bit3+0x30);
delay_ms(10);
lcd_gotoxy(4,1);
lcd_putchar(bit4+0x30);
delay_ms(10);
lcd_gotoxy(5,1);
lcd_putchar(bit5+0x30);
delay_ms(10);
lcd_gotoxy(6,1);
lcd_putchar(bit6+0x30);
delay_ms(10);
lcd_gotoxy(7,1);
lcd_putchar(bit7+0x30);
lcd_gotoxy(8,1);
lcd_putchar(bit8+0x30);
lcd_gotoxy(9,1);
lcd_putchar(bit9+0x30);
delay_ms(10); };}
Nilai ADC Pada 10 bit
No Vref
Vin
Analog
ADC
Perhitungan
ADC
Yang
Terukur
%ERROR
1 5 0 0 0 0%
2 5 0.1 18.37 19 3%
3 5 0.2 36.73 36 2%
4 5 0.3 55.10 56 2%
5 5 0.4 73.46 75 2%
6 5 0.5 91.83 92 0%
7 5 0.6 110.20 110 0%
8 5 0.7 128.56 128 0%
9 5 1 183.66 189 3%
10 5 2 367.32 364 1%
11 5 2.5 459.16 457 0%
12 5 3 550.99 556 1%
13 5 4 734.65 730 1%
14 5 5 918.31 915 0%
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data
ADC
Pada Program ini kita ingin menghitung tegangan yang berasal dari ADC PINA
dengan ADC 10 Bit. Maka agar kita harus menyeting PINA sebagai ADC. Dengan data
PINA maka akan diproses pada rumus Desimal, Biner, dan Heksa. Pada program ini
sprintf(nilai,"D=%4d",data) untuk mengubah data ADC menjadi bilangan desimal,
sprintf(nilai,"H=%2xH",data) untuk mengubah data ADC menjadi bilangan Heksa, dan
program bit0=data%2… untuk mengubah data ADC menjadi bilangan Biner, sehingga saat
program dijalankan maka karena Data = read_adc maka data ADC akan terbaca pada LCD
dengan tegangan diatur oleh potensiometer. Sehingga pada LCD akan menampilkan
Tegangan ADC pada bilangan Desimal, Biner, dan Heksa sesuai dengan Tabel Pengukuran.
Tugas 2B
Menggeser nyala LED dengan data ADC dan ditampilkan ke
LCD dengan Kecepatan yang berbeda-beda
#include <mega32.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
unsigned char lcd[16];
int x,y;
void main(void)
{PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0xFF;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AVCC pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{
x=read_adc(0);
sprintf(lcd,"%3d",x);
lcd_gotoxy(0,0);
lcd_puts(lcd);
if(x==128){PORTB=0x00;};
if(x<128)
{
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b10000000;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b01000000;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00100000;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00010000;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00001000;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000100;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000010;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000001;delay_ms(1+x);
x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000000;
}
if(x>128)
{
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000001;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000010;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000100;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00001000;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00010000;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00100000;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b01000000;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b10000000;delay_ms(128-y);
x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd);
PORTB=0b00000000; }}
}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dan PORTB untuk LED dengan data yang berasal
dari PINA dengan data ADC
Pada Program ini kita ingin menggerakkan LED dengan tengangan yang berasal dari
ADC PINA. Maka agar kita harus memprogram batas nyala LED sesuai dengan
potensiometer. Pada programm ini kita ingin mematikan LED dengan posisi Potensio
ditengah, putaran kekiri untuk membuat LED bergerak ke kiri, dan putaran ke kanan untuk
LED bergerak ke kanan dengan kecepatan gerakan diatur dengan besarnya putaran
potensiometer. Pada program x=read_adc(0) untuk menyimpan data ADC, dan karena
sprintf(lcd,"%3d",x) data ADC akan ditampilkan ke LCD . dengan batasan if(x==128)
{PORTB=0x00;} maka saat potensio ditengah LED akan mati. Dengan program if(x<128)
maka saat potensiometer diputar ke kiri maka LED akan bergerak ke kanan dan dengan
program if(x>128) maka saat diputar ke kanan LED akan bergerak ke kiri. Kecepatan
pergerakan LED tergantung oleh delay program karena setiap program ADC tereksekusi dan
karena ADC=x maka x akan mempengaruhi kecepatan pergerakan LED sehingga saat
program dieksekusi maka nyala LED akan sesuai dengan posisi potensiometer.
Praktikum 3
Jam Digital dengan menggunakan RTC
#include <mega32.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
#include <delay.h>
// LM75 Temperature Sensor functions
#include <lm75.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
// LM75 Temperature Sensor initialization
// thyst: 75°C
// tos: 80°C
// O.S. polarity: 0
lm75_init(0,75,80,0);
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
// LCD module initialization
lcd_init(16);
rtc_set_time(20,05,10);
while (1)
{ unsigned char h2,h1,m2,m1,s2,s1,h,m,s;
rtc_get_time(&h,&m,&s);
h2 = h % 10;
h1 = h / 10;
m2 = m % 10;
m1 = m / 10;
s2 = s % 10;
s1 = s / 10;
lcd_gotoxy(0,0);lcd_putsf("Waktu sekarang");
lcd_gotoxy(0,1);lcd_putchar(h1 + 0x30);
lcd_gotoxy(1,1);lcd_putchar(h2 + 0x30);
lcd_gotoxy(2,1);lcd_putsf(":");
lcd_gotoxy(3,1);lcd_putchar(m1 + 0x30);
lcd_gotoxy(4,1);lcd_putchar(m2 + 0x30);
lcd_gotoxy(5,1);lcd_putsf(":");
lcd_gotoxy(6,1);lcd_putchar(s1 + 0x30);
lcd_gotoxy(7,1);lcd_putchar(s2 + 0x30);
delay_ms(10);};
};
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dan PORTD untuk data clock, dimana pada PORTD
diatur sebagai RTC.
Pada RCT biasanya dipakai untuk membuat jam digital dimana
rtc_set_time(20,05,10), digunakan untuk menyetting waktu awal dan dengan program
rtc_get_time(&h,&m,&s), untuk memproses data waktu dan dengan rumus h2 = h % 10;….
maka data akan disimpan, sehingga saat program lcd_putchar(h1 + 0x30);… maka data
waktu tersebut akan ditampilkan. Pada RTC setiap perubahan clock yang diatur pada PORTD
akan menambah waktu pada RTC yang akan terlihat pada saat program dijalankan pada LCD
maka jam tersebut bergerak seperti jam digital.
Tugas 3B
Kalender digital dengan menggunakan RTC
#include <mega32.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
#include <delay.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,1,0);
// LCD module initialization
lcd_init(16);
rtc_set_date(19,4,17);
delay_ms(100);
while(1)
{
unsigned char d,m,y;
unsigned char d1,d2,m1,m2,y3,y4;
rtc_get_date(&d,&m,&y);
d2=d % 10;
d1=d / 10;
m2=m % 10;
m1=m / 10;
y4=y % 10;
y3=y / 10;
y3=y3 % 10;
lcd_gotoxy(0,0);lcd_putsf("Rabu");
lcd_gotoxy(0,1);lcd_putchar(d1 + 0x30);
lcd_gotoxy(1,1);lcd_putchar(d2 + 0x30);
lcd_gotoxy(2,1);lcd_putchar('/');
lcd_gotoxy(3,1);lcd_putchar(m1 + 0x30);
lcd_gotoxy(4,1);lcd_putchar(m2 + 0x30);
lcd_gotoxy(5,1);lcd_putchar('/');
lcd_gotoxy(6,1);lcd_putchar(0x32);
lcd_gotoxy(7,1);lcd_putchar(0x30);
lcd_gotoxy(8,1);lcd_putchar(y3 + 0x30);
lcd_gotoxy(9,1);lcd_putchar(y4 + 0x30);
delay_ms(10);};
}
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output
yang digunakan untuk menyalakan LCD dan PORTD untuk data clock, dimana pada PORTD
diatur sebagai RTC.
Pada RCT dapat dipakai untuk membuat kalender dimana rtc_set_date(19,4,17);
digunakan untuk menyetting tanggal, bulan dan tahun awal. Pada program rtc_get_date
(&d,&m,&y) untuk memproses data kalender dan dengan rumus d2=d % 10;..maka data akan
digunakan untuk ditampilkan ke LCD. Pada program ini lcd_putchar(d1 + 0x30)….
digunakan untuk menampilkan data yang telah diproses pada rumus sehingga saat
ditampilkan akan terlihat LCD akan menampilkan Rabu 19/4/2017 dimana perubahan pada
tanggal ini sangat lama karena settingan RTC dengan perubahan data diatur pada clock pada
PORTD.
Praktikum 4
Mengatur Lama Pemprosesan Flip-flop dengan Timer
#include <mega32.h>
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xE1;
TCNT1L=0x7B;
PORTA=~PINA;}
// Declare your global variables here
void main(void)
{PORTA=0x00;
DDRA=0xFF;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7.813 kHz
// Mode: Normal top=FFFFh
// Timer 1 Overflow Interrupt: On
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xE7;
TCNT1L=0x1B;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// Global enable interrupts
#asm("sei")
while (1)
{// Place your code here};}
Perhitungan
Pengaturan waktu tunda 1 detik
Tmax = 1/Freq.Osc x (FFFFh + 1) x Prescaler
= 1/8MHz x 65536 x 1024
= 8,388608 detik
Karena Ttunda yang diinginkan lebih kecil dari Tmax
Ttunda = 1/Freq.Osc x (65536 – TCNT1) x Prescaler
1s = 1/8MHz x (65536 – TCNT1) x 1024
1s = 128us x (65536 – TCNT1)
7812,5 = (65536 – TCNT1)
TCNT1= 65536 – 7812,5 = 57723,5 = E17B (dalam heksa)
Maka nilai Valve pada settingan timer 1 adalah E17B untuk jeda sebesar 1 detik
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTA sebagai
Output yang digunakan untuk menyalakan LED.
Pada program ini kita menggunakan timer 1 dengan System clock untuk sumber clock
oscillator crystal dengan frekuensi 7813KHz dengan intruksi Overflow untuk timer 1 dan
dengan jeda waktu pembacaan program sebesar 1 sekon/ E17B untuk valve dengan program
TCNT1H=0xE1;TCNT1L=0x7B; maka jeda waktu yang dimasukan akan sebesar 1 detik.
Pada program PORTA=~PINA maka akan memproses kondisi flip-flop saat PORTA
dihubungkan dengan LED. Maka saat program dijalankan maka pada PORTA=~PINA akan
terjadi jeda selama 1 detik dan terlihat bahwa LED menyala flip-flop dengan jeda 1 detik.
Tugas 4A
Program Flip-flop LED sebesar 0.5 Detik
#include <mega32.h>
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{// Reinitialize Timer 1 value
TCNT1H=0xF0;
TCNT1L=0xBE;
PORTA=~PINA;}
void main(void)
{ PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xF0;
TCNT1L=0xBD;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{// Place your code here };}
Perhitungan
Pengaturan waktu tunda 0,5 detik
Tmax = 1/Freq.Osc x (FFFFh + 1) x Prescaler
= 1/8MHz x 65536 x 1024
= 8,388608 detik
Karena Ttunda yang diinginkan lebih kecil dari Tmax
Ttunda = 1/Freq.Osc x (65536 – TCNT1) x Prescaler
0,5s = 1/8MHz x (65536 – TCNT1) x 1024
0,5s = 128us x (65536 – TCNT1)
3906,25 = (65536 – TCNT1)
TCNT1= 65536 – 3906,25 = 61629,75 = F0BD (dalam heksa)
Maka nilai Valve pada settingan timer 1 adalah F0BD untuk jeda sebesar 0.5 detik
Analisa:
Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai
dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTA sebagai
Output yang digunakan untuk menyalakan LED.
Pada program ini kita menggunakan timer 1 dengan System clock untuk sumber clock
oscillator crystal dengan frekuensi 7813KHz dengan intruksi Overflow untuk timer 1 dan
dengan jeda waktu pembacaan program sebesar 0,5 sekon/ F0BD untuk valve dengan
program TCCR1B=0x05; TCNT1H=0xF0; TCNT1L=0xBD; maka jeda waktu yang
dimasukan akan sebesar 0.5 detik. Pada program PORTA=~PINA maka akan memproses
kondisi flip-flop saat PORTA dihubungkan dengan LED. Maka saat program dijalankan
maka pada PORTA=~PINA akan terjadi jeda selama 0,5 detik dan terlihat bahwa LED
menyala flip-flop dengan jeda 0,5 detik.
Praktikum 5
PWM
#include <mega32.h>
unsigned int x;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
x++;
if(x==625) x=0;
if(x<=312) PORTA=255;
else PORTA=0;
}
// Declare your global variables here
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}
Analisa
Pulse-Width Modulation adalah salah satu jenis modulasi. Modulasi PWM dilakukan
dengan cara mengubah perbandingan lebar-pulsa-positif terhadap lebar-pulsa-negatif ataupun
sebaliknya dalam frekuensi sinyal yang tetap. Pada praktikum ini pada program ini akan
menampilkan duty cycle sebesar 50% yang bermakna perbandingan pulsa negatif dan positif
sama dikarenakan batas logika high hanya saat 312 sehingga saat program dijalankan karena
if(x<=312) PORTA=255 maka terlihat pada oscilloskop bahwa perbandingan pulsa positif
dan negatif sama atau ukuran pulsa positif dan negatif sama sama besar.

Contenu connexe

Tendances

Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...
Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...
Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...Muhammad Fadlan Ariska
 
Laporan Praktikum Gerbang Logika
Laporan Praktikum Gerbang LogikaLaporan Praktikum Gerbang Logika
Laporan Praktikum Gerbang LogikaAnnisa Aulia
 
Laporan praktikum Gerbang Logika
Laporan praktikum Gerbang LogikaLaporan praktikum Gerbang Logika
Laporan praktikum Gerbang LogikaA A
 
Materi praktek-10-pemrograman-output-display-7-segment
Materi praktek-10-pemrograman-output-display-7-segmentMateri praktek-10-pemrograman-output-display-7-segment
Materi praktek-10-pemrograman-output-display-7-segmentNyoman Dharmawan
 
Gerbang Logika Dasar
Gerbang Logika DasarGerbang Logika Dasar
Gerbang Logika DasarMoh Ali Fauzi
 
gerbang logika dan transistor
gerbang logika dan transistor gerbang logika dan transistor
gerbang logika dan transistor staffpengajar
 
Modul dasar teknik digital 1
Modul dasar teknik digital 1Modul dasar teknik digital 1
Modul dasar teknik digital 1Alexander Nugroho
 
Anjars gerbang-logika
Anjars gerbang-logikaAnjars gerbang-logika
Anjars gerbang-logikarezkimardo
 
Simple Project Arduino 2
Simple Project Arduino 2  Simple Project Arduino 2
Simple Project Arduino 2 Lusiana Diyan
 
Modul arduino iii
Modul arduino iiiModul arduino iii
Modul arduino iiisutono stn
 
pendahuluan gerbang logika
pendahuluan gerbang logikapendahuluan gerbang logika
pendahuluan gerbang logikaRati J
 
Membuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaMembuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaPriyo Harjiyono
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Muhammad Kennedy Ginting
 
Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2 Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2 lely charo
 
Laporan sistem bilngan dan gerbang logika dasar
Laporan sistem bilngan dan gerbang logika dasarLaporan sistem bilngan dan gerbang logika dasar
Laporan sistem bilngan dan gerbang logika dasarM Kawakib
 
Praktikum rangkaian logika gerbang dasar
Praktikum  rangkaian logika gerbang dasarPraktikum  rangkaian logika gerbang dasar
Praktikum rangkaian logika gerbang dasarI-one Goenaone
 
Traffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32ATraffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32AAmmazizzaky Tarigan
 

Tendances (20)

Modul Praktikum
Modul PraktikumModul Praktikum
Modul Praktikum
 
Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...
Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...
Modul Lab Dasar Teknik Digital Departemen Teknik Elektro Universitas Sumatera...
 
Universal NAND Gate
Universal NAND GateUniversal NAND Gate
Universal NAND Gate
 
Laporan Praktikum Gerbang Logika
Laporan Praktikum Gerbang LogikaLaporan Praktikum Gerbang Logika
Laporan Praktikum Gerbang Logika
 
Laporan praktikum Gerbang Logika
Laporan praktikum Gerbang LogikaLaporan praktikum Gerbang Logika
Laporan praktikum Gerbang Logika
 
Materi praktek-10-pemrograman-output-display-7-segment
Materi praktek-10-pemrograman-output-display-7-segmentMateri praktek-10-pemrograman-output-display-7-segment
Materi praktek-10-pemrograman-output-display-7-segment
 
Gerbang Logika Dasar
Gerbang Logika DasarGerbang Logika Dasar
Gerbang Logika Dasar
 
gerbang logika dan transistor
gerbang logika dan transistor gerbang logika dan transistor
gerbang logika dan transistor
 
Modul dasar teknik digital 1
Modul dasar teknik digital 1Modul dasar teknik digital 1
Modul dasar teknik digital 1
 
Anjars gerbang-logika
Anjars gerbang-logikaAnjars gerbang-logika
Anjars gerbang-logika
 
Simple Project Arduino 2
Simple Project Arduino 2  Simple Project Arduino 2
Simple Project Arduino 2
 
Modul arduino iii
Modul arduino iiiModul arduino iii
Modul arduino iii
 
pendahuluan gerbang logika
pendahuluan gerbang logikapendahuluan gerbang logika
pendahuluan gerbang logika
 
Laporan eldig
Laporan eldigLaporan eldig
Laporan eldig
 
Membuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaMembuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at mega
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
 
Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2 Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2
 
Laporan sistem bilngan dan gerbang logika dasar
Laporan sistem bilngan dan gerbang logika dasarLaporan sistem bilngan dan gerbang logika dasar
Laporan sistem bilngan dan gerbang logika dasar
 
Praktikum rangkaian logika gerbang dasar
Praktikum  rangkaian logika gerbang dasarPraktikum  rangkaian logika gerbang dasar
Praktikum rangkaian logika gerbang dasar
 
Traffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32ATraffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32A
 

Similaire à Praktikum Mikrokontoler 2

Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...
Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...
Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...DestiNuraeni
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Wesnu Prajati
 
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16Yazid98
 
1.-Arief-Budijanto_Uwika_ok1.pdf
1.-Arief-Budijanto_Uwika_ok1.pdf1.-Arief-Budijanto_Uwika_ok1.pdf
1.-Arief-Budijanto_Uwika_ok1.pdfZulkarnain619989
 
Bab 5 Pengolahan Input Output
Bab 5  Pengolahan Input OutputBab 5  Pengolahan Input Output
Bab 5 Pengolahan Input OutputBeny Abd
 
Tugas akhir muhamad iqbal ramdhani arduino sensor gas
Tugas akhir muhamad iqbal ramdhani arduino sensor gasTugas akhir muhamad iqbal ramdhani arduino sensor gas
Tugas akhir muhamad iqbal ramdhani arduino sensor gasMuhamadIqbalRamdhani
 
Project instrumentasi kelompok1
Project instrumentasi kelompok1Project instrumentasi kelompok1
Project instrumentasi kelompok1yana cahyana
 
17 proyek arduino
17 proyek arduino17 proyek arduino
17 proyek arduinoJilun
 
131367696-PLC-dasar-ppt.ppt
131367696-PLC-dasar-ppt.ppt131367696-PLC-dasar-ppt.ppt
131367696-PLC-dasar-ppt.pptNazpexss
 
simple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptsimple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptwidieyyaya
 
Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusFilla Fidyana
 
Percobaan 12 led berbasis ATMega16 - BascomeAVR
Percobaan 12 led berbasis ATMega16 - BascomeAVRPercobaan 12 led berbasis ATMega16 - BascomeAVR
Percobaan 12 led berbasis ATMega16 - BascomeAVRMaesaroh9
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535al farisi
 
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...Muhammad Kennedy Ginting
 
Instrument monitoring dan kontrol kelembaban tanah
Instrument   monitoring dan kontrol kelembaban tanahInstrument   monitoring dan kontrol kelembaban tanah
Instrument monitoring dan kontrol kelembaban tanaherpinard07
 
Instrumentation - monitoring dan kontrol kelembaban tanah
Instrumentation - monitoring dan kontrol kelembaban tanahInstrumentation - monitoring dan kontrol kelembaban tanah
Instrumentation - monitoring dan kontrol kelembaban tanahMukti Sudirman
 

Similaire à Praktikum Mikrokontoler 2 (20)

Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...
Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...
Sistem Kendali Volume Air pada Air Isi Ulang dengan Ultrasonic metode PID ber...
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led
 
13. interfacing motor dc
13. interfacing motor dc13. interfacing motor dc
13. interfacing motor dc
 
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16
Simulasi Traffic Light Perempatan dengan Kontrol AT-Mega 16
 
1.-Arief-Budijanto_Uwika_ok1.pdf
1.-Arief-Budijanto_Uwika_ok1.pdf1.-Arief-Budijanto_Uwika_ok1.pdf
1.-Arief-Budijanto_Uwika_ok1.pdf
 
Bab 5 Pengolahan Input Output
Bab 5  Pengolahan Input OutputBab 5  Pengolahan Input Output
Bab 5 Pengolahan Input Output
 
Tugas akhir muhamad iqbal ramdhani arduino sensor gas
Tugas akhir muhamad iqbal ramdhani arduino sensor gasTugas akhir muhamad iqbal ramdhani arduino sensor gas
Tugas akhir muhamad iqbal ramdhani arduino sensor gas
 
Project instrumentasi kelompok1
Project instrumentasi kelompok1Project instrumentasi kelompok1
Project instrumentasi kelompok1
 
Arduino Basic
Arduino BasicArduino Basic
Arduino Basic
 
17 proyek arduino
17 proyek arduino17 proyek arduino
17 proyek arduino
 
131367696-PLC-dasar-ppt.ppt
131367696-PLC-dasar-ppt.ppt131367696-PLC-dasar-ppt.ppt
131367696-PLC-dasar-ppt.ppt
 
simple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptsimple-as-possible-computer-1.ppt
simple-as-possible-computer-1.ppt
 
Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteus
 
Percobaan 12 led berbasis ATMega16 - BascomeAVR
Percobaan 12 led berbasis ATMega16 - BascomeAVRPercobaan 12 led berbasis ATMega16 - BascomeAVR
Percobaan 12 led berbasis ATMega16 - BascomeAVR
 
SIMPLE SYSTEM OPERATING WITH ECLPSE
SIMPLE SYSTEM OPERATING WITH ECLPSESIMPLE SYSTEM OPERATING WITH ECLPSE
SIMPLE SYSTEM OPERATING WITH ECLPSE
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
 
02. Basic PLC.pptx
02. Basic PLC.pptx02. Basic PLC.pptx
02. Basic PLC.pptx
 
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
 
Instrument monitoring dan kontrol kelembaban tanah
Instrument   monitoring dan kontrol kelembaban tanahInstrument   monitoring dan kontrol kelembaban tanah
Instrument monitoring dan kontrol kelembaban tanah
 
Instrumentation - monitoring dan kontrol kelembaban tanah
Instrumentation - monitoring dan kontrol kelembaban tanahInstrumentation - monitoring dan kontrol kelembaban tanah
Instrumentation - monitoring dan kontrol kelembaban tanah
 

Plus de Muhammad Taufik

Plus de Muhammad Taufik (16)

Matematika semester 3 bab 4
Matematika semester 3 bab 4Matematika semester 3 bab 4
Matematika semester 3 bab 4
 
Matematika semester 3 bab 3
Matematika semester 3 bab 3Matematika semester 3 bab 3
Matematika semester 3 bab 3
 
Matematika semester 3 bab 2
Matematika semester 3 bab 2Matematika semester 3 bab 2
Matematika semester 3 bab 2
 
Matematika semester 3 bab 1
Matematika semester 3 bab 1Matematika semester 3 bab 1
Matematika semester 3 bab 1
 
Mtk bab 5
Mtk bab 5Mtk bab 5
Mtk bab 5
 
Tugas Matematika Semester 2
Tugas Matematika Semester 2Tugas Matematika Semester 2
Tugas Matematika Semester 2
 
Tugas Matematika
Tugas MatematikaTugas Matematika
Tugas Matematika
 
Tugas matematika
Tugas matematikaTugas matematika
Tugas matematika
 
Tugas matematika
Tugas matematikaTugas matematika
Tugas matematika
 
Tugas matematika
Tugas matematikaTugas matematika
Tugas matematika
 
Muhammad taufik sa
Muhammad taufik saMuhammad taufik sa
Muhammad taufik sa
 
Muhammad taufik excel (praktek)
Muhammad taufik excel (praktek)Muhammad taufik excel (praktek)
Muhammad taufik excel (praktek)
 
Muhammad Taufik
Muhammad TaufikMuhammad Taufik
Muhammad Taufik
 
Muhammad Taufik Tugas
Muhammad Taufik TugasMuhammad Taufik Tugas
Muhammad Taufik Tugas
 
Muhammad TaufikPowerpoint (praktek)
Muhammad TaufikPowerpoint (praktek)Muhammad TaufikPowerpoint (praktek)
Muhammad TaufikPowerpoint (praktek)
 
Muhammad Taufik Excel (praktek)
Muhammad Taufik Excel (praktek)Muhammad Taufik Excel (praktek)
Muhammad Taufik Excel (praktek)
 

Dernier

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7IwanSumantri7
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdfanitanurhidayah51
 
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxPPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxSaefAhmad
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)MustahalMustahal
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfHendroGunawan8
 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxNurindahSetyawati1
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarankeicapmaniez
 
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...asepsaefudin2009
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxRizkyPratiwi19
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxssuser50800a
 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxSlasiWidasmara1
 
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...Kanaidi ken
 
Dasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikDasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikThomasAntonWibowo
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxsukmakarim1998
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMIGustiBagusGending
 
Hiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaa
HiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaaHiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaa
Hiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaafarmasipejatentimur
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 

Dernier (20)

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
 
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxPPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docx
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajaran
 
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
 
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
 
Dasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikDasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolik
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
 
Hiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaa
HiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaaHiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaa
Hiperlipidemiaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 

Praktikum Mikrokontoler 2

  • 1. LAPORAN PRAKTIKUM MIKROKONTROLER 2 DISUSUN OLEH : Nama : MUHAMMAD TAUFIK Kelas : 2 ELEKTRONIKA B Tingkat : 2 (Dua) Semester : 4 ( Empat ) POLITEKNIK MANUFAKTUR NEGERI BANGKA BELITUNG 2014/2015 Kawasan Industri Air Kantung Sungailiat 33211 Bangka Induk Propinsi Kepulauan Bangka Belitung Telp : (0717) 431335 ext. 2281, 2126 Fax : (0717) 93585 email : polman@polman-babel.ac.id http://www.polman-babel.ac.id/
  • 2. Praktikum 1 Aplikasi Keypad 4x4 dengan Output LCD #include <mega32.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> void main(void) {PORTA=0x00; DDRA=0xF0; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; lcd_init(16); while(1) { delay_ms(5); lcd_init(16); PORTA=0b11101111; delay_ms(5); if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('1');} if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('4');} if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('7');} if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('D');} delay_ms(5); PORTA=0b11011111; delay_ms(5); if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('2');} if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('5');} if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('8');} if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('0');} delay_ms(5); PORTA=0b10111111; delay_ms(5); if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('3');} if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('6');}
  • 3. if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('9');} if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('E');} delay_ms(5); PORTA=0b01111111; delay_ms(5); if(PINA.0==0){lcd_gotoxy(0,0);lcd_putchar('A');} if(PINA.1==0){lcd_gotoxy(0,0);lcd_putchar('B');} if(PINA.2==0){lcd_gotoxy(0,0);lcd_putchar('C');} if(PINA.3==0){lcd_gotoxy(0,0);lcd_putchar('F');} delay_ms(5);}} Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data masukan berasal dari Keypad. Pada Program keypad merupakan kumpulan pushbutton dimana agar kita dapat menggunakan tiap tombol kita harus menyeleksi data tiap kolom dan baris dengan logika low(0) dengan contoh program PORTA=0b11101111/untuk kolom; if(PINA.0==0)/untuk baris maka kita dapat menggunakan tombol pada kolom 0 pada baris ke 0. Kemudian karena lcd_gotoxy(0,0); lcd_putchar() maka data pada keypad / putchar() pada kolom ke 0 baris ke 0 akan dimasukan pada LCD pada baris ke 0 kolom ke 0. Pada program ini tiap tombol pada keypad 4x4 dimasukan dengan data yang berbeda. Untuk menggunakan/ menampilkan data pada keypad yang tersimpan maka kita harus memanggil selektor data pada tiap baris dan kolom maka saat program dijalankan dan tombol ditekan maka akan menampilkan data pada LCD sesuai data pada tombol yang ditekan.
  • 4. Tugas 1A Aplikasi Keypad 4x4 dengan Output 7Segment #include <mega32.h> #include <delay.h> void main(void) {PORTA=0x00; DDRA=0xF0; PORTB=0x00; DDRB=0xF0; PORTC=0xFF; DDRC=0xFF; while(1) { delay_ms(5); PORTA=0b11101111; delay_ms(5); if(PINA.0==0){PORTC = 0xE1;} if(PINA.1==0){PORTC = 0xE4;} if(PINA.2==0){PORTC = 0xE7;} if(PINA.3==0){PORTC = 0xED;} delay_ms(5); PORTA=0b11011111; delay_ms(5); if(PINA.0==0){PORTC = 0xE2;} if(PINA.1==0){PORTC = 0xE5;} if(PINA.2==0){PORTC = 0xE8;} if(PINA.3==0){PORTC = 0xE0;} delay_ms(5); PORTA=0b10111111; delay_ms(5); if(PINA.0==0){PORTC = 0xE3;} if(PINA.1==0){PORTC = 0xE6;} if(PINA.2==0){PORTC = 0xE9;} if(PINA.3==0){PORTC = 0xEE;} delay_ms(5); PORTA=0b01111111; delay_ms(5);
  • 5. if(PINA.0==0){PORTC = 0xEA;} if(PINA.1==0){PORTC = 0xEB;} if(PINA.2==0){PORTC = 0xEC;} if(PINA.3==0){PORTC = 0xEF;} delay_ms(5);} } Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan 7Segment dengan data yang berasal dari PINA dengan data masukan berasal dari Keypad. Pada Program keypad kita harus menyeleksi data tiap kolom dan baris dengan logika low(0) dengan contoh program PORTA=0b11101111/untuk kolom; if(PINA.0==0)/untuk baris maka kita dapat menggunakan tombol pada kolom 0 pada baris ke 0. Kemudian karena PORTC = 0xE.. Maka pada keypad pada kolom ke 0 baris ke 0 akan menampilkan data ke 7Segment. Pada program ini tiap tombol pada keypad 4x4 dimasukan dengan tampilan 7Segment dengan data yang berbeda. Maka untuk menggunakan/ menampilkan data pada saat keypad ditekan maka kita harus memanggil selektor data pada tiap baris dan kolom maka saat program dijalankan dan tombol ditekan maka akan menampilkan data pada 7Segment sesuai tombol yang ditekan.
  • 6. Tugas 1B Aplikasi Keypad 4x4 Counter UP/ Down dengan Output LCD #include <mega32.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> #include <stdio.h> // Declare your global variables here int i; unsigned char kata[16]; void naik(void) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Counter UP");lcd_putsf(" ");i++; delay_ms(200); while(PINA.2==0){}; } void turun(void) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Counter down");lcd_putsf(" ");i--; delay_ms(200); while(PINA.3==0){} } void reset(void) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Reset");lcd_putsf(" ");i=0; delay_ms(200); }
  • 7. void main(void) {PORTA=0x00; DDRA=0xF0; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0x00; // LCD module initialization lcd_init(16); while (1) { if(i==101) i=0; if (i<0) i=0; sprintf(kata,"%d",i); lcd_gotoxy(0,1); lcd_puts(kata); PORTA=0b11011111; delay_ms(5); if(PINA.3==0){reset();} delay_ms(5); PORTA=0b01111111; delay_ms(5); if(PINA.2==0){naik();} delay_ms(5); PORTA=0b01111111; delay_ms(5); if(PINA.3==0){turun();} delay_ms(5);} }
  • 8. Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data masukan berasal dari Keypad. Pada Program keypad kita ingin membuat Counter Up dan Counter Down dengan tombol panah atas dan bawah dengan tombol 0 untuk reset. Maka agar kita dapat menggunakan tombol keypad dengan meyeleksi baris dan kolom keypad sesuai tombol yang diinginkan. Pada program ini kita mengunakan sub menu naik turun reset dengan naik untuk proses Counter Up ,turun untuk Counter Down, dan Reset untuk mereset nilai, Di program ini juga kita menggunakan data i yang tersimpan agar proses looping dapat berulang. Sehingga pada saat program dijalankan pada menu utama saat tombol panah atas ditekan akan membaca data sub menu atas dan menampilkan pada LCD Counter Up 0-100. Pada saat tombol panah bawah diatas maka akan menjalankan perintah sub menu bawah sehingga menampilkan Counter Down dari i-0 pada LCD dan saat tombol 0 ditekan maka i=0 sehingga akan menampilkan angka 0 pada LCD.
  • 9. Praktikum 2 Aplikasi ADC dengan Output LED #include <mega32.h> #include <delay.h> #define ADC_VREF_TYPE 0x60 unsigned char read_adc(unsigned char adc_input) {ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH;} void main(void) {PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83;
  • 10. while (1) {PORTC = read_adc(0); delay_ms(1000);}; } Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LED dengan data yang berasal dari PINA dengan data ADC Pada Program ini kita ingin menyalakan LED dengan tegangan yang berasal dari ADC PINA. Maka agar kita harus menyeting PINA sebagai ADC sehingga saat program dijalankan maka karena PORTC = read_adc maka Led akan aktif dengan tegangan ADC port A dimana tegangan tersebut diatur oleh potensiometer. Sehingga nyala LED tergantung dari tegangan ADC yang berasal dari potensiometer pada PINA.
  • 11. Tugas 2A.1 Menghitung tegangan ADC 8 BIT dan ditampilkan ke LCD #include <mega32.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <stdio.h> #include <delay.h> #define ADC_VREF_TYPE 0x60 unsigned char nilai[16]; unsigned char bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7; int data; unsigned char read_adc(unsigned char adc_input) {ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH;} void main(void) {PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00;
  • 12. // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // LCD module initialization lcd_init(16); while (1) {data=read_adc(0); sprintf(nilai,"D=%4d",data); lcd_gotoxy(0,0); lcd_puts(nilai); delay_ms(100); sprintf(nilai,"H=%2xH",data); lcd_gotoxy(8,0); lcd_puts(nilai); delay_ms(100); //BINER bit0=data%2; bit1=data/2%2; bit2=data/4%2; bit3=data/8%2; bit4=data/16%2; bit5=data/32%2; bit6=data/64%2; bit7=data/128%2; lcd_gotoxy(0,1); lcd_putchar(bit0+0x30); delay_ms(10); lcd_gotoxy(1,1); lcd_putchar(bit1+0x30); delay_ms(10); lcd_gotoxy(2,1);
  • 13. lcd_putchar(bit2+0x30); delay_ms(10); lcd_gotoxy(3,1); lcd_putchar(bit3+0x30); delay_ms(10); lcd_gotoxy(4,1); lcd_putchar(bit4+0x30); delay_ms(10); lcd_gotoxy(5,1); lcd_putchar(bit5+0x30); delay_ms(10); lcd_gotoxy(6,1); lcd_putchar(bit6+0x30); delay_ms(10); lcd_gotoxy(7,1); lcd_putchar(bit7+0x30); delay_ms(10);}} Nilai ADC Pada 8 bit No Vref Vin Analog ADC Perhitungan ADC Yang Terukur %ERROR 1 5 0 0 0 0% 2 5 0.1 4.54 5 1% 3 5 0.2 9.07 9 1% 4 5 0.3 13.61 14 3% 5 5 0.4 18.15 18 1% 6 5 0.5 22.69 23 1% 7 5 0.6 27.22 27 1% 8 5 0.7 31.76 31 2% 9 5 1 45.37 47 3% 10 5 2 90.75 91 0% 11 5 2.5 113.43 115 1% 12 5 3 136.12 139 2% 13 5 4 181.49 181 0% 14 5 5 226.87 230 1%
  • 14. Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data ADC Pada Program ini kita ingin menghitung tegangan yang berasal dari ADC PINA dengan ADC 8 Bit. Maka agar kita harus menyeting PINA sebagai ADC. Dengan data PINA maka akan diproses pada rumus Desimal, Biner, dan Heksa. Pada program ini sprintf(nilai,"D=%4d",data) untuk mengubah data ADC menjadi bilangan desimal, sprintf(nilai,"H=%2xH",data) untuk mengubah data ADC menjadi bilangan Heksa, dan program bit0=data%2… untuk mengubah data ADC menjadi bilangan Biner, sehingga saat program dijalankan maka karena Data = read_adc maka data ADC akan terbaca pada LCD dengan tegangan diatur oleh potensiometer. Sehingga pada LCD akan menampilkan Tegangan ADC pada bilangan Desimal, Biner, dan Heksa sesuai dengan Tabel Pengukuran.
  • 15. Tugas 2A.2 Menghitung tegangan ADC 10 BIT dan ditampilkan ke LCD #include <mega32.h> #include <stdio.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> #define ADC_VREF_TYPE 0x40 unsigned int read_adc(unsigned char adc_input) {ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW;} // Declare your global variables here unsigned char nilai[16]; int bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8,bit9; int data; void main(void) {PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00;
  • 16. // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // LCD module initialization lcd_init(16); while (1) { data=read_adc(0); sprintf(nilai,"D=%4d",data); lcd_gotoxy(0,0); lcd_puts(nilai); delay_ms(100); sprintf(nilai,"H=%2xH",data); lcd_gotoxy(8,0); lcd_puts(nilai); delay_ms(100); //BINER bit0=data%2; bit1=data/2%2; bit2=data/4%2; bit3=data/8%2; bit4=data/16%2; bit5=data/32%2; bit6=data/64%2; bit7=data/128%2; bit8=data/256%2; bit9=data/512%2; lcd_gotoxy(0,1); lcd_putchar(bit0+0x30); delay_ms(10);
  • 18. Nilai ADC Pada 10 bit No Vref Vin Analog ADC Perhitungan ADC Yang Terukur %ERROR 1 5 0 0 0 0% 2 5 0.1 18.37 19 3% 3 5 0.2 36.73 36 2% 4 5 0.3 55.10 56 2% 5 5 0.4 73.46 75 2% 6 5 0.5 91.83 92 0% 7 5 0.6 110.20 110 0% 8 5 0.7 128.56 128 0% 9 5 1 183.66 189 3% 10 5 2 367.32 364 1% 11 5 2.5 459.16 457 0% 12 5 3 550.99 556 1% 13 5 4 734.65 730 1% 14 5 5 918.31 915 0% Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dengan data yang berasal dari PINA dengan data ADC Pada Program ini kita ingin menghitung tegangan yang berasal dari ADC PINA dengan ADC 10 Bit. Maka agar kita harus menyeting PINA sebagai ADC. Dengan data PINA maka akan diproses pada rumus Desimal, Biner, dan Heksa. Pada program ini sprintf(nilai,"D=%4d",data) untuk mengubah data ADC menjadi bilangan desimal, sprintf(nilai,"H=%2xH",data) untuk mengubah data ADC menjadi bilangan Heksa, dan
  • 19. program bit0=data%2… untuk mengubah data ADC menjadi bilangan Biner, sehingga saat program dijalankan maka karena Data = read_adc maka data ADC akan terbaca pada LCD dengan tegangan diatur oleh potensiometer. Sehingga pada LCD akan menampilkan Tegangan ADC pada bilangan Desimal, Biner, dan Heksa sesuai dengan Tabel Pengukuran.
  • 20. Tugas 2B Menggeser nyala LED dengan data ADC dan ditampilkan ke LCD dengan Kecepatan yang berbeda-beda #include <mega32.h> #include <stdio.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm #include <lcd.h> #define ADC_VREF_TYPE 0x60 // Read the 8 most significant bits // of the AD conversion result unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } unsigned char lcd[16]; int x,y; void main(void) {PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTD=0x00; DDRD=0xFF;
  • 21. // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // LCD module initialization lcd_init(16); while (1) { x=read_adc(0); sprintf(lcd,"%3d",x); lcd_gotoxy(0,0); lcd_puts(lcd); if(x==128){PORTB=0x00;}; if(x<128) { x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b10000000;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b01000000;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00100000;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00010000;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00001000;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000100;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000010;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000001;delay_ms(1+x); x=read_adc(0);sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000000; }
  • 22. if(x>128) { x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000001;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000010;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000100;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00001000;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00010000;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00100000;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b01000000;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b10000000;delay_ms(128-y); x=read_adc(0);y=x-128;sprintf(lcd,"%3d",x);lcd_gotoxy(0,0);lcd_puts(lcd); PORTB=0b00000000; }} } Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dan PORTB untuk LED dengan data yang berasal dari PINA dengan data ADC Pada Program ini kita ingin menggerakkan LED dengan tengangan yang berasal dari ADC PINA. Maka agar kita harus memprogram batas nyala LED sesuai dengan potensiometer. Pada programm ini kita ingin mematikan LED dengan posisi Potensio ditengah, putaran kekiri untuk membuat LED bergerak ke kiri, dan putaran ke kanan untuk LED bergerak ke kanan dengan kecepatan gerakan diatur dengan besarnya putaran potensiometer. Pada program x=read_adc(0) untuk menyimpan data ADC, dan karena sprintf(lcd,"%3d",x) data ADC akan ditampilkan ke LCD . dengan batasan if(x==128) {PORTB=0x00;} maka saat potensio ditengah LED akan mati. Dengan program if(x<128) maka saat potensiometer diputar ke kiri maka LED akan bergerak ke kanan dan dengan program if(x>128) maka saat diputar ke kanan LED akan bergerak ke kiri. Kecepatan pergerakan LED tergantung oleh delay program karena setiap program ADC tereksekusi dan karena ADC=x maka x akan mempengaruhi kecepatan pergerakan LED sehingga saat program dieksekusi maka nyala LED akan sesuai dengan posisi potensiometer.
  • 23. Praktikum 3 Jam Digital dengan menggunakan RTC #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x12 ;PORTD .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> #include <delay.h> // LM75 Temperature Sensor functions #include <lm75.h> // DS1307 Real Time Clock functions #include <ds1307.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> // Declare your global variables here void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
  • 24. SFIOR=0x00; // I2C Bus initialization i2c_init(); // LM75 Temperature Sensor initialization // thyst: 75°C // tos: 80°C // O.S. polarity: 0 lm75_init(0,75,80,0); // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0 rtc_init(0,0,0); // LCD module initialization lcd_init(16); rtc_set_time(20,05,10); while (1) { unsigned char h2,h1,m2,m1,s2,s1,h,m,s; rtc_get_time(&h,&m,&s); h2 = h % 10; h1 = h / 10; m2 = m % 10; m1 = m / 10; s2 = s % 10; s1 = s / 10; lcd_gotoxy(0,0);lcd_putsf("Waktu sekarang"); lcd_gotoxy(0,1);lcd_putchar(h1 + 0x30); lcd_gotoxy(1,1);lcd_putchar(h2 + 0x30); lcd_gotoxy(2,1);lcd_putsf(":"); lcd_gotoxy(3,1);lcd_putchar(m1 + 0x30); lcd_gotoxy(4,1);lcd_putchar(m2 + 0x30); lcd_gotoxy(5,1);lcd_putsf(":"); lcd_gotoxy(6,1);lcd_putchar(s1 + 0x30); lcd_gotoxy(7,1);lcd_putchar(s2 + 0x30); delay_ms(10);}; };
  • 25. Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dan PORTD untuk data clock, dimana pada PORTD diatur sebagai RTC. Pada RCT biasanya dipakai untuk membuat jam digital dimana rtc_set_time(20,05,10), digunakan untuk menyetting waktu awal dan dengan program rtc_get_time(&h,&m,&s), untuk memproses data waktu dan dengan rumus h2 = h % 10;…. maka data akan disimpan, sehingga saat program lcd_putchar(h1 + 0x30);… maka data waktu tersebut akan ditampilkan. Pada RTC setiap perubahan clock yang diatur pada PORTD akan menambah waktu pada RTC yang akan terlihat pada saat program dijalankan pada LCD maka jam tersebut bergerak seperti jam digital.
  • 26. Tugas 3B Kalender digital dengan menggunakan RTC #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x12 ;PORTD .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> #include <delay.h> // DS1307 Real Time Clock functions #include <ds1307.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> // Declare your global variables here void main(void) { // I2C Bus initialization i2c_init(); // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0 rtc_init(0,1,0); // LCD module initialization lcd_init(16); rtc_set_date(19,4,17); delay_ms(100); while(1) { unsigned char d,m,y; unsigned char d1,d2,m1,m2,y3,y4; rtc_get_date(&d,&m,&y);
  • 27. d2=d % 10; d1=d / 10; m2=m % 10; m1=m / 10; y4=y % 10; y3=y / 10; y3=y3 % 10; lcd_gotoxy(0,0);lcd_putsf("Rabu"); lcd_gotoxy(0,1);lcd_putchar(d1 + 0x30); lcd_gotoxy(1,1);lcd_putchar(d2 + 0x30); lcd_gotoxy(2,1);lcd_putchar('/'); lcd_gotoxy(3,1);lcd_putchar(m1 + 0x30); lcd_gotoxy(4,1);lcd_putchar(m2 + 0x30); lcd_gotoxy(5,1);lcd_putchar('/'); lcd_gotoxy(6,1);lcd_putchar(0x32); lcd_gotoxy(7,1);lcd_putchar(0x30); lcd_gotoxy(8,1);lcd_putchar(y3 + 0x30); lcd_gotoxy(9,1);lcd_putchar(y4 + 0x30); delay_ms(10);}; } Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTC sebagai Output yang digunakan untuk menyalakan LCD dan PORTD untuk data clock, dimana pada PORTD diatur sebagai RTC. Pada RCT dapat dipakai untuk membuat kalender dimana rtc_set_date(19,4,17); digunakan untuk menyetting tanggal, bulan dan tahun awal. Pada program rtc_get_date (&d,&m,&y) untuk memproses data kalender dan dengan rumus d2=d % 10;..maka data akan digunakan untuk ditampilkan ke LCD. Pada program ini lcd_putchar(d1 + 0x30)…. digunakan untuk menampilkan data yang telah diproses pada rumus sehingga saat ditampilkan akan terlihat LCD akan menampilkan Rabu 19/4/2017 dimana perubahan pada tanggal ini sangat lama karena settingan RTC dengan perubahan data diatur pada clock pada PORTD.
  • 28. Praktikum 4 Mengatur Lama Pemprosesan Flip-flop dengan Timer #include <mega32.h> // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer 1 value TCNT1H=0xE1; TCNT1L=0x7B; PORTA=~PINA;} // Declare your global variables here void main(void) {PORTA=0x00; DDRA=0xFF; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7.813 kHz // Mode: Normal top=FFFFh // Timer 1 Overflow Interrupt: On TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xE7; TCNT1L=0x1B; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Global enable interrupts #asm("sei") while (1) {// Place your code here};}
  • 29. Perhitungan Pengaturan waktu tunda 1 detik Tmax = 1/Freq.Osc x (FFFFh + 1) x Prescaler = 1/8MHz x 65536 x 1024 = 8,388608 detik Karena Ttunda yang diinginkan lebih kecil dari Tmax Ttunda = 1/Freq.Osc x (65536 – TCNT1) x Prescaler 1s = 1/8MHz x (65536 – TCNT1) x 1024 1s = 128us x (65536 – TCNT1) 7812,5 = (65536 – TCNT1) TCNT1= 65536 – 7812,5 = 57723,5 = E17B (dalam heksa) Maka nilai Valve pada settingan timer 1 adalah E17B untuk jeda sebesar 1 detik Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTA sebagai Output yang digunakan untuk menyalakan LED. Pada program ini kita menggunakan timer 1 dengan System clock untuk sumber clock oscillator crystal dengan frekuensi 7813KHz dengan intruksi Overflow untuk timer 1 dan dengan jeda waktu pembacaan program sebesar 1 sekon/ E17B untuk valve dengan program TCNT1H=0xE1;TCNT1L=0x7B; maka jeda waktu yang dimasukan akan sebesar 1 detik. Pada program PORTA=~PINA maka akan memproses kondisi flip-flop saat PORTA dihubungkan dengan LED. Maka saat program dijalankan maka pada PORTA=~PINA akan terjadi jeda selama 1 detik dan terlihat bahwa LED menyala flip-flop dengan jeda 1 detik.
  • 30. Tugas 4A Program Flip-flop LED sebesar 0.5 Detik #include <mega32.h> // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {// Reinitialize Timer 1 value TCNT1H=0xF0; TCNT1L=0xBE; PORTA=~PINA;} void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7,813 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xF0; TCNT1L=0xBD; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00;
  • 31. OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // Global enable interrupts #asm("sei") while (1) {// Place your code here };} Perhitungan Pengaturan waktu tunda 0,5 detik Tmax = 1/Freq.Osc x (FFFFh + 1) x Prescaler = 1/8MHz x 65536 x 1024 = 8,388608 detik Karena Ttunda yang diinginkan lebih kecil dari Tmax Ttunda = 1/Freq.Osc x (65536 – TCNT1) x Prescaler 0,5s = 1/8MHz x (65536 – TCNT1) x 1024 0,5s = 128us x (65536 – TCNT1) 3906,25 = (65536 – TCNT1) TCNT1= 65536 – 3906,25 = 61629,75 = F0BD (dalam heksa) Maka nilai Valve pada settingan timer 1 adalah F0BD untuk jeda sebesar 0.5 detik
  • 32. Analisa: Pada Praktikum ini pertama-tama atur tipe IC, Output, dan Input dari program sesuai dengan modul yang kita pakai. Pada Praktikum ini kita menggunakan PORTA sebagai Output yang digunakan untuk menyalakan LED. Pada program ini kita menggunakan timer 1 dengan System clock untuk sumber clock oscillator crystal dengan frekuensi 7813KHz dengan intruksi Overflow untuk timer 1 dan dengan jeda waktu pembacaan program sebesar 0,5 sekon/ F0BD untuk valve dengan program TCCR1B=0x05; TCNT1H=0xF0; TCNT1L=0xBD; maka jeda waktu yang dimasukan akan sebesar 0.5 detik. Pada program PORTA=~PINA maka akan memproses kondisi flip-flop saat PORTA dihubungkan dengan LED. Maka saat program dijalankan maka pada PORTA=~PINA akan terjadi jeda selama 0,5 detik dan terlihat bahwa LED menyala flip-flop dengan jeda 0,5 detik.
  • 33. Praktikum 5 PWM #include <mega32.h> unsigned int x; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here x++; if(x==625) x=0; if(x<=312) PORTA=255; else PORTA=0; } // Declare your global variables here void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 8000,000 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x01; TCNT0=0x00; OCR0=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off
  • 34. // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // Global enable interrupts #asm("sei") while (1) { // Place your code here }; } Analisa Pulse-Width Modulation adalah salah satu jenis modulasi. Modulasi PWM dilakukan dengan cara mengubah perbandingan lebar-pulsa-positif terhadap lebar-pulsa-negatif ataupun sebaliknya dalam frekuensi sinyal yang tetap. Pada praktikum ini pada program ini akan menampilkan duty cycle sebesar 50% yang bermakna perbandingan pulsa negatif dan positif sama dikarenakan batas logika high hanya saat 312 sehingga saat program dijalankan karena if(x<=312) PORTA=255 maka terlihat pada oscilloskop bahwa perbandingan pulsa positif dan negatif sama atau ukuran pulsa positif dan negatif sama sama besar.