Seperti janji
saya dulu untuk sharing cara membuat jam digital menggunakan microcontroller
dengan tampilannya adalah seven segment. Jam digital yang ane buat menggunakan
microcontroller AVR ATmega8, dengan tampilan seven segment common anoda dengan
driver untuk seven segmentnya menggunakan IC HD74LS47. Jam digital yang ane
buat tidak dirangkai dalam pcb matrik
tetapi pada projectboard dengan kabel jumper sebagai penghubung antar kaki
komponen dengan alas an supaya ada kesan Artistik. He..he..heee
INFO IC (Fungsi HD74LS47)
Dekoder BCD ke
seven segment digunakan untuk menerima masukan BCD 4-bit dan memberikan
keluaran yang melewatkan arus melalui segmen untuk menampilkan angka desimal.
Jenis dekoder BCD ke seven segmentdekoder yang berfungsi untuk menyalakan seven
segment mode common anoda dan dekoder yang berfungsi untuk menyalakan seven
segment mode common katoda. ada dua macam yaitu IC 74LS47
merupakan dekoder BCD ke seven segment yang berfungsi untuk menyalakan sevent
segment mode common anode. Berikut Gambar dan konfigurasi kaki-kaki IC yang digunakan (Atmega8,HD74LS47).
HD74LS47
7 SEGMENT
Skema rangkaian (proteus) :
klik dan save gambar untuk jelasnya.
dah untuk program dibuat menggunakan CodeVisionAVR 4.17 berikut ini programnya :
/*****************************************************
Chip type : ATmega8
Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
PROGRAMMER By :
KABUL BUDIONO, cST
ELECTRICAL ENGINERING
SRIWIJAYA UNIVERSITY
*****************************************************/
#include
#include
//variabel global
bit fl_timer;
unsigned int cnt=0, cnt_jam=0, kali=0;
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xEA;
TCNT1L=0xE8;
// Place your code here
if(fl_timer==1)
{
PORTB.4=1;
fl_timer=0;
}
else
{
PORTB.4=0;
fl_timer=1;
}
kali++;
switch (kali)
{case 120: //...1 menit
// if(kali==10)
{
cnt=cnt+1;
switch (cnt)
{
case 0:PORTD=0x00;break;case 1:PORTD=0x01;break;case 2:PORTD=0x02;break;case 3:PORTD=0x03;break;case 4:PORTD=0x04;break;
case 5:PORTD=0x05;break;case 6:PORTD=0x06;break;case 7:PORTD=0x07;break;case 8:PORTD=0x08;break;case 9:PORTD=0x09;break;
case 10:PORTD=0x10;break;case 11:PORTD=0x11;break;case 12:PORTD=0x12;break;case 13:PORTD=0x13;break;case 14:PORTD=0x14;break;
case 15:PORTD=0x15;break;case 16:PORTD=0x16;break;case 17:PORTD=0x17;break;case 18:PORTD=0x18;break;case 19:PORTD=0x19;break;
case 20:PORTD=0x20;break;case 21:PORTD=0x21;break;case 22:PORTD=0x22;break;case 23:PORTD=0x23;break;case 24:PORTD=0x24;break;
case 25:PORTD=0x25;break;case 26:PORTD=0x26;break;case 27:PORTD=0x27;break;case 28:PORTD=0x28;break;case 29:PORTD=0x29;break;
case 30:PORTD=0x30;break;case 31:PORTD=0x31;break;case 32:PORTD=0x32;break;case 33:PORTD=0x33;break;case 34:PORTD=0x34;break;
case 35:PORTD=0x35;break;case 36:PORTD=0x36;break;case 37:PORTD=0x37;break;case 38:PORTD=0x38;break;case 39:PORTD=0x39;break;
case 40:PORTD=0x40;break;case 41:PORTD=0x41;break;case 42:PORTD=0x42;break;case 43:PORTD=0x43;break;case 44:PORTD=0x44;break;
case 45:PORTD=0x45;break;case 46:PORTD=0x46;break;case 47:PORTD=0x47;break;case 48:PORTD=0x48;break;case 49:PORTD=0x49;break;
case 50:PORTD=0x50;break;case 51:PORTD=0x51;break;case 52:PORTD=0x52;break;case 53:PORTD=0x53;break;case 54:PORTD=0x54;break;
case 55:PORTD=0x55;break;case 56:PORTD=0x56;break;case 57:PORTD=0x57;break;case 58:PORTD=0x58;break;case 59:PORTD=0x59;break;
case 60:
PORTD=0x00;
cnt=0;
cnt_jam=cnt_jam+1;;
switch (cnt_jam)
{
case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break;
}
break;
}
}
kali=0;break; }
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State6=P State5=P State4=P State3=0 State2=0 State1=0 State0=0
PORTC=0x70;
DDRC=0x0F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 10.800 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xEA;
TCNT1L=0xE8;
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: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
if(PINC.4==0)
{
cnt=cnt+1;
delay_ms(200);
switch (cnt)
{
case 0:PORTD=0x00;break;case 1:PORTD=0x01;break;case 2:PORTD=0x02;break;case 3:PORTD=0x03;break;case 4:PORTD=0x04;break;
case 5:PORTD=0x05;break;case 6:PORTD=0x06;break;case 7:PORTD=0x07;break;case 8:PORTD=0x08;break;case 9:PORTD=0x09;break;
case 10:PORTD=0x10;break;case 11:PORTD=0x11;break;case 12:PORTD=0x12;break;case 13:PORTD=0x13;break;case 14:PORTD=0x14;break;
case 15:PORTD=0x15;break;case 16:PORTD=0x16;break;case 17:PORTD=0x17;break;case 18:PORTD=0x18;break;case 19:PORTD=0x19;break;
case 20:PORTD=0x20;break;case 21:PORTD=0x21;break;case 22:PORTD=0x22;break;case 23:PORTD=0x23;break;case 24:PORTD=0x24;break;
case 25:PORTD=0x25;break;case 26:PORTD=0x26;break;case 27:PORTD=0x27;break;case 28:PORTD=0x28;break;case 29:PORTD=0x29;break;
case 30:PORTD=0x30;break;case 31:PORTD=0x31;break;case 32:PORTD=0x32;break;case 33:PORTD=0x33;break;case 34:PORTD=0x34;break;
case 35:PORTD=0x35;break;case 36:PORTD=0x36;break;case 37:PORTD=0x37;break;case 38:PORTD=0x38;break;case 39:PORTD=0x39;break;
case 40:PORTD=0x40;break;case 41:PORTD=0x41;break;case 42:PORTD=0x42;break;case 43:PORTD=0x43;break;case 44:PORTD=0x44;break;
case 45:PORTD=0x45;break;case 46:PORTD=0x46;break;case 47:PORTD=0x47;break;case 48:PORTD=0x48;break;case 49:PORTD=0x49;break;
case 50:PORTD=0x50;break;case 51:PORTD=0x51;break;case 52:PORTD=0x52;break;case 53:PORTD=0x53;break;case 54:PORTD=0x54;break;
case 55:PORTD=0x55;break;case 56:PORTD=0x56;break;case 57:PORTD=0x57;break;case 58:PORTD=0x58;break;case 59:PORTD=0x59;break;
case 60:PORTD=0x00;cnt=0;break;
}
}
if(PINC.5==0)
{
cnt_jam=cnt_jam+1;
delay_ms(200);
switch (cnt_jam)
{
case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break;
}
}
};
}
*********************************************************************************
Terakhir ini adalah digital clock yang pernah ane buat :
dan ini yang dah jalan & ane pasang di dinding depan meja belajar.., lumayan ada jam hasil karya sendiri.
dah untuk program dibuat menggunakan CodeVisionAVR 4.17 berikut ini programnya :
/*****************************************************
Chip type : ATmega8
Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
PROGRAMMER By :
KABUL BUDIONO, cST
ELECTRICAL ENGINERING
SRIWIJAYA UNIVERSITY
*****************************************************/
#include
#include
//variabel global
bit fl_timer;
unsigned int cnt=0, cnt_jam=0, kali=0;
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xEA;
TCNT1L=0xE8;
// Place your code here
if(fl_timer==1)
{
PORTB.4=1;
fl_timer=0;
}
else
{
PORTB.4=0;
fl_timer=1;
}
kali++;
switch (kali)
{case 120: //...1 menit
// if(kali==10)
{
cnt=cnt+1;
switch (cnt)
{
case 0:PORTD=0x00;break;case 1:PORTD=0x01;break;case 2:PORTD=0x02;break;case 3:PORTD=0x03;break;case 4:PORTD=0x04;break;
case 5:PORTD=0x05;break;case 6:PORTD=0x06;break;case 7:PORTD=0x07;break;case 8:PORTD=0x08;break;case 9:PORTD=0x09;break;
case 10:PORTD=0x10;break;case 11:PORTD=0x11;break;case 12:PORTD=0x12;break;case 13:PORTD=0x13;break;case 14:PORTD=0x14;break;
case 15:PORTD=0x15;break;case 16:PORTD=0x16;break;case 17:PORTD=0x17;break;case 18:PORTD=0x18;break;case 19:PORTD=0x19;break;
case 20:PORTD=0x20;break;case 21:PORTD=0x21;break;case 22:PORTD=0x22;break;case 23:PORTD=0x23;break;case 24:PORTD=0x24;break;
case 25:PORTD=0x25;break;case 26:PORTD=0x26;break;case 27:PORTD=0x27;break;case 28:PORTD=0x28;break;case 29:PORTD=0x29;break;
case 30:PORTD=0x30;break;case 31:PORTD=0x31;break;case 32:PORTD=0x32;break;case 33:PORTD=0x33;break;case 34:PORTD=0x34;break;
case 35:PORTD=0x35;break;case 36:PORTD=0x36;break;case 37:PORTD=0x37;break;case 38:PORTD=0x38;break;case 39:PORTD=0x39;break;
case 40:PORTD=0x40;break;case 41:PORTD=0x41;break;case 42:PORTD=0x42;break;case 43:PORTD=0x43;break;case 44:PORTD=0x44;break;
case 45:PORTD=0x45;break;case 46:PORTD=0x46;break;case 47:PORTD=0x47;break;case 48:PORTD=0x48;break;case 49:PORTD=0x49;break;
case 50:PORTD=0x50;break;case 51:PORTD=0x51;break;case 52:PORTD=0x52;break;case 53:PORTD=0x53;break;case 54:PORTD=0x54;break;
case 55:PORTD=0x55;break;case 56:PORTD=0x56;break;case 57:PORTD=0x57;break;case 58:PORTD=0x58;break;case 59:PORTD=0x59;break;
case 60:
PORTD=0x00;
cnt=0;
cnt_jam=cnt_jam+1;;
switch (cnt_jam)
{
case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break;
}
break;
}
}
kali=0;break; }
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State6=P State5=P State4=P State3=0 State2=0 State1=0 State0=0
PORTC=0x70;
DDRC=0x0F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 10.800 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xEA;
TCNT1L=0xE8;
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: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
if(PINC.4==0)
{
cnt=cnt+1;
delay_ms(200);
switch (cnt)
{
case 0:PORTD=0x00;break;case 1:PORTD=0x01;break;case 2:PORTD=0x02;break;case 3:PORTD=0x03;break;case 4:PORTD=0x04;break;
case 5:PORTD=0x05;break;case 6:PORTD=0x06;break;case 7:PORTD=0x07;break;case 8:PORTD=0x08;break;case 9:PORTD=0x09;break;
case 10:PORTD=0x10;break;case 11:PORTD=0x11;break;case 12:PORTD=0x12;break;case 13:PORTD=0x13;break;case 14:PORTD=0x14;break;
case 15:PORTD=0x15;break;case 16:PORTD=0x16;break;case 17:PORTD=0x17;break;case 18:PORTD=0x18;break;case 19:PORTD=0x19;break;
case 20:PORTD=0x20;break;case 21:PORTD=0x21;break;case 22:PORTD=0x22;break;case 23:PORTD=0x23;break;case 24:PORTD=0x24;break;
case 25:PORTD=0x25;break;case 26:PORTD=0x26;break;case 27:PORTD=0x27;break;case 28:PORTD=0x28;break;case 29:PORTD=0x29;break;
case 30:PORTD=0x30;break;case 31:PORTD=0x31;break;case 32:PORTD=0x32;break;case 33:PORTD=0x33;break;case 34:PORTD=0x34;break;
case 35:PORTD=0x35;break;case 36:PORTD=0x36;break;case 37:PORTD=0x37;break;case 38:PORTD=0x38;break;case 39:PORTD=0x39;break;
case 40:PORTD=0x40;break;case 41:PORTD=0x41;break;case 42:PORTD=0x42;break;case 43:PORTD=0x43;break;case 44:PORTD=0x44;break;
case 45:PORTD=0x45;break;case 46:PORTD=0x46;break;case 47:PORTD=0x47;break;case 48:PORTD=0x48;break;case 49:PORTD=0x49;break;
case 50:PORTD=0x50;break;case 51:PORTD=0x51;break;case 52:PORTD=0x52;break;case 53:PORTD=0x53;break;case 54:PORTD=0x54;break;
case 55:PORTD=0x55;break;case 56:PORTD=0x56;break;case 57:PORTD=0x57;break;case 58:PORTD=0x58;break;case 59:PORTD=0x59;break;
case 60:PORTD=0x00;cnt=0;break;
}
}
if(PINC.5==0)
{
cnt_jam=cnt_jam+1;
delay_ms(200);
switch (cnt_jam)
{
case 0:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 1:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 2:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 3:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 4:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 5:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 6:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 7:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 8:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 9:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 10:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 11:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 12:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 13:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 14:PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 15:PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 16:PORTC.0=0;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 17:PORTC.0=1;PORTC.1=1;PORTC.2=1;PORTC.3=0;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 18:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 19:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;break;
case 20:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 21:PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 22:PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 23:PORTC.0=1;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;break;
case 24:PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;cnt_jam=0;break;
}
}
};
}
*********************************************************************************
Terakhir ini adalah digital clock yang pernah ane buat :
dan ini yang dah jalan & ane pasang di dinding depan meja belajar.., lumayan ada jam hasil karya sendiri.
Demikian sharing pagi ini semoga bermanfaat..,
Jangan lupa komentar & Sarannya yang membangun...n_n
sumber : qabullab's
wah ini yang saya cari, mkasih mas ilmunya..,he2X
ReplyDeletewah keren kak.,tak coba dulu ya..,
ReplyDeleteijin sedot gan..,
ReplyDeletecoding pakai BASCOM AVR gimana mas?
ReplyDeleteThanks atas ilmunya, sangat bermanfaat.
ReplyDeleteilman nafian,,ilmu yg bermanfaat.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteapa udah benar mas tulisan diatas
ReplyDelete#include
#include
apa tdk tambahan lagi mohon pencerahannya mas
saya simulasikan di proteus tampilan segment nggk muncul angka semua.
ReplyDelete