Laporan Praktikum Mikro
description
Transcript of 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){
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.
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
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;
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;
}}
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*****************************************************/
#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); }}
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).
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:
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;
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;
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){
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;
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;
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;
} } };}
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*****************************************************/
#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); };
}
3. FLOWCHART
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.
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*****************************************************/
#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){
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 }}
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.
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
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;
while (1) { PORTA=0x01;delay_ms(100); PORTA=0x02;delay_ms(100); PORTA=0x0E;delay_ms(100); PORTA=0x0D;delay_ms(100); }}
3. FLOWCHART
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
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;
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
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.
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
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; }}
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
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
/*****************************************************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;
}
/*******************************************************************
* 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];
_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();
}}
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,
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,
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_ */
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.
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.
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
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;
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; }
}}
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*****************************************************/
#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;} } }
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;
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");
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; } };}