Tutorial Membuat Project Termometer Dan Jam Digital Menggunakan
Codevision AVR by Muhammad Kennedy Ginting
A. Deskripsi Umum
Aplikasi ini dapat menampilkan suhu dan jam digital. Dimana sensor suhu
yang digunakan adalah LM35. Aplikasi ini merupakan gabungan dari
aplikasi yaitu termometer dengan LM35 dan jam digital menggunakan
LCD.
B. Spesifikasi Teknis Dan Karakteristik
Aplikasi pembacaan suhu (monitoring suhu) ini, menggunakan sensor
LM35 yang merupakan sebuah sensor suhu dengan harga yang relatif murah
dan output nya sudah berupa tegangan yang sudah linear.
Aplikasi ini tidak menggunakan RTC (Real Time Clock), sehingga ketika
catu daya atau power supply dimatikan maka nilai dari jam digital tersebut
akan menunjukan pukul “12:0:0″. Oleh karena itu saya tambahkan 3 buah
push button untuk menset nilai tersebut.
C. Daftar Komponen
1. Sistem Minimum Atmega16
 ATmega16
 IC 7805
 Crystal 12MHz
 Kapasitor 22pF (2), 100nF (4), 100uF(2)
 2 Resistor 1KΩ
 4 Switch Button
 1x40 Female Header
 1x40 Male Header
 1N4002
2. LCD 16x2
3. LM35 (Sensor Suhu)
4. Potensiometer 1KΩ
5. Battery 9V
6. Downloader AVR
D. Prinsip Kerja Dan Rangkaian
Cara kerja jam digital yang saya buat adalah menggunakan penampil LCD
2×16. Kemudian terdapat 3 buah pushbutton yaitu SET, UP dan DOWN.
Tombol SET digunakan untuk menset jam, kemudian UP dan DOWN
digunakan untuk menset nilai dari jam. Jika ingin menset menit maka harus
menekan tombol SET kembali, begitu seterusnya untuk menset detik.
Menurut datasheet LM35, untuk kenaikan 1 derajat Celcius akan
mengakibatkan perubahan 10mV terhadap output tegangannya. Dimana saat
suhu 0° Celcius sensor ini mempunyai tegangan offset sebesar 0 V.
Disini saya akan melakukan pembacaan suhu dalam satuan derajat Celcius
dengan range pengukuran 0°-100° Celcius. Sehingga tegangan output dari
LM35 adalah 0-1 V.
Tegangan output tersebut sudah dapat dibaca oleh mikrokontroler melalui
ADC tanpa diperlukan sebuah penguat tegangan. Aplikasi ini telah saya
buat dalam bentuk real (sesungguhnya) dan juga saya simulasikan
menggunakan Proteus. Skematic LM35 yang kemudian ditampilkan pada
LCD dapat dilihat diatas.
Mikrokontroler Atmega16 memiliki fasilitas analog yang sudah build in
didalam chip. Fitur internal ADC inilah yang menjadi salah satu kelebihan
mikrokontroler ini jika dibandingan dengan beberapa jenis mikrokontroler
lainnya.
Atmega memiliki resolusi ADC 10 bit (dapat juga menggunakan ADC 8 bit)
dengan 8 channel (PA0-PA7) input ADC dan mendukung 16 macam
penguat beda. ADC ini bekerja dengan teknik succecive approximation.
Rangkaian internal ADC memiliki catu daya tersendiri yaitu pin AVCC.
Data hasil konversi ADC 10 bit (1024) adalah:
ADC=(Vin*1024)/Vref
Jika ingin menggunakan ADC 8 bit maka tinggal meng-klik saja pada “use
8 bit“. “Volt Ref” merupakan sumber pemilihan tegangan referensi ADC,
sedangkan “Clock” adalah banyaknya frekuensi sampling ADC. Dan “Auto
Trigger Source” merupakan mode ADC yang akan digunakan.
Sedangkan instruksi untuk pembacaan ADC pada program CodeVision
AVR adalah sebagai berikut:
int ADC;//variabel ADC dengan tipe data integer
ADC=read_adc(0);//baca data ADC dari channel 0 (ADC0/PA1)
Berikut skematik dan cara setting di CodeVision AVR :
Gambar 1. Skematik Jam Digital dan Termometer
Gambar 2. Setting Clock dan Timer1
Gambar 3. Setting LCD dan ADC
Listing Program :
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Jam Digital Dan Termometer
Version : v.1
Date : 11/08/2014
Author : Muhammad Kennedy Ginting
Company : Apartment 57
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
unsigned char temp[6];
int detik=0, menit=0, jam=12, indeks=6, adc_suhu;
float suhu;
#include <mega16.h>
#include <stdlib.h>
#include <delay.h>
// Alphanumeric LCD functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <alcd.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;
}
// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value
TCNT1H=0xD23A >> 8;
TCNT1L=0xD23A & 0xff;
// Place your code here
detik++;
adc_suhu=read_adc(0);
}
void jam_digital()
{
if (detik==60)
{
lcd_clear();
detik=0;
menit++;
}
if (menit==60)
{
lcd_clear();
menit=0;
jam++;
}
if (jam==24)
{
lcd_clear();
jam=0;
}
}
void tampil_lcd()
{
lcd_gotoxy(0,0);
lcd_putsf(" Apartment 57");
itoa(jam,temp); //menampilkan JAM di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(2,1); //menampilkan :
lcd_putsf(":");
itoa(menit,temp); //menampilkan MENIT di LCD
lcd_gotoxy(3,1);
lcd_puts(temp);
lcd_gotoxy(5,1); //menampilkan :
lcd_putsf(":");
itoa(detik,temp); //menampilkan DETIK di LCD
lcd_gotoxy(6,1);
lcd_puts(temp);
ftoa(suhu,1,temp); //menampilkan suhu
lcd_gotoxy(9,1);
lcd_puts(temp);
lcd_gotoxy(13,1) ;
lcd_putchar(0xdf);//menampilkan karakter derajat
lcd_gotoxy(14,1) ;
lcd_putsf("C");
}
void set_jam()
{
if (PIND.0==0 && indeks==6)
{
TIMSK=0x00; //MENGHENTIKAN TIMER
delay_ms(300);
indeks=5;
while (PIND.0==1 && indeks==5)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
jam=jam+10;
if (jam>=24)
{
jam=23;
}
}
if (PIND.2==0)
{
delay_ms(300);
jam=jam-10;
if (jam<=9)
{
lcd_clear();
if (jam<0)
{
jam=0;
}
}
}
}
}
if (PIND.0==0 && indeks==5)
{
delay_ms(300);
indeks=4;
while (PIND.0==1 && indeks==4)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
jam=jam+1;
if (jam>=24)
{
jam=23;
}
}
if (PIND.2==0)
{
delay_ms(300);
jam=jam-1;
if (jam<=9)
{
lcd_clear();
if (jam<0)
{
jam=0;
}
}
}
}
}
if (PIND.0==0 && indeks==4)
{
delay_ms(300);
indeks=3;
while (PIND.0==1 && indeks==3)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
menit=menit+10;
if (menit>=60)
{
menit=59;
}
}
if (PIND.2==0)
{
delay_ms(300);
menit=menit-10;
if (menit<=9)
{
lcd_clear();
if (menit<0)
{
menit=0;
}
}
}
}
}
if (PIND.0==0 && indeks==3)
{
delay_ms(300);
indeks=2;
while (PIND.0==1 && indeks==2)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
menit=menit+1;
if (menit>=60)
{
menit=59;
}
}
if (PIND.2==0)
{
delay_ms(300);
menit=menit-1;
if (menit<=9)
{
lcd_clear();
if (menit<0)
{
menit=0;
}
}
}
}
}
if (PIND.0==0 && indeks==2)
{
delay_ms(300);
indeks=1;
while (PIND.0==1 && indeks==1)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
detik=detik+1;
if (detik>=60)
{
detik=59;
}
}
if (PIND.2==0)
{
delay_ms(300);
detik=detik-1;
if (detik<=9)
{
lcd_clear();
if (detik<0)
{
detik=0;
}
}
}
}
}
if (PIND.0==0 && indeks==1)
{
delay_ms(300);
indeks=0;
while (PIND.0==1 && indeks==0)
{
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
detik=detik+1;
if (detik>=60)
{
detik=59;
}
}
if (PIND.2==0)
{
delay_ms(300);
detik=detik-1;
if (detik<=9)
{
lcd_clear();
if (detik<0)
{
detik=0;
}
}
}
}
indeks=6;
TIMSK=0x04; //MEMULAI LAGI TIMER
delay_ms(450);
}
}
void baca_suhu()
{
suhu=(float)adc_suhu*500/1023;//perhitungan suhu menggunakan
LM35
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// 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=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
PORTC=0x00;
DDRC=0x00;
// Port D 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
PORTD=0xff;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 750,000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
baca_suhu();
jam_digital();
tampil_lcd();
set_jam();
}
}
Selamat Mencoba 
Good Luck !!!

Tutorial membuat project termometer dan jam digital menggunakan codevision avr by muhammad kennedy ginting

  • 1.
    Tutorial Membuat ProjectTermometer Dan Jam Digital Menggunakan Codevision AVR by Muhammad Kennedy Ginting A. Deskripsi Umum Aplikasi ini dapat menampilkan suhu dan jam digital. Dimana sensor suhu yang digunakan adalah LM35. Aplikasi ini merupakan gabungan dari aplikasi yaitu termometer dengan LM35 dan jam digital menggunakan LCD. B. Spesifikasi Teknis Dan Karakteristik Aplikasi pembacaan suhu (monitoring suhu) ini, menggunakan sensor LM35 yang merupakan sebuah sensor suhu dengan harga yang relatif murah dan output nya sudah berupa tegangan yang sudah linear. Aplikasi ini tidak menggunakan RTC (Real Time Clock), sehingga ketika catu daya atau power supply dimatikan maka nilai dari jam digital tersebut akan menunjukan pukul “12:0:0″. Oleh karena itu saya tambahkan 3 buah push button untuk menset nilai tersebut. C. Daftar Komponen 1. Sistem Minimum Atmega16  ATmega16  IC 7805  Crystal 12MHz  Kapasitor 22pF (2), 100nF (4), 100uF(2)  2 Resistor 1KΩ  4 Switch Button  1x40 Female Header  1x40 Male Header  1N4002 2. LCD 16x2 3. LM35 (Sensor Suhu) 4. Potensiometer 1KΩ 5. Battery 9V 6. Downloader AVR D. Prinsip Kerja Dan Rangkaian Cara kerja jam digital yang saya buat adalah menggunakan penampil LCD 2×16. Kemudian terdapat 3 buah pushbutton yaitu SET, UP dan DOWN. Tombol SET digunakan untuk menset jam, kemudian UP dan DOWN digunakan untuk menset nilai dari jam. Jika ingin menset menit maka harus menekan tombol SET kembali, begitu seterusnya untuk menset detik.
  • 2.
    Menurut datasheet LM35,untuk kenaikan 1 derajat Celcius akan mengakibatkan perubahan 10mV terhadap output tegangannya. Dimana saat suhu 0° Celcius sensor ini mempunyai tegangan offset sebesar 0 V. Disini saya akan melakukan pembacaan suhu dalam satuan derajat Celcius dengan range pengukuran 0°-100° Celcius. Sehingga tegangan output dari LM35 adalah 0-1 V. Tegangan output tersebut sudah dapat dibaca oleh mikrokontroler melalui ADC tanpa diperlukan sebuah penguat tegangan. Aplikasi ini telah saya buat dalam bentuk real (sesungguhnya) dan juga saya simulasikan menggunakan Proteus. Skematic LM35 yang kemudian ditampilkan pada LCD dapat dilihat diatas. Mikrokontroler Atmega16 memiliki fasilitas analog yang sudah build in didalam chip. Fitur internal ADC inilah yang menjadi salah satu kelebihan mikrokontroler ini jika dibandingan dengan beberapa jenis mikrokontroler lainnya. Atmega memiliki resolusi ADC 10 bit (dapat juga menggunakan ADC 8 bit) dengan 8 channel (PA0-PA7) input ADC dan mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik succecive approximation. Rangkaian internal ADC memiliki catu daya tersendiri yaitu pin AVCC. Data hasil konversi ADC 10 bit (1024) adalah: ADC=(Vin*1024)/Vref Jika ingin menggunakan ADC 8 bit maka tinggal meng-klik saja pada “use 8 bit“. “Volt Ref” merupakan sumber pemilihan tegangan referensi ADC, sedangkan “Clock” adalah banyaknya frekuensi sampling ADC. Dan “Auto Trigger Source” merupakan mode ADC yang akan digunakan. Sedangkan instruksi untuk pembacaan ADC pada program CodeVision AVR adalah sebagai berikut: int ADC;//variabel ADC dengan tipe data integer ADC=read_adc(0);//baca data ADC dari channel 0 (ADC0/PA1)
  • 3.
    Berikut skematik dancara setting di CodeVision AVR : Gambar 1. Skematik Jam Digital dan Termometer Gambar 2. Setting Clock dan Timer1
  • 4.
    Gambar 3. SettingLCD dan ADC Listing Program : /***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Jam Digital Dan Termometer Version : v.1 Date : 11/08/2014 Author : Muhammad Kennedy Ginting Company : Apartment 57 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/
  • 5.
    unsigned char temp[6]; intdetik=0, menit=0, jam=12, indeks=6, adc_suhu; float suhu; #include <mega16.h> #include <stdlib.h> #include <delay.h> // Alphanumeric LCD functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <alcd.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; } // Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer1 value TCNT1H=0xD23A >> 8; TCNT1L=0xD23A & 0xff; // Place your code here detik++; adc_suhu=read_adc(0); }
  • 6.
    void jam_digital() { if (detik==60) { lcd_clear(); detik=0; menit++; } if(menit==60) { lcd_clear(); menit=0; jam++; } if (jam==24) { lcd_clear(); jam=0; } } void tampil_lcd() { lcd_gotoxy(0,0); lcd_putsf(" Apartment 57"); itoa(jam,temp); //menampilkan JAM di LCD lcd_gotoxy(0,1); lcd_puts(temp); lcd_gotoxy(2,1); //menampilkan : lcd_putsf(":"); itoa(menit,temp); //menampilkan MENIT di LCD lcd_gotoxy(3,1); lcd_puts(temp); lcd_gotoxy(5,1); //menampilkan : lcd_putsf(":");
  • 7.
    itoa(detik,temp); //menampilkan DETIKdi LCD lcd_gotoxy(6,1); lcd_puts(temp); ftoa(suhu,1,temp); //menampilkan suhu lcd_gotoxy(9,1); lcd_puts(temp); lcd_gotoxy(13,1) ; lcd_putchar(0xdf);//menampilkan karakter derajat lcd_gotoxy(14,1) ; lcd_putsf("C"); } void set_jam() { if (PIND.0==0 && indeks==6) { TIMSK=0x00; //MENGHENTIKAN TIMER delay_ms(300); indeks=5; while (PIND.0==1 && indeks==5) { tampil_lcd(); if (PIND.1==0) { delay_ms(300); jam=jam+10; if (jam>=24) { jam=23; } } if (PIND.2==0) { delay_ms(300); jam=jam-10; if (jam<=9) {
  • 8.
    lcd_clear(); if (jam<0) { jam=0; } } } } } if (PIND.0==0&& indeks==5) { delay_ms(300); indeks=4; while (PIND.0==1 && indeks==4) { tampil_lcd(); if (PIND.1==0) { delay_ms(300); jam=jam+1; if (jam>=24) { jam=23; } } if (PIND.2==0) { delay_ms(300); jam=jam-1; if (jam<=9) { lcd_clear(); if (jam<0) { jam=0; } } } }
  • 9.
    } if (PIND.0==0 &&indeks==4) { delay_ms(300); indeks=3; while (PIND.0==1 && indeks==3) { tampil_lcd(); if (PIND.1==0) { delay_ms(300); menit=menit+10; if (menit>=60) { menit=59; } } if (PIND.2==0) { delay_ms(300); menit=menit-10; if (menit<=9) { lcd_clear(); if (menit<0) { menit=0; } } } } } if (PIND.0==0 && indeks==3) { delay_ms(300); indeks=2; while (PIND.0==1 && indeks==2) {
  • 10.
    tampil_lcd(); if (PIND.1==0) { delay_ms(300); menit=menit+1; if (menit>=60) { menit=59; } } if(PIND.2==0) { delay_ms(300); menit=menit-1; if (menit<=9) { lcd_clear(); if (menit<0) { menit=0; } } } } } if (PIND.0==0 && indeks==2) { delay_ms(300); indeks=1; while (PIND.0==1 && indeks==1) { tampil_lcd(); if (PIND.1==0) { delay_ms(300); detik=detik+1; if (detik>=60) { detik=59;
  • 11.
    } } if (PIND.2==0) { delay_ms(300); detik=detik-1; if (detik<=9) { lcd_clear(); if(detik<0) { detik=0; } } } } } if (PIND.0==0 && indeks==1) { delay_ms(300); indeks=0; while (PIND.0==1 && indeks==0) { tampil_lcd(); if (PIND.1==0) { delay_ms(300); detik=detik+1; if (detik>=60) { detik=59; } } if (PIND.2==0) { delay_ms(300); detik=detik-1; if (detik<=9)
  • 12.
    { lcd_clear(); if (detik<0) { detik=0; } } } } indeks=6; TIMSK=0x04; //MEMULAILAGI TIMER delay_ms(450); } } void baca_suhu() { suhu=(float)adc_suhu*500/1023;//perhitungan suhu menggunakan LM35 } // Declare your global variables here void main(void) { // Declare your local variables here // 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
  • 13.
    // State7=T State6=TState5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C 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 PORTC=0x00; DDRC=0x00; // Port D 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 PORTD=0xff; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11,719 kHz // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off
  • 14.
    // Compare BMatch Interrupt: Off TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xD2; TCNT1L=0x3A; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
  • 15.
    // ADC initialization //ADC Clock frequency: 750,000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: ADC Stopped ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { // Place your code here baca_suhu(); jam_digital(); tampil_lcd(); set_jam(); } }
  • 16.