Laporan Praktikum Mikro

63
TUGAS TAMBAHAN PERCOBAAN 1 RUNNING LED MENGGUNAKAN PUSH BUTTON 1. GAMBAR RANGKAIAN PC 6/TO SC1 28 PC5 27 PC4 26 PC3 25 PC2 24 PC 1/SDA 23 PC 0/SCL 22 PC 7/TO SC2 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/M ISO 7 PB5/M O SI 6 PB 4/SS 5 PB3/AIN 1/O C0 4 PB2/AIN 0/IN T2 3 PB 1/T1 2 PB 0/T0/XCK 1 PB 7/SCK 8 PD 6/IC P1 20 PD 5/O C1A 19 PD 4/O C1B 18 PD3/INT1 17 PD2/INT0 16 PD 1/TXD 15 PD 0/RXD 14 PD 7/O C2 21 RESET 9 XTAL1 13 XTAL2 12 AVCC 30 AREF 32 U1 ATM EG A8535 R1 330R R2 330R R3 330R R4 330R R5 330R R6 330R R7 330R R8 330R PUSH BUTTO N D1 LED -YELLO W D2 LED -YELLO W D3 LED -YELLO W D4 LED -YELLO W D5 LED -YELLO W D6 LED -YELLO W D7 LED -YELLO W D8 LED -YELLO W RUNNI NG LED MENGGUNAKAN PUSH BUTTON EDY SOEPRAJ I TNO : 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 *****************************************************/

description

doc

Transcript of Laporan Praktikum Mikro

Page 1: Laporan Praktikum Mikro

TUGAS TAMBAHAN PERCOBAAN 1

RUNNING LED MENGGUNAKAN PUSH BUTTON

1. GAMBAR RANGKAIAN

PC6/TOSC1 28PC5 27PC4 26PC3 25PC2 24

PC1/SDA 23PC0/SCL 22

PC7/TOSC2 29

PA6/ADC6 34PA5/ADC5 35PA4/ADC4 36PA3/ADC3 37PA2/ADC2 38PA1/ADC1 39PA0/ADC0 40

PA7/ADC7 33PB6/MISO7PB5/MOSI6PB4/SS5PB3/AIN1/OC04PB2/AIN0/INT23PB1/T12PB0/T0/XCK1

PB7/SCK8

PD6/ICP120PD5/OC1A19PD4/OC1B18PD3/INT117PD2/INT016PD1/TXD15PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC 30AREF 32

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 theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data 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 RESMIPERCOBAAN 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

PA0 4

PA1 3

PA2 2

PA3 1

PA4 40

PA5 39

PA6 38

PA7 37

PB0 18

PB1 19

PB2 20

PB3 21

PB4 22

PB5 23

PB6 24

PB7 25

PC0 14

PC1 15

PC2 16

PC3 17

PC4 13

PC5 12

PC6 11

PC7 10

U6

8255A

Page 4: Laporan Praktikum Mikro

2. PROGRAM TRAFFIC LIGHT

1. GAMBAR RANGKAIAN

PC6/TOSC1 28PC5 27PC4 26PC3 25PC2 24

PC1/SDA 23PC0/SCL 22

PC7/TOSC2 29

PA6/ADC6 34PA5/ADC5 35PA4/ADC4 36PA3/ADC3 37PA2/ADC2 38PA1/ADC1 39PA0/ADC0 40

PA7/ADC7 33PB6/MISO7PB5/MOSI6PB4/SS5PB3/AIN1/OC04PB2/AIN0/INT23PB1/T12PB0/T0/XCK1

PB7/SCK8

PD6/ICP120PD5/OC1A19PD4/OC1B18PD3/INT117PD2/INT016PD1/TXD15PD0/RXD14

PD7/OC221

RESET9

XTAL113

XTAL212

AVCC 30AREF 32

U1

ATMEGA8535

D1

D4

D7

D10

R1

220

R2

220

R3

220

R4

220R5

220R6

220

R7

220

R8

220

R9

220

R10

220

R11

220

R12

220

D2

D3

D5

D6

D8

D9

D11D12

TRAFFIC LIGHTEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM TRAFFIC LIGHT

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data 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 BUTTONEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM COUNTER UP/DOWN

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : COUNTER UP/DOWN W PBVersion : 1Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data 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 SEGMENTEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM/*****************************************************This program was produced by theCodeWizardAVR V2.03.4 StandardAutomatic Program Generator© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Page 10: Laporan Praktikum Mikro

Chip type : ATmega8Program type : ApplicationClock frequency : 11.059200 MHzMemory model : SmallExternal RAM size : 0Data 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

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

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 LCDEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments: Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data 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

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

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 LCDEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.059200 MHzMemory model : SmallExternal RAM size : 0Data 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 lagiif(++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. ANALISAo 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 theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal 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 theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data 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 5PENGATURAN 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 SAKLAREDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : MOTOR DCVersion : 1Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.059200 MHzMemory model : SmallExternal RAM size : 0Data 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 ADCEDY SOEPRAJITNO : 03.2008.1.06529

2. FLOWCHART

Page 32: Laporan Praktikum Mikro

3. LISTING PROGRAM/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : KECEPATAN MOTOR DG ADCVersion : 1Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.059200 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/

#include <mega8535.h>#include <delay.h>unsigned char data;#define ADC_VREF_TYPE 0x20unsigned 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.

LAPORAN RESMI

Page 34: Laporan Praktikum Mikro

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

_C

P11

ST

_C

P12

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

_C

P11

ST

_C

P12

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

_C

P11

ST

_C

P12

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

_C

P11

ST

_C

P12

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

_C

P11

ST

_C

P12

DS

14

MR

10

OE

13

U5

74

HC

595

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 MATRIKEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

Page 35: Laporan Praktikum Mikro

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : MENAMPILKAN NAMA & NPM BERGESERVersion : 1Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8Program type : ApplicationAVR Core Clock frequency: 11.059200 MHzMemory model : SmallExternal RAM size : 0Data 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. 100unsigned char display_buffer[700];//100 character need 100*5 characterunsigned 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 theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.095200 MHzMemory model : SmallExternal RAM size : 0Data 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

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1LM016L

MENGIRIM TEKS DARI PC KE LCDEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments: Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.095200 MHzMemory model : SmallExternal RAM size : 0Data 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/TOSC128PC527PC426PC325PC224PC1/SDA23PC0/SCL22

PC7/TOSC229

PA6/ADC634PA5/ADC535PA4/ADC436PA3/ADC337PA2/ADC238PA1/ADC139PA0/ADC040

PA7/ADC733PB6/MISO 7PB5/MOSI 6

PB4/SS 5PB3/AIN1/OC0 4PB2/AIN0/INT2 3

PB1/T1 2PB0/T0/XCK 1

PB7/SCK 8

PD6/ICP1 20PD5/OC1A 19PD4/OC1B 18

PD3/INT1 17PD2/INT0 16PD1/TXD 15PD0/RXD 14

PD7/OC2 21

RESET 9

XTAL1 13

XTAL2 12

AVCC30AREF32

U1

ATMEGA8535

RXD

RTS

TXD

CTS

IN1 2OUT13

OUT26

OUT311

OUT414

IN2 7

IN3 10

IN4 15

EN1 1

EN2 9

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 7SEGMENTEDY SOEPRAJITNO : 03.2008.1.06529

2. LISTING PROGRAM

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 1/14/2012Author : Edy Soeprajitno (03.2008.1.06529)Company : Laboratorium Mikroprosessor ITATSComments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 11.095200 MHzMemory model : SmallExternal RAM size : 0Data 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; } };}