Anda di halaman 1dari 7

Materi         : Rangkaia Jam Digital dengan Codevision AVR dan 7                                    (Seven) Segment    

Komponen yang dibutuhkan :

1. ATMEGA8535 : Adalah salah satu IC yang dapat di program berulang kali, baik ditulis
maupun di hapus. IC ini biasa digunakan sebagai pengontrol otomatis dan manual pada
perangkat elektronika. Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan
terutama dalam pengontrolan robot. Seiring dengan perkembangan elektronika,
mikrokontroler di buat semakin kompak dengan menggunakan bahasa pemrogaman yang
ikut berubah. Salah satunya adalah mikrokontroler AVR (Alf  and Vegard’s Risc
processor) ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction  Set
Computing). Mikrokontroler tersebut memiliki beberapa kemampuan diantaranya :
1. Sistem mikrokontroler 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.
2. Memiliki memori flash 8 KB, SRAM sebesar 512 byte dan EEPROM
(Electrically Erasable Programmable Read Only Memory) sebesar 512 byte.
3. Memiliki ADC (Pengubah analog-ke-digital) internal dengan ketelitian 10 bit
sebanyak 8 saluran.
4. Memiliki PWM (Pulse Width Modulation) internal sebanyak 4 saluran.
5. Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps.
6. Enam pilihan mode sleep, untuk menghemat penggunaan daya listrik.
2. 7 Segment (CA) : Adalah salah satu perangkat layar untuk menampilkan sistem angka
desimal yang merupakan alternatif dari layar dot-matrix. 7 segment ini seringkali
digunakan pada jam digital, meteran elektronik, dan perangkat elektronik lainnya yang

menampilkan informasi numerik.


3. IC 74247 : Adalah sebuah IC yang berfungsi sebagai pencacah BCD (binary coded
decimal) yang kemudian hasil dari cacahan di tampilkan pada 7 segment. IC ini memiliki
beberapa gerbang NAND. IC 74LS247 mempunyai 16 pin sebagaimana diperlihatkan

pada gambar di bawah ini.


4. Tombol Push Button : Adalah komponen kontrol yang sangat berguna, alat ini biasa kita
jumpai pada panel listrik dan sebagainya. Fungsi tombol push button adalah untuk
mengontrol kondisi on atau off rangkaian listrik. Prinsip kerja push button ialah kerja
sesaat yaitu tombol akan berfungsi apabila tombol kita tekan.

5. LED green : Light Emitting Diode adalah suatu lampu indikator dalam perangkat
elektronika yang biasanya memiliki fungsi untuk menunjukkan status dari perangkat

elektronika tersebut.
Cara perangkaian komponen : 

1. Susun enam buah 7 segment dan enam buah IC 74247 seperti pada gambar.
2. Sambungkan 7 pin (a,b,c,d,e,f,g) dari 7 segment ke pin (13,12,11,10,9,15,14) dari IC
74247 sesuai gambar rangkaian.
3. Sambungkan tiap-tiap pin (7,1,2,6) dari IC 74247 ke pin-pin IC ATMEGA8535.
4. Untuk pin (7,1,2,6) IC 74247 yang pertama sambungkan ke pin
(5,6,7,8) IC ATMEGA8535.
5. Untuk pin (7,1,2,6) IC 74247 yang kedua sambungkan ke pin
(1,2,3,4) IC ATMEGA8535.
6. Untuk pin (7,1,2,6) IC 74247 yang ketiga sambungkan ke pin
(36,35,34,33) IC ATMEGA8535.
7. Untuk pin (7,1,2,6) IC 74247 yang kempat sambungkan ke pin
(40,39,38,37) IC ATMEGA8535.
8. Untuk pin (7,1,2,6) IC 74247 yang kelima sambungkan ke pin
(26,27,28,29) IC ATMEGA8535.
9. Untuk pin (7,1,2,6) IC 74247 yang keenam sambungkan ke pin
(22,23,24,25) IC ATMEGA8535.
10. Sambungkan pin (14) IC ATMEGA8535 ke LED green.
11. Sambungkan pin (16,17,18,11,19,21) IC ATMEGA8535 ke push button.
Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 4,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>
unsigned int a,detik,menit,jam,step=1;

interrupt [TIM0_COMP] void timer0_comp_isr(void)


{
++a;
if(a>=14)
{
a=0;
++detik;
PORTD.0=~PORTD.0;
if(detik==10||detik==26||detik==42||detik==58||detik==74)
{
detik&=0xF0;
detik+=16;
}
if(detik==90)
{
detik=0;
++menit;
}

if(menit==10||menit==26||menit==42||menit==58||menit==74)
{
menit&=0xF0;
menit+=16;
}
if(menit==90)
{
menit=0;
++jam;
}
if(jam==10||jam==26)
{
jam&=0xF0;
jam+=16;
}
if(jam==36)
{
jam=0;

}
PORTC=detik;
PORTA=menit;
PORTB=jam;

}
}

void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0xFF;
DDRD=0x01;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: CTC top=OCR0
// OC0 output: Disconnected
TCCR0=0x0D;
TCNT0=0x00;
OCR0=255;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x00;

// Global enable interrupts


#asm(“sei”)

while (1)
{
// Place your code here
if(step==1)
{
if(PIND.7==0)
{
jam+=16;
}
if(PIND.6==0)
{
++jam;
}
if(PIND.5==0)
{
menit+=16;
}
if(PIND.4==0)
{
++menit;
}
if(PIND.3==0)
{
step=2;
}
PORTC=detik;
PORTA=menit;
PORTB=jam;
delay_ms(200);
}

if(step==2)
{
TIMSK=0x02; //menjalankan Jam digital
if(PIND.2==0)
{
step=1;
}
TIMSK=0x00; //menghentikan Jam digital
}
};
}