Navigation

Komunikasi Data: Tugas Pengganti Responsi I

Soal PETUNJUK UMUM Buatlah simulasi perangkat untuk mendeteksi suhu kamar. Suhu kamar yang normal berkisar 20 hingga 25 derajat Celcius. Berikan indikator jika suhu di luar suhu normal. Jika suhu normal, tidak ada indikator yang aktif. Indikator dapat berupa LED, Buzzer, Tulisan, atau semacamnya. Indikator antara suhu kurang dan lebih dari suhu normal harus bisa dibedakan. Misalnya jika indikator berupa buzzer, gunakan frekuensi 100 Hz jika suhu di bawah 20 derajat Celcius dan frekuensi 500 Hz jika suhu di atas 25 derajat Celcius. PETUNJUK KHUSUS NPM GANJIL Gunakan sistem bilangan oktal untuk pengaturan register-register (DDRx, PORTx, PINx, dan lainnya). PETUNJUK KHUSUS NPM GENAP Gunakan sistem bilangan heksadesimal untuk pengaturan register-register (DDRx, PORTx, PINx, dan lainnya).

Soal

PETUNJUK UMUM

Buatlah simulasi perangkat untuk mendeteksi suhu kamar. Suhu kamar yang normal berkisar 20 hingga 25 derajat Celcius. Berikan indikator jika suhu di luar suhu normal.
Jika suhu normal, tidak ada indikator yang aktif.
Indikator dapat berupa LED, Buzzer, Tulisan, atau semacamnya.
Indikator antara suhu kurang dan lebih dari suhu normal harus bisa dibedakan.
Misalnya jika indikator berupa buzzer, gunakan frekuensi 100 Hz jika suhu di bawah 20 derajat Celcius dan frekuensi 500 Hz jika suhu di atas 25 derajat Celcius.

PETUNJUK KHUSUS NPM GANJIL

Gunakan sistem bilangan oktal untuk pengaturan register-register (DDRx, PORTx, PINx, dan lainnya).

PETUNJUK KHUSUS NPM GENAP

Gunakan sistem bilangan heksadesimal untuk pengaturan register-register (DDRx, PORTx, PINx, dan lainnya).

Jawaban (NIM GENAP)

Rangkaian ISIS Proteus




Code Vision AVR

#include <mega32.h>
#include <delay.h>
#include <lcd.h>
#include <stdlib.h>

#asm
 .equ __lcd_port=0x15
#endasm

#define ADC_VREF_TYPE 0x00

unsigned int 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;
}

int data;
float suhu;
char temp [25];

void baca_suhu()
{
 data = read_adc(1);
}

void hitung_suhu()
{
 suhu = (float)(data)/2;
}

void main(void)
{
 PORTA=0x00;
 DDRA=0x00;

 PORTB=0x00;
 DDRB=0x00;

 PORTC=0x00;
 DDRC=0x00;

 PORTD=0x00;
 DDRD=0x03;

 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=0x00;
 TCNT2=0x00;
 OCR2=0x00;

 MCUCR=0x00;
 MCUCSR=0x00;

 TIMSK=0x00;

 UCSRB=0x00;

 ACSR=0x80;
 SFIOR=0x00;

 ADMUX=ADC_VREF_TYPE & 0xff;
 ADCSRA=0x83;

 SPCR=0x00;

 TWCR=0x00;

 lcd_init(16);
 lcd_clear();
 lcd_gotoxy(0,0);
 lcd_putsf("Suhu Ruangan");

 while (1)
 {
  if(suhu >= 20 && suhu <= 25)
  {
   PORTD.0 = 0x00;
   PORTD.1 = 0x00;
  }
  else if(suhu < 20)
  {
   PORTD.0 = 0x01;
   PORTD.1 = 0x00;
  }
  else if(suhu > 25)
  {
   PORTD.1 = 0x01;
   PORTD.0 = 0x00;
  }
  baca_suhu();
  hitung_suhu();
  ftoa(suhu,1,temp);
  lcd_gotoxy(0,1);
  lcd_puts (temp);
  lcd_gotoxy (5,1);
  lcd_putchar(0xdf);
  lcd_putsf("C");
 }
}

Download

Teman-teman bisa download Project atau file mentahannya. File ini sudah berisi Desain kerangka (ISIS Proteus) dan source code (Code Vision AVR)
Download
Share

Unknown

Hi, aku Zulfakar mahasiswa Universitas AMIKOM Yogyakarta. Seorang Back-End Developer, Desainer Grafis, dan Blogger.

Post A Comment:

0 comments:

Silahkan berikan komentar anda menggunakan kata-kata yang sopan!