laporan praktikum mikro

50
TUGAS TAMBAHAN PERCOBAAN 1 RUNNING LED MENGGUNAKAN PUSH BUTTON 1. GAMBAR RANGKAIAN PC6/TOSC1 28 PC5 27 PC4 26 PC3 25 PC2 24 PC1/SDA 23 PC0/SCL 22 PC7/TOSC2 29 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 PA7/ADC7 33 PB6/MISO 7 PB5/MOSI 6 PB4/SS 5 PB3/AIN1/OC0 4 PB2/AIN0/INT2 3 PB1/T1 2 PB0/T0/XCK 1 PB7/SCK 8 PD6/ICP1 20 PD5/OC1A 19 PD4/OC1B 18 PD3/INT1 17 PD2/INT0 16 PD1/TXD 15 PD0/RXD 14 PD7/OC2 21 RESET 9 XTAL1 13 XTAL2 12 AVCC 30 AREF 32 U1 ATMEGA8535 R1 330R R2 330R R3 330R R4 330R R5 330R R6 330R R7 330R R8 330R PUSH BUTTON D1 LED-YELLOW D2 LED-YELLOW D3 LED-YELLOW D4 LED-YELLOW D5 LED-YELLOW D6 LED-YELLOW D7 LED-YELLOW D8 LED-YELLOW RUNNING LED MENGGUNAKAN PUSH BUTTON EDY SOEPRAJITNO : 03.2008.1.06529 2. LISTING PROGRAM /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) {

Upload: mas-edy

Post on 28-Nov-2014

320 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Laporan Praktikum Mikro

TUGAS TAMBAHAN

PERCOBAAN 1

RUNNING LED MENGGUNAKAN PUSH BUTTON

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

R1330R

R2330R

R3330R

R4330R

R5330R

R6330R

R7330R

R8330R

PUSH BUTTON

D1LED-YELLOW

D2LED-YELLOW

D3LED-YELLOW

D4LED-YELLOW

D5LED-YELLOW

D6LED-YELLOW

D7LED-YELLOW

D8LED-YELLOW

RUNNING LED MENGGUNAKAN PUSH BUTTON

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) {

Page 2: Laporan Praktikum Mikro

PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0x00; PORTD=0x01; DDRD=0x00; while (1) { while(PIND.0==0){ PORTB=0B00000001; delay_ms(200); PORTB=0B00000010; delay_ms(200); PORTB=0B00000100; delay_ms(200); PORTB=0B00001000; delay_ms(200); PORTB=0B00010000; delay_ms(200); PORTB=0B00100000; delay_ms(200); PORTB=0B01000000; delay_ms(200); PORTB=0B10000000; delay_ms(200); } PORTB=0; } }

3. ANALISA

• Ketika tombol push button ditekan maka maka led akan menyala dari D1 sampai

D8 secara berurutan dan berulang-ulang.

• Ketika tombol push button dilepas maka led akan berhenti menyala berurutan

sampai led D8 dan led mati semuanya.

Page 3: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 1

1. GAMBAR RANGKAIAN MINIMUM SISTEM 8031 + SRAM 2K + EPROM 8K

DAN PPI-8255

D034

D133

D232

D331

D430

D529

D628

D727

RD5

WR36

A09

A18

RESET35

CS6

PA04

PA13

PA22

PA31

PA440

PA539

PA638

PA737

PB018

PB119

PB220

PB321

PB422

PB523

PB624

PB725

PC014

PC115

PC216

PC317

PC413

PC512

PC611

PC710

U6

8255A

Page 4: Laporan Praktikum Mikro

2. PROGRAM TRAFFIC LIGHT

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

D1

D4

D7

D10

R1

220

R2

220

R3

220

R4

220

R5

220

R6

220

R7

220

R8

220

R9

220

R10

220

R11

220

R12

220

D2

D3

D5

D6

D8

D9

D11D12

TRAFFIC LIGHT

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM TRAFFIC LIGHT

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) { PORTA=0x00;

Page 5: Laporan Praktikum Mikro

DDRA=0xFF; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF; while (1) {

PORTA.2=PORTB.0=PORTC.0=PORTD.1=0xFF;delay_ms(1000); PORTA.2=PORTC.0=0x00; PORTA.0=PORTB.0=PORTC.2=PORTD.1=0xFF;delay_ms(1000); PORTC.2=PORTD.1=0x00; PORTA.0=PORTB.0=PORTC.1=PORTD.2=0xFF;delay_ms(1000); PORTB.0=PORTD.2=0x00; PORTA.0=PORTB.2=PORTC.1=PORTD.0=0xFF;delay_ms(1000); PORTB.2=PORTC.1=0x00; PORTA.0=PORTB.1=PORTC.2=PORTD.0=0xFF;delay_ms(1000); PORTA.0=PORTC.2=0x00; PORTA.2=PORTB.1=PORTC.0=PORTD.0=0xFF;delay_ms(1000); PORTA.2=PORTB.1=0x00; PORTA.1=PORTB.2=PORTC.0=PORTD.0=0xFF;delay_ms(1000); PORTB.2=PORTD.0=0x00; PORTA.1=PORTB.0=PORTC.0=PORTD.2=0xFF;delay_ms(1000); PORTA.1=PORTD.2=0x00;

} }

Page 6: Laporan Praktikum Mikro

TUGAS TAMBAHAN

PERCOBAAN 2

COUNTER UP/DOWN 2 DIGIT MENGGUNAKAN PUSH BUTTON

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

UP

DOWN

RESET

COUNTER UP/DOWN MENGGUNAKAN PUSH BUTTON

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM COUNTER UP/DOWN

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : COUNTER UP/DOWN W PB Version : 1 Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/

Page 7: Laporan Praktikum Mikro

#include <mega8535.h> #include <delay.h> char pul,sat,i,n; unsigned char segment[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void display(int data) { pul=data/10; sat=data%10; for(i=0;i<100;i++) { PORTC=0x01; PORTA=segment[pul]; delay_ms(1); PORTC=0x02; PORTA=segment[sat]; delay_ms(1); } } void main(void) { PORTA=0xC0; DDRA=0xFF; PORTB=0xFF; DDRB=0x00; PORTC=0xFF; DDRC=0xFF; PORTD=0x00; DDRD=0x00; while (1) { // Place your code here if(PINB.0==0) { if(n==99){n=0;} else{n++;} delay_ms(70); } if(PINB.1==0) { if(n==0){n=99;} else{n--;} delay_ms(70); } if(PINB.2==0){n=0;} display(n); } }

Page 8: Laporan Praktikum Mikro

3. FLOW CHART

4. ANALISA

Input dari program counter up/down adalah tiga buah push button yang masing

masing mempunyai fungsi, yaitu :

1. Push button 1 (counter up) :

Jika tombol ini ditekan maka angka dalam tampilan seven segment akan bertambah

satu angka (00,01,02,03,….99) secara manual, secara manual disini diartikan bahwa

dalam setiap penekanan satu kali maka bilangan hanya akan bertambah satu angka.

2. Push button 2 (counter down) :

Jika tombol ini ditekan maka angka dalam tampilan seven segment akan berkurang

satu angka (99,98,97,96….01) secara manual, secara manual disini diartikan bahwa

dalam setiap penekanan satu kali maka bilangan hanya akan berkurang satu angka.

3. Push button 3 (reset) :

Jika tombol ini ditekan maka untuk tampilan angka berapapun dalam seven

segment akan berubah menjadi tampilan awal (00).

Page 9: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 2

1. JAM DIGITAL ATMega 8

1. GAMBAR RANGKAIAN

PB0/ICP14

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

PC6/RESET1

PB6/XTAL1/TOSC19

PB7/XTAL2/TOSC210

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/XCK/T06

PD5/T111

PD6/AIN012

PD7/AIN113

AVCC20

AREF21

U?

ATMEGA8

X1CRYSTAL

C1

22n

C2

10n

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U1

74LS47

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U2

74LS47

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U3

74LS47

A7

QA13

B1

QB12

C2

QC11

D6

QD10

BI/RBO4

QE9

RBI5

QF15

LT3

QG14

U4

74LS47

SET MENIT

SET JAM

JAM DIGITAL 7 SEGMENT

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.03.4 Standard Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments:

Page 10: Laporan Praktikum Mikro

Chip type : ATmega8 Program type : Application Clock frequency : 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega8.h> #include <delay.h> bit fl_timer; unsigned int cnt=0, cnt_jam=0, kali=0; interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0xEA; TCNT1L=0xE8; if(fl_timer==1) { PORTB.4=1; fl_timer=0; } else { PORTB.4=0; fl_timer=1; } kali++; switch (kali) {case 120: //...1 menit // if(kali==10) { cnt=cnt+1; switch (cnt) { case 0:PORTD=0x00;break; case 1:PORTD=0x01;break; case 2:PORTD=0x02;break; case 3:PORTD=0x03;break; case 4:PORTD=0x04;break; case 5:PORTD=0x05;break; case 6:PORTD=0x06;break; case 7:PORTD=0x07;break; case 8:PORTD=0x08;break; case 9:PORTD=0x09;break; case 10:PORTD=0x10;break; case 11:PORTD=0x11;break; case 12:PORTD=0x12;break; case 13:PORTD=0x13;break; case 14:PORTD=0x14;break; case 15:PORTD=0x15;break; case 16:PORTD=0x16;break; case 17:PORTD=0x17;break;

Page 11: Laporan Praktikum Mikro

case 18:PORTD=0x18;break; case 19:PORTD=0x19;break; case 20:PORTD=0x20;break; case 21:PORTD=0x21;break; case 22:PORTD=0x22;break; case 23:PORTD=0x23;break; case 24:PORTD=0x24;break; case 25:PORTD=0x25;break; case 26:PORTD=0x26;break; case 27:PORTD=0x27;break; case 28:PORTD=0x28;break; case 29:PORTD=0x29;break; case 30:PORTD=0x30;break; case 31:PORTD=0x31;break; case 32:PORTD=0x32;break; case 33:PORTD=0x33;break; case 34:PORTD=0x34;break; case 35:PORTD=0x35;break; case 36:PORTD=0x36;break; case 37:PORTD=0x37;break; case 38:PORTD=0x38;break; case 39:PORTD=0x39;break; case 40:PORTD=0x40;break; case 41:PORTD=0x41;break; case 42:PORTD=0x42;break; case 43:PORTD=0x43;break; case 44:PORTD=0x44;break; case 45:PORTD=0x45;break; case 46:PORTD=0x46;break; case 47:PORTD=0x47;break; case 48:PORTD=0x48;break; case 49:PORTD=0x49;break; case 50:PORTD=0x50;break; case 51:PORTD=0x51;break; case 52:PORTD=0x52;break; case 53:PORTD=0x53;break; case 54:PORTD=0x54;break; case 55:PORTD=0x55;break; case 56:PORTD=0x56;break; case 57:PORTD=0x57;break; case 58:PORTD=0x58;break; case 59:PORTD=0x59;break; case 60: PORTD=0x00; cnt=0; cnt_jam=cnt_jam+1;; switch (cnt_jam) { case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;

Page 12: Laporan Praktikum Mikro

PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break; } break; } } kali=0;break; } } void main(void) {

Page 13: Laporan Praktikum Mikro

PORTB=0x00; DDRB=0xFF; PORTC=0x70; DDRC=0x0F; PORTD=0x00; DDRD=0xFF; TCCR0=0x00; TCNT0=0x00; TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xEA; TCNT1L=0xE8; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x04; ACSR=0x80; SFIOR=0x00; #asm("sei") while (1) { // Place your code here if(PINC.4==0) { cnt=cnt+1; delay_ms(200); switch (cnt) { case 0:PORTD=0x00;break; case 1:PORTD=0x01;break; case 2:PORTD=0x02;break; case 3:PORTD=0x03;break; case 4:PORTD=0x04;break; case 5:PORTD=0x05;break; case 6:PORTD=0x06;break; case 7:PORTD=0x07;break; case 8:PORTD=0x08;break; case 9:PORTD=0x09;break; case 10:PORTD=0x10;break; case 11:PORTD=0x11;break; case 12:PORTD=0x12;break; case 13:PORTD=0x13;break; case 14:PORTD=0x14;break; case 15:PORTD=0x15;break; case 16:PORTD=0x16;break; case 17:PORTD=0x17;break;

Page 14: Laporan Praktikum Mikro

case 18:PORTD=0x18;break; case 19:PORTD=0x19;break; case 20:PORTD=0x20;break; case 21:PORTD=0x21;break; case 22:PORTD=0x22;break; case 23:PORTD=0x23;break; case 24:PORTD=0x24;break; case 25:PORTD=0x25;break; case 26:PORTD=0x26;break; case 27:PORTD=0x27;break; case 28:PORTD=0x28;break; case 29:PORTD=0x29;break; case 30:PORTD=0x30;break; case 31:PORTD=0x31;break; case 32:PORTD=0x32;break; case 33:PORTD=0x33;break; case 34:PORTD=0x34;break; case 35:PORTD=0x35;break; case 36:PORTD=0x36;break; case 37:PORTD=0x37;break; case 38:PORTD=0x38;break; case 39:PORTD=0x39;break; case 40:PORTD=0x40;break; case 41:PORTD=0x41;break; case 42:PORTD=0x42;break; case 43:PORTD=0x43;break; case 44:PORTD=0x44;break; case 45:PORTD=0x45;break; case 46:PORTD=0x46;break; case 47:PORTD=0x47;break; case 48:PORTD=0x48;break; case 49:PORTD=0x49;break; case 50:PORTD=0x50;break; case 51:PORTD=0x51;break; case 52:PORTD=0x52;break; case 53:PORTD=0x53;break; case 54:PORTD=0x54;break; case 55:PORTD=0x55;break; case 56:PORTD=0x56;break; case 57:PORTD=0x57;break; case 58:PORTD=0x58;break; case 59:PORTD=0x59;break; case 60:PORTD=0x00;cnt=0;break; } } if(PINC.5==0) { cnt_jam=cnt_jam+1; delay_ms(200); switch (cnt_jam) { case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break;

Page 15: Laporan Praktikum Mikro

case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1; PORTB.1=0;PORTB.2=0;PORTB.3=0;break; case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=1;PORTB.2=0;PORTB.3=0;break; case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0; PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break; } } }; }

Page 16: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 3

1. TULISAN BERGESER PADA LCD

1. GAMBAR RANGKAIAN

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

29%

RV1

1k

TULISAN BERGESER PADA LCD

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/

Page 17: Laporan Praktikum Mikro

#include <mega8535.h> #include <delay.h> #include <string.h> #include <alcd.h> char buffer_lcd[]="Edy Soeprajitno : 03.2008.1.06529"; char lcd_number=16; void sett_regs(void); void tampilan(void); void main(void) { sett_regs(); lcd_clear(); lcd_init(16); while (1) { tampilan(); } } void sett_regs() { DDRA=0xFF;PORTA=0x00; DDRA=0x00;PORTA=0x00; DDRA=0x00;PORTA=0x00; } void tampilan(void) { unsigned int i,j,k; unsigned int data_len=strlen(buffer_lcd); lcd_clear(); lcd_gotoxy(1,0); lcd_putsf(" TEKS BERGESER"); for(i=lcd_number;i>=1;--i) { if(i>lcd_number)break; lcd_gotoxy(i,1); for(j=0;j<(lcd_number-i);j++) { lcd_putchar(buffer_lcd[j]); } delay_ms(50); }; k=0; for(i=0;i<=data_len;i++) { k++; lcd_gotoxy(0,1); for(j=0;j<16;j++) { if(buffer_lcd[j+k]==NULL){return;} lcd_putchar(buffer_lcd[j+k]); } delay_ms(50); };

}

Page 18: Laporan Praktikum Mikro

3. FLOWCHART

Page 19: Laporan Praktikum Mikro

4. ANALISA

• char buffer_lcd[]="TULISAN BERGESER LCD";.

Merupakan fungsi array string pada buffer_lcd.

• char lcd_number=16;.

Deklarasi jumlah kolom LCD yang digunakan.

• data_len adalah variabel untuk mengetahui panjang data pada buffer_lcd dan

fungsinya untuk perhitungan panjang kolom pada LCD yang akan ditulisi,

sedangkan fungsi strlen() adalah mengambil data nilai panjang karakter di

array string.

• void sett_regs() {

DDRA=0xFF;PORTA=0x00; DDRA=0x00;PORTA=0x00;

DDRA=0x00;PORTA=0x00;

}

Merupakan fungsi inialisasi PORT I/O yang digunakan.

if(buffer_lcd[j+k]==NULL)

{

return;

}

script program diatas adalah salah satu rutin syntax untuk null terminated. Atau

jika data pada array[?] berisi null maka running akan diselesaikan dan memulai

dari awal.

Page 20: Laporan Praktikum Mikro

2. JAM DIGITAL MENGGUNAKAN LCD

1. GAMBAR RANGKAIAN

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

0%

RV1

1k

JAM DIGITAL MENGGUNAKAN LCD

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/*****************************************************

This program was produced by the

CodeWizardAVR V2.05.0 Evaluation

Automatic Program Generator

© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 1/14/2012

Author : Edy Soeprajitno (03.2008.1.06529)

Company : Laboratorium Mikroprosessor ITATS

Comments:

Chip type : ATmega8535

Program type : Application

AVR Core Clock frequency: 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 128

*****************************************************/

Page 21: Laporan Praktikum Mikro

#include <mega8535.h>

#include <stdlib.h>

#include <alcd.h>

unsigned int kali=0,detik=0,menit=0,jam=0;

unsigned char cdetik[10],cmenit[10],cjam[10];

interrupt [TIM2_COMP] void timer2_comp_isr(void)

{

TCNT2=0; //jika sudah compare match,set awal lagi

if(++kali==10)

{

if(++detik==60)

{ detik=0;

lcd_clear();

if(++menit==60)

{ menit=0;

lcd_clear();

if(++jam==24)

{

jam=0;

lcd_clear();

}

}

}

kali=0;

itoa(detik,cdetik);

itoa(menit,cmenit);

itoa(jam,cjam);

lcd_gotoxy(9,1);

lcd_putsf(":");

lcd_gotoxy(10,1);

lcd_puts(cdetik);

lcd_gotoxy(6,1);

lcd_putsf(":");

lcd_gotoxy(7,1);

lcd_puts(cmenit);

lcd_gotoxy(4,1);

lcd_puts(cjam);

lcd_gotoxy(1,0);

lcd_putsf(" JAM DIGITAL");

}

}

void main(void)

{

Page 22: Laporan Praktikum Mikro

PORTA=0x00;

DDRA=0x00;

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2=0x02;

TCNT2=0x00;

OCR2=0x96;

MCUCR=0x00;

MCUCSR=0x00;

TIMSK=0x80;

UCSRB=0x00;

ACSR=0x80;

SFIOR=0x00;

ADCSRA=0x00;

SPCR=0x00;

TWCR=0x00;

lcd_init(16);

#asm("sei")

while (1)

{

// Place your code here

}

}

Page 23: Laporan Praktikum Mikro

3. FLOWCHART

4. ANALISA

o TCNT2=0; Berfungsi untuk mereset awal ketika sudah sesuai konversinya.

o if(++kali==1440) Meriksa apakah sudah mencapai 1440 kali interupsi timer2.

Pada listing program ini saya buat 1440 karena menyesuaikan dengan simulasi di

proteus dengan pengaturan CKSL Fuse pada proteus adalah 2MHz.

o itoa(detik,cdetik); merupakan standart library function yang berfungsi

mengubah int detik menjadi karakter pada string cdetik.

o lcd_gotoxy(7,1); merupakan fungsi untuk meletakkan karakter dalam LCD. Pada

perintah tersebut meletakkan karakter dalam kolom ke-7 dan baris ke 1.

o lcd_puts(cmenit); merupakan fungsi untuk menampilkan string yang disimpan

dalam SRAM pada LCD.

Page 24: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 4

MOTOR STEPPER BIPOLAR

1. Gambar Rangkaian

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GND GND

U2

L293D

+225

MOTOR STEPPER BIPOLAREDY SOEPRAJITNO : 03.2008.1.06529

2. Listing Program

Half Step /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0

Page 25: Laporan Praktikum Mikro

Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) { PORTA=0x00; DDRA=0x0F; while (1) { PORTA=0x07;delay_ms(10); PORTA=0x03;delay_ms(10); PORTA=0x0B;delay_ms(10); PORTA=0x0A;delay_ms(10); PORTA=0x0E;delay_ms(10); PORTA=0x0C;delay_ms(10); PORTA=0x0D;delay_ms(10); PORTA=0x05;delay_ms(10); } }

Full Step /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) { PORTA=0x00; DDRA=0xFF;

Page 26: Laporan Praktikum Mikro

while (1) { PORTA=0x01;delay_ms(100); PORTA=0x02;delay_ms(100); PORTA=0x0E;delay_ms(100); PORTA=0x0D;delay_ms(100); } }

3. FLOWCHART

Page 27: Laporan Praktikum Mikro

4. ANALISA

a. Full Step

Pada pengendalian motor stepper bipolar dengan mode full step ini, motor akan

bergerak dengan 4 step yaitu 90 °, 180 °, 270 °, 360 °. Dengan listing program sebagai

berikut :

PORTA=0x01;delay_ms(100); // berputar 90 ° CW

PORTA=0x02;delay_ms(100); // berputar 180 ° CW

PORTA=0x0E;delay_ms(100); // berputar 270 ° CW

PORTA=0x0D;delay_ms(100); // berputar 360 ° CW

b. Half Step

Pada pengendalian motor stepper bipolar dengan mode half step ini, motor akan

bergerak dengan 8 step yaitu 45 °, 90 °, 135 °, 180 °, 225°, 270 °, 315 °, 360 °.

Dengan listing program sebagai berikut :

PORTA=0x07;delay_ms(100); // berputar 45 °

PORTA=0x03;delay_ms(100); // berputar 90° CW

PORTA=0x0B;delay_ms(100); // berputar 135 ° CW

PORTA=0x0A;delay_ms(100); // berputar 180 ° CW

PORTA=0x0E;delay_ms(100); // berputar 225 ° CW

PORTA=0x0C;delay_ms(100); // berputar 270 ° CW

PORTA=0x0D;delay_ms(100); // berputar 315 ° CW

PORTA=0x05;delay_ms(100); // berputar 360° CW

Page 28: Laporan Praktikum Mikro

LAPORAN RESMI PERCOBAAN 5

PENGATURAN KECEPATAN MOTOR DC DG SAKLAR

1. GAMBAR RANGKAIAN

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GNDGND

U1

L293D

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U2

ATMEGA8535

U2(AREF)

U1(VS) U1(VSS)

U1(GND)

D11N4004

D21N4004

D31N4004

D41N4004

D3(V_MOTOR)

D4(GND)

speed_up

speed_down

stop

PENGATUR KECEPATAN MOTOR DC DG SAKLAR

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : MOTOR DC Version : 1 Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments:

Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> void main(void) { PORTC=0xFF; DDRC=0x00;

Page 29: Laporan Praktikum Mikro

PORTD=0x00; DDRD=0xFF; TCCR1A=0xA1; TCCR1B=0x0C; while (1) { if(PINC.0==0) { PORTD=0x05; if(OCR1AL>=255){OCR1AL=0;} else{OCR1AL++;} delay_ms(50); } if(PINC.1==0) { PORTD=0x05; if(OCR1AL<=0){OCR1AL=0;} else{OCR1AL--;} delay_ms(50); } if(PINC.2==0){PORTD=0x00;OCR1AL=0;} } }

3. FLOWCHART

Page 30: Laporan Praktikum Mikro

4. ANALISA

• Ketika tombol speed_up ditekan maka PWM akan naik (OCR1AL++) dan

putaran motor semakin lama akan naik atau cepat.

• Ketika tombol speed_down ditekan maka PWM akan turun (OCR1AL--) dan

putaran motor semakin lama akan turun atau pelan.

• Dan ketika tombol stop di tekan maka motor akan berhenti.

Page 31: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 6

PENGATURAN KECEPATAN MOTOR DC DG ADC

1. GAMBAR RANGKAIAN

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GNDGND

U1

L293D

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL112

XTAL213

AVCC30

AREF32

U2

ATMEGA8535

29%

RV11k

RV1(2) RV1(1)

U2(AREF)

U1(VS) U1(VSS)

U1(GND)

D11N4004

D21N4004

D31N4004

D41N4004

D3(V_MOTOR)

D4(GND)

U2(PA0/ADC0)

V=1.45

KECEPATAN MOTOR DC MENGGUNAKAN ADC

EDY SOEPRAJITNO : 03.2008.1.06529

2. FLOWCHART

Page 32: Laporan Praktikum Mikro

3. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : KECEPATAN MOTOR DG ADC Version : 1 Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> unsigned char data; #define ADC_VREF_TYPE 0x20 unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } void main(void) { PORTA=0x00; DDRA=0x00; PORTD=0x00; DDRD=0x00; TCCR1A=0x00; TCCR1B=0x00; ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x00; SFIOR&=0x00; while (1) { data=read_adc(1); OCR1AL=OCR1BL=data; PORTD=0x09; } }

Page 33: Laporan Praktikum Mikro

4. ANALISA

• Pengendalian PWM dengan adc ini menggunakan potensio atau variable

resistor sebagai inputnya dengan tegangan referensi ADC adalah Port AREF, dengan

setting ADC 8 bit.

• Ketika potensio atau variable resistor di putar menuju +5V maka putaran

motor akan semakin cepat dan begitu juga sebaliknya. Data dari hasil pembacaan input

ADC di umpankan ke setting PWM pada PORTD yaitu pada OCR1A dan OCR1B.

• Dengan bertambahnya tegangan output dari input ADC maka akan semakin

tinggi pula PWM yang dihasilkan, sehingga motor akan semakin cepat.

Page 34: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 7

MENAMPILKAN NAMA & NPM BERGESER

1. GAMBAR RANGKAIAN Q0

15

Q1

1

Q2

2

Q3

3

Q4

4

Q5

5

Q6

6

Q7

7

Q7'

9

SH_CP

11

ST_CP

12

DS

14

MR

10

OE

13

U174HC595

Q0

15

Q1

1

Q2

2

Q3

3

Q4

4

Q5

5

Q6

6

Q7

7

Q7'

9

SH_CP

11

ST_CP

12

DS

14

MR

10

OE

13

U274HC595

Q0

15

Q1

1

Q2

2

Q3

3

Q4

4

Q5

5

Q6

6

Q7

7

Q7'

9

SH_CP

11

ST_CP

12

DS

14

MR

10

OE

13

U374HC595

Q0

15

Q1

1

Q2

2

Q3

3

Q4

4

Q5

5

Q6

6

Q7

7

Q7'

9

SH_CP

11

ST_CP

12

DS

14

MR

10

OE

13

U474HC595

Q0

15

Q1

1

Q2

2

Q3

3

Q4

4

Q5

5

Q6

6

Q7

7

Q7'

9

SH_CP

11

ST_CP

12

DS

14

MR

10

OE

13

U5

74HC595

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U6

ATMEGA8

12U7:A 7404

34U7:B 7404

56U7:C 7404

1312U7:D 7404

1110U7:E 7404

98U7:F 7404

12U8:A 7404

NAMA & NPM BERGESER PADA DOT MATRIK

EDY SOEPRAJITNO : 03.2008.1.06529

Page 35: Laporan Praktikum Mikro

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : MENAMPILKAN NAMA & NPM BERGESER Version : 1 Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/

#include "avr/io.h"

#include "util/delay.h"

#include "avr/pgmspace.h"

#include "string.h"

#include "matrix.h"

/******************************************************************

* Variable & RAM Mapping

*******************************************************************/

unsigned char text_buffer[100]; //Character to display max. 100

unsigned char display_buffer[700];//100 character need 100*5

character

unsigned int text_length, col_len;

unsigned char scroll_speed;

unsigned int col_count;

/*******************************************************************

* Function Prototype

*******************************************************************/

void toggle_ctr();

void fill_display_buffer();

void show_display();

/*******************************************************************

* Shift register control

*******************************************************************/

void toggle_ctr()

{

ST_CP_Hi;

ST_CP_Lo;

SH_CP_Hi;

SH_CP_Lo;

}

Page 36: Laporan Praktikum Mikro

/*******************************************************************

* Fill display buffer, read text to display, get text data from

table, save to display buffer

********************************************************************/

void fill_display_buffer()

{

unsigned int x,c,i;

unsigned int digit;

unsigned char str_temp;

c = 0;

for(digit=0;digit<text_length;++digit)

{

str_temp = text_buffer[digit];

x = str_temp * 5;

for (i=0;i<5;++i)

{

display_buffer[c] = pgm_read_byte(&text_data[x]);

//pgm_read_byte(&packet[i]));

++x;

++c;

}

display_buffer[c]=0;

++c;

}

}

/***************************************************************

* Show display buffer to dot matrix, data send colom by colom

***************************************************************/

void show_display()

{

unsigned int x,c,i,r;

unsigned int mychar;

if (text_length>4)

{

c=0;

for (r=1;r<scroll_speed;r++)

{

DS_Hi;

toggle_ctr();

mychar = c+col_count;

DATA_PORT = display_buffer[mychar];

_delay_ms(1);

++c;

DS_Lo;

for (i=1;i<40;i++)

{

toggle_ctr();

mychar = c+col_count;

DATA_PORT = display_buffer[mychar];

Page 37: Laporan Praktikum Mikro

_delay_ms(1);

++c;

}

c=0;

}

++col_count;

if (col_count>col_len) col_count = 0;

}

else

{

for(col_count=0;col_count<col_len;col_count++)

{

c=0;

for(r=1;r<scroll_speed;r++);

{

DS_Hi;

toggle_ctr();

DATA_PORT = display_buffer[c];

_delay_ms(1);

c++;

for (x=1;x<39;x++)

{ DS_Lo;

toggle_ctr();

DATA_PORT = display_buffer[c];

_delay_ms(1);

++c;

}

c=0;

}

}

}

}

int main()

{

char str1[] = " Edy Soeprajitno (03.2008.1.06529)";

DDRB =0xFF;

DDRC = 0xFF;

DDRD = 0xFF;

strcpy (text_buffer, str1);

text_length = strlen(str1);

col_len = text_length * 6;

fill_display_buffer();

scroll_speed = 2;

col_count=0;

while (1)

{

show_display();

}

}

Page 38: Laporan Praktikum Mikro

matrix.h

#ifndef MATRIX_H_

#define MATRIX_H_

#include "avr/pgmspace.h"

#include "avr/io.h"

#define SH_CP_Hi PORTC |= (1<<1)

#define SH_CP_Lo PORTC &=~(1<<1)

#define ST_CP_Hi PORTC |= (1<<2)

#define ST_CP_Lo PORTC &= ~(1<<2)

#define DS_Hi PORTC |= (1<<0)

#define DS_Lo PORTC &= ~(1<<0)

#define DATA_PORT PORTB

const char text_data[] PROGMEM ={

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 0 , 0 , 0,

0 , 0 , 95 , 0 , 0,

0 , 7 , 0 , 7 , 0,

20 , 127 , 20 , 127 , 20,

36 , 42 , 127 , 42 , 18,

39 , 21 , 107 , 84 , 114,

Page 39: Laporan Praktikum Mikro

54 , 73 , 86 , 32 , 80,

0 , 0 , 11 , 7 , 0,

0 , 28 , 34 , 65 , 0,

0 , 65 , 34 , 28 , 0,

42 , 28 , 127 , 28 , 42,

8 , 8 , 62 , 8 , 8,

0 , 88 , 56 , 0 , 0,

8 , 8 , 8 , 8 , 8,

0 , 96 , 96 , 0 , 0,

32 , 16 , 8 , 4 , 2,

62 , 81 , 73 , 69 , 62,

0 , 66 , 127 , 64 , 0,

114 , 73 , 73 , 73 , 70,

34 , 65 , 73 , 73 , 54,

24 , 20 , 18 , 127 , 16,

39 , 69 , 69 , 69 , 57,

60 , 74 , 73 , 73 , 48,

1 , 113 , 9 , 5 , 3,

54 , 73 , 73 , 73 , 54,

6 , 73 , 73 , 41 , 30,

0 , 54 , 54 , 0 , 0,

0 , 91 , 59 , 0 , 0,

8 , 20 , 34 , 65 , 0,

20 , 20 , 20 , 20 , 20,

0 , 65 , 34 , 20 , 8,

2 , 1 , 81 , 9 , 6,

50 , 73 , 121 , 65 , 62,

124 , 18 , 17 , 18 , 124,

65 , 127 , 73 , 73 , 62,

62 , 65 , 65 , 65 , 34,

65 , 127 , 65 , 65 , 62,

127 , 73 , 73 , 65 , 65,

127 , 9 , 9 , 1 , 1,

62 , 65 , 73 , 73 , 58,

127 , 8 , 8 , 8 , 127,

0 , 65 , 127 , 65 , 0,

32 , 64 , 65 , 63 , 1,

127 , 8 , 20 , 34 , 65,

127 , 64 , 64 , 64 , 64,

127 , 2 , 12 , 2 , 127,

127 , 2 , 4 , 8 , 127,

62 , 65 , 65 , 65 , 62,

127 , 9 , 9 , 9 , 6,

62 , 65 , 65 , 33 , 94,

127 , 9 , 25 , 41 , 70,

38 , 73 , 73 , 73 , 50,

1 , 1 , 127 , 1 , 1,

63 , 64 , 64 , 64 , 63,

7 , 24 , 96 , 24 , 7,

127 , 32 , 24 , 32 , 127,

99 , 20 , 8 , 20 , 99,

3 , 4 , 120 , 4 , 3,

Page 40: Laporan Praktikum Mikro

97 , 81 , 73 , 69 , 67,

0 , 127 , 65 , 65 , 0,

2 , 4 , 8 , 16 , 32,

0 , 65 , 65 , 127 , 0,

4 , 2 , 1 , 2 , 4,

64 , 64 , 64 , 64 , 64,

0 , 0 , 7 , 11 , 0,

32 , 84 , 84 , 84 , 56,

127 , 40 , 68 , 68 , 56,

0 , 56 , 68 , 68 , 68,

56 , 68 , 68 , 40 , 127,

56 , 84 , 84 , 84 , 24,

8 , 126 , 9 , 9 , 2,

8 , 84 , 84 , 84 , 60,

127 , 16 , 8 , 8 , 112,

0 , 68 , 125 , 0 , 0,

32 , 64 , 68 , 61 , 0,

0 , 127 , 16 , 40 , 68,

0 , 65 , 127 , 64 , 0,

124 , 4 , 120 , 4 , 120,

124 , 8 , 4 , 4 , 120,

56 , 68 , 68 , 68 , 56,

124 , 20 , 20 , 20 , 8,

8 , 20 , 20 , 20 , 124,

124 , 8 , 4 , 4 , 8,

72 , 84 , 84 , 84 , 36,

0 , 4 , 63 , 68 , 68,

60 , 64 , 64 , 32 , 124,

28 , 32 , 64 , 32 , 28,

60 , 64 , 60 , 64 , 60,

68 , 40 , 16 , 40 , 68,

12 , 80 , 80 , 80 , 60,

68 , 100 , 84 , 76 , 68,

0 , 8 , 54 , 65 , 0,

0 , 0 , 119 , 0 , 0,

0 , 65 , 54 , 8 , 0,

2 , 1 , 2 , 4 , 2,

42 , 85 , 42 , 85 , 42};

#endif /* MATRIX_H_ */

Page 41: Laporan Praktikum Mikro

3. FLOWCHART

4. ANALISA

Flowcaht di atas adalah untuk menjelaskan bagaimana ISR bekerja sebagai bagian

utama dari program running text ini. Yang menjadi sangat penting kali ini adalah

peranan variable CtrBaris. Variable ini di-inceremet setiap ISR dijalankan. Nilainmya

adalah dimulai dari 0 dan maksimal 7 sebelum kembalii menjadi 0 lagi. Nilainya

adalah dipadankan dengan nomor baris pada Display. Misalnya jika saat nilainya dalah

3 maka saat itu ISR akan berusaha untuk menyalakan lampu LED pada baris ke-3.

demikian seterusnya.

Page 42: Laporan Praktikum Mikro

Rutin yang dijalankan adalah mirip. Yakni "SendToDisplay" dan "ShowBaris".

SendToDisplay adalh untuk melakukan pembacaan titik-titik karakter yang hendak

ditampilkan (yg akan dijelaskn berikutnya).Rutin ini lah yang menetukan Titik LED

mana saja yang akan dihidupkan. Dari titik-titik karakter dishifting pada 4094. Jika

kita menggunakan 10 blok LED maka dia akan melakuakn Shiftting sebanyak 80 kali.

Ditambah dengan Extra Shifting yang digunakan saat Mode Running (yg akan

dijelaskan berikutnya).

Kemudian adalah ShowBaris yakni sebuah rutin yang bertanggung jawab untuk

mengatur di baris manakan rangkaian titik-titik lampu LED tersebut hendak

dinyalakan. Karena desain yang menghubungkan / merangkaikan ke 11 chips 4094(10

kolom dan 1 baris), maka rutin ini melakuakn shifting sebanyak 8 kali lagi. hal ini

sejumlah dengan lebar data pada 4094. Walaupun kita hanya akan menggunakan 7

baris saja. Kemudian tugasnya adalah menyalakan titik-titik LED yang sebelumnya

tersimpan pada register 4094. Yakn isaat diterbutkannya sinyal STR.

Disamping itu, ada perbedaan handler dari variable CtrBaris ini. yakni pada

Ctrbaris = 0 yang rutinnya ditambahkan dengan StreamDigits. Stream digit adalah

rutin yang sanagt penting. tugasnya antara lain adalah

1. Mengatur berapa jumlah Extra-Shifting yang diperlukan saat itu.Misalnya saat itu

adalah tampilan Display bergeser 2 titik ke kiri. Nilainya berurtan 0 - 5. Dengan

demikian Text bergeser ke kiri. sejauh 5 titik. sebelum kemudian Extra-Shifting

menjadi 0 kembali, yg berarti saat berikutnya text tidak digeser.

2. Dalam peralihan Extra-Shifting dari 5 kembali ke 0, dan Displaiy tidak digeser,

karena yang digeser adalah krakter dalam buffer karakter. Misalnya semua adalah

"Edy Soeprajitno". kemudian menjadi " dy Soeprajitno ". Karakterini ditampilkan

sebanyak 6 kali dengan menggeser 1 titik-titik disetiap penampilannya. Dan

kemudian diganti lagi dengan " y Soeprajitno " dan nasibnya pun sama.

Walaupun dalam prakteknya tidak sesimple itu karena kita harus melakuakn

pengujian.apakah display masuk pada Mode Running atau tidak. Apakah ExtraShifting

sudah 5, jika ya maka diulang dari 0, dan seterusnya.

Page 43: Laporan Praktikum Mikro

Kemudian yang terpenting adalah proses pengeseran karakter pada buffer karakter.

sebenranya tidak seperti itu juga. Kita hanya meng-increment pointer dari memory

exkternal yang menyimpan karakter-karakter AT24C08. Dan kemudian dimulaui dari

lokasi yang ditunjuk pointer tersebut kita mengambil data sebanyak 15 karakter. Dan

kemudian ditempatkan pada buffer yang sama yang hanya sanggup menampung 15

karakter saja di dalam RAM internal. Karena setiap proses pengambilan, pointernya

diincrement. Sehingga dengan cara ini karakter yangditampilkan dapat mencapai

ratusan karakter, tergantung kapasitas memory.

http://dhuzell.site90.com/mcs51/modulaplikasi/modul_matrix_faq.htm

http://www.best-microcontroller-projects.com/led-dot-matrix-display.html

http://www.toko-elektronika.com/tutorial/paralel.html

Page 44: Laporan Praktikum Mikro

LAPORAN RESMI

PERCOBAAN 8

1. KECEPATAN MOTOR DC MELALUI SERIAL PC

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

RXD

RTS

TXD

CTSQ1BD139

+12V

A

B

C

D

+175

KECEPATAN MOTOR DC MELALUI SERIAL PCEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.095200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <stdio.h> unsigned char data;

Page 45: Laporan Praktikum Mikro

void main(void) { TCCR0=0x6B; TCNT0=0x00; OCR0=0x00; PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0x08; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; printf("Kecepatan Motor melalui PC"); putchar(13); printf("PILIH KECEPATAN"); putchar(13); printf("1. Pelan"); putchar(13); printf("2. Sedang"); putchar(13); printf("3. Cepat"); putchar(13); while (1) { data=getchar(); if(data=='1'){ OCR0=85; } else if(data=='2'){ OCR0=170; } else if(data=='3'){ OCR0=254; } } }

Page 46: Laporan Praktikum Mikro

2. MENGIRIM TEXT DARI SERIAL PC KE LCD

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

RXD

RTS

TXD

CTSD7

14

D6

13

D5

12

D4

11

D3

10

D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

MENGIRIM TEKS DARI PC KE LCD

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.095200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/

Page 47: Laporan Praktikum Mikro

#include <mega8535.h> #include <delay.h> #include <alcd.h> #include <stdio.h> unsigned char data_rx; unsigned char y,x; void main(void) { Func0=In State0=T PORTA=0x00; DDRA=0x00; Func0=In State0=T PORTB=0x00; DDRB=0x00; Func0=In State0=T PORTC=0x00; DDRC=0x00; Func0=In State0=T PORTD=0x00; DDRD=0x00; UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; lcd_init(16); printf("Mengirim Teks dari PC ke LCD"); putchar(13); printf("Ketik Teks DISINI :"); putchar(13); printf(" "); putchar(13); y=0; while (1) { x=0; while(x<16) { lcd_gotoxy(x,y); data_rx=getchar(); printf("%c",data_rx); lcd_gotoxy(x,y); lcd_putchar(data_rx); if(data_rx!=0){x++;data_rx=0;} } y++; if(y==2){y=0;} } }

Page 48: Laporan Praktikum Mikro

3. KECEPATAN MOTOR DC MELALUI SERIAL PC & LCD

1. GAMBAR RANGKAIAN

PC6/TOSC128

PC527

PC426

PC325

PC224

PC1/SDA23

PC0/SCL22

PC7/TOSC229

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

PA7/ADC733

PB6/MISO7

PB5/MOSI6

PB4/SS5

PB3/AIN1/OC04

PB2/AIN0/INT23

PB1/T12

PB0/T0/XCK1

PB7/SCK8

PD6/ICP120

PD5/OC1A19

PD4/OC1B18

PD3/INT117

PD2/INT016

PD1/TXD15

PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC30

AREF32

U1

ATMEGA8535

RXD

RTS

TXD

CTS

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GNDGND

U2 L293D

U2(VS)

U2(VSS)

U2(GND)

D11N4004

D21N4004

D31N4004

D41N4004

D3(V_MOTOR)

D4(GND)

KECEPATAN MOTOR DC DARI PC DENGAN DISPLAY 7SEGMENT

EDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/14/2012 Author : Edy Soeprajitno (03.2008.1.06529) Company : Laboratorium Mikroprosessor ITATS Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 11.095200 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <stdio.h> #include <delay.h> char rat,pul,sat; int i;

Page 49: Laporan Praktikum Mikro

unsigned char segment[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} ;

unsigned char data; void display(int pwm) { rat=pwm/100;pwm%=100; pul=pwm/10; sat=pwm%10; for(i=0;i<200;i++) { PORTC=0b00100000; PORTB=segment[rat]; delay_ms(1); PORTC=0b01000000; PORTB=segment[pul]; delay_ms(1); PORTC=0b10000000; PORTB=segment[sat]; delay_ms(1); } } void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0xC0; DDRB=0xFF; PORTC=0xFF; DDRC=0xFF; PORTD=0x00; DDRD=0xFF; TCCR1A=0xA1; TCCR1B=0x0C; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK=0x00; UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; printf("PILIH KECEPATAN"); putchar(13); printf(" "); putchar(13); printf("0. STOP"); putchar(13); printf("1. Kecepatan 1"); putchar(13); printf("2. Kecepatan 2");

Page 50: Laporan Praktikum Mikro

putchar(13); printf("3. Kecepatan 3"); putchar(13); printf("4. Kecepatan 4"); putchar(13); while (1) { display(OCR1AL); data=getchar(); if(data=='0') { OCR1AL=0; PORTA=0x00; } else if(data=='1') { OCR1AL=64; PORTA=0x01; } else if(data=='2') { OCR1AL=128; PORTA=0x01; } else if(data=='3') { OCR1AL=192; PORTA=0x01; } else if(data=='4') { OCR1AL=255; PORTA=0x01; } }; }