Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Tutorial Membuat Project Termometer Dan Jam Digital Menggunakan
Codevision AVR by Muhammad Kennedy Ginting
A. Deskripsi Um...
Menurut datasheet LM35, untuk kenaikan 1 derajat Celcius akan
mengakibatkan perubahan 10mV terhadap output tegangannya. Di...
Berikut skematik dan cara setting di CodeVision AVR :
Gambar 1. Skematik Jam Digital dan Termometer
Gambar 2. Setting Cloc...
Gambar 3. Setting LCD dan ADC
Listing Program :
/*****************************************************
This program was pr...
unsigned char temp[6];
int detik=0, menit=0, jam=12, indeks=6, adc_suhu;
float suhu;
#include <mega16.h>
#include <stdlib....
void jam_digital()
{
if (detik==60)
{
lcd_clear();
detik=0;
menit++;
}
if (menit==60)
{
lcd_clear();
menit=0;
jam++;
}
if ...
itoa(detik,temp); //menampilkan DETIK di LCD
lcd_gotoxy(6,1);
lcd_puts(temp);
ftoa(suhu,1,temp); //menampilkan suhu
lcd_go...
lcd_clear();
if (jam<0)
{
jam=0;
}
}
}
}
}
if (PIND.0==0 && indeks==5)
{
delay_ms(300);
indeks=4;
while (PIND.0==1 && inde...
}
if (PIND.0==0 && indeks==4)
{
delay_ms(300);
indeks=3;
while (PIND.0==1 && indeks==3)
{
tampil_lcd();
if (PIND.1==0)
{
d...
tampil_lcd();
if (PIND.1==0)
{
delay_ms(300);
menit=menit+1;
if (menit>=60)
{
menit=59;
}
}
if (PIND.2==0)
{
delay_ms(300)...
}
}
if (PIND.2==0)
{
delay_ms(300);
detik=detik-1;
if (detik<=9)
{
lcd_clear();
if (detik<0)
{
detik=0;
}
}
}
}
}
if (PIND...
{
lcd_clear();
if (detik<0)
{
detik=0;
}
}
}
}
indeks=6;
TIMSK=0x04; //MEMULAI LAGI TIMER
delay_ms(450);
}
}
void baca_suh...
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization...
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;...
// ADC initialization
// ADC Clock frequency: 750,000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: A...
Selamat Mencoba 
Good Luck !!!
Nächste SlideShare
Wird geladen in …5
×

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

7.459 Aufrufe

Veröffentlicht am

Tutorial membuat project termometer dan jam digital menggunakan codevision avr by muhammad kennedy ginting.
Disini akan juga diberikan l

Veröffentlicht in: Ingenieurwesen
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/wbjtw ◀ ◀ ◀ ◀
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • kalo push button di gunakan untuk menset parameter suhu nya gimana gan caranya
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

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

  1. 1. 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.
  2. 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. 3. Berikut skematik dan cara setting di CodeVision AVR : Gambar 1. Skematik Jam Digital dan Termometer Gambar 2. Setting Clock dan Timer1
  4. 4. 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 *****************************************************/
  5. 5. 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); }
  6. 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. 7. 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) {
  8. 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. 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. 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. 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. 12. { 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
  13. 13. // 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
  14. 14. // 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;
  15. 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. 16. Selamat Mencoba  Good Luck !!!

×