BAB IV PENGUJIAN ALAT
DAFTAR PUSTAKA
Bejo, Agus. 2008. C DAN AVR Rahasia Kemudahan Bahasa C Dalam MikrokontrolerATMega8535, Edisi I, Yogyakarta: Graha Ilmu.
Bishop, Owen. 2004. Dasar-dasar Elektronika. Jakarta: Penerbit Erlangga.
Pitowarno, Endra. 2005. Mikroprosesor dan Interfacing. Edisi I. Yogyakarta: Andi Offset
Sedra, Adel S dan Kenneth C. Smith. 1990. Rangkaian Mikro- elektronika. Edisi kedua. Jilid 1. Jakarta: Penerbit Erlangga.
Setiawan, Sulhan. 2006. Mudah dan Menyenangkan Belajar Mikrokontroller. Yogyakarta: Penerbit ANDI Yogyakarta.
Shrader, Robert L. 1991. Komunikasi Elektronika. Edisi kelima. Jilid 1. Jakarta: Penerbit Erlangga.
Sutadi, Dwi. 2002. I/O BUS & Motherboard. Yogyakarta: Penerbit ANDI Yogyakarta. Tochi, R.J. dan Widmer, N.S. (1998). Digital System, 7th Edition, Prentice-Hall, Inc.,
New Jersey, U.S.A.
Tokheim, Roger L. 1995. Elektronika Digital. Edisi Kedua. Jakarta: Penerbit Erlangga. Wardhana, Lingga. 2006. Belajar Sendiri Mikrokontroller AVR Seri ATMega8535
Simulasi, Hardware, dan Aplikasi. Yogyakarta: Penerbit ANDI Yogyakarta. ATMega8535. Data sheet.diakses pada 18 February 2009. AT89C5051. Data sheet.diakses pada tanggal 24 Oktober 2009. DS1307. Data sheet.diakses pada tanggal 25 February 2009. LM35. Data sheet.diakses pada tanggal 04 Maret 2009.
diakseses pada tanggal 8
Agustus 2009.
diakses pada tanggal 21 Mei, 2009.
PROGRAM
Chip type : ATmega8535 Program type : Application Clock frequency : 1.000000 MHz Memory model : Small
External RAM size : 0 Data Stack size : 128
*****************************************************/ #include <mega8535.h>
#include <delay.h> #include <stdio.h>
#define indikator PORTD.7
#define sdt PORTC.7 #define sclk PORTC.6 #define soe PORTC.5
#define ta PORTA.4 #define tb PORTA.5 #define tc PORTA.6 #define td PORTA.7
#define ring PORTA.1
unsigned char tick, suhu, tack; unsigned char h,m,s;
// I2C Bus functions #asm
.equ __i2c_port=0x15 ;PORTC .equ __sda_bit=1
.equ __scl_bit=0 #endasm
#include <i2c.h>
// DS1307 Real Time Clock functions #include <ds1307.h>
void clock (void) {
sclk=0; sclk=1; }
void sio (unsigned char kar) // pengiriman ke display 3 segment 4094
{
unsigned char i; bit xbit;
for (i=0x00; i<0x08; i++){
if (xbit) sdt = 1; else sdt = 0; kar=kar>>1;
clock(); }
void display (unsigned char xbil) {
switch (xbil) {
case 0: sio (0xee); break;
case 1: sio (0x48); break;
case 2: sio (0xba); break;
case 3: sio (0xda); break; case 4: sio (0x5c); break; case 5: sio (0xd6); break; case 6: sio (0xf6); break;
case 7: sio (0x4a); break;
case 8: sio (0xfe); break;
case 9: sio (0xde); break;
default: break; }
}
void display_tick (unsigned char xbil) {
switch (xbil) {
case 0: sio (0xee|0x1); break;
case 1: sio (0x48|0x1); break;
case 2: sio (0xba|0x1); break;
case 3: sio (0xda|0x1); break; case 4: sio (0x5c|0x1); break; case 5: sio (0xd6|0x1); break; case 6: sio (0xf6|0x1); break;
case 7: sio (0x4a|0x1); break;
case 8: sio (0xfe|0x1); break;
case 9: sio (0xde|0x1); break;
default: break; }
void display_hms (unsigned char jam, unsigned char menit) {
unsigned char jam_h,jam_l, menit_h, menit_l; jam_l = jam % 10; jam_h = jam / 10; menit_l = menit % 10; menit_h = menit / 10; soe = 0; display(menit_l); display(menit_h); display(jam_l); display(jam_h); soe = 1; delay_ms(10); }
void display_hms_tick (unsigned char jam, unsigned char menit) {
unsigned char jam_h,jam_l, menit_h, menit_l; jam_l = jam % 10; jam_h = jam / 10; menit_l = menit % 10; menit_h = menit / 10; soe = 0; display(menit_l); display(menit_h); display_tick(jam_l); display(jam_h); soe = 1; delay_ms(10); }
void dis_int (unsigned int bil) {
unsigned char rat,pul,sat,sisa;
sisa = bil; rat = sisa/100;
bil = sisa;
sisa = bil - (rat*100); pul = sisa/10;
bil = sisa;
sisa = bil - (pul*10); sat = sisa;
display(sat); display(pul); // display(rat); }
#include <ds1307.h>
// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) {
// Place your code here m++;
if (m>59) m = 0; rtc_set_time(h,m,s); delay_ms(5);
}
// External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) {
// Place your code here h++;
if (h>23) h = 0; rtc_set_time(h,m,s); delay_ms(5);
}
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
// Reinitialize Timer 0 value TCNT0=0x10;
// Place your code here indikator = ! indikator; // rtc_get_time(&h,&m,&s); tick++; if (tick == 6) display_hms(h,m); if (tick == 12) { display_hms_tick(h,m); tick = 0; tack ++; } if (tack == 30) { dis_int(suhu); delay_ms(5000); tack = 0; } } #include <delay.h> #define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input) {
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage delay_us(10);
// Start the AD conversion ADCSRA|=0x40;
// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10; return ADCW; }
// Declare your global variables here
void main(void) {
// Declare your local variables here //unsigned char bell,cnt;
unsigned int sh, sh0, sh1, sh2, sh3, sh4, sh5, sh6;
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00; DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00; DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T
PORTC=0x00; DDRC=0xE0;
// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00; DDRD=0x80;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 0.977 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x05;
TCNT0=0x10; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh
// OC1A output: Discon. // OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh
// OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: On
// INT0 Mode: Falling Edge // INT1: On
// INT1 Mode: Falling Edge // INT2: Off
GICR|=0xC0; MCUCR=0x0A; MCUCSR=0x00; GIFR=0xC0;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 7.813 kHz // ADC Voltage Reference: AREF pin // ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7; SFIOR&=0x0F;
// I2C Bus initialization i2c_init();
// Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0
rtc_init(0,0,0);
// Global enable interrupts #asm("sei") rtc_get_time(&h,&m,&s); rtc_set_time(h,m,30); ta = 1; tb = 1; tc = 1; td = 1; while (1) {
// Place your code here
rtc_get_time(&h,&m,&s); sh0 = read_adc(0); delay_ms(10); sh1 = sh0; delay_ms(10); sh2 = sh1; delay_ms(10); sh3 = sh2; delay_ms(10); sh4 = sh3; delay_ms(10); sh5 = sh4; delay_ms(10); sh6 = sh5; delay_ms(10); sh = (sh0 + sh1 + sh2 + sh3 + sh4 + sh5 + sh6)/7; suhu = (sh/2) - 8; delay_ms(150); } } /* rtc_get_time(&h,&m,&s); delay_ms(250); // lcd_gotoxy(0,1); // sprintf(buf,"%02u:%02u:%02u",h,m,s); // lcd_puts(buf); 7 6 5 4 3 2 1 0 d c e g b f a dp */