Hello sahabat Anak Kendali
pada kesempatan kali ini, saya akan mencoba menulis tentang tutorial Mikrokontroller Atmega dasar
yaitu masih beruhubungan dengan IO digital. yang mana pada kesempatan kali ini saya akan mengakses empat buah seven segmen dengan Atmega menggunakan CVAVR
Belajar Input Output Analog Digital dan contoh Program Arduino
seven segmen memiliki sepuluh buah kaki yaitu :
dua buah VCC, dot,a,b,c,d,e,f,g. untuk melihat letak kakinya silahkan lihat pada gambar dibawah ini !
pada seven segmen prinsip kerjanya dibagi menjadi 2, yaitu common anode dan common catodhe
common cathode dimana sumber utamanya adalah GND dan dari masing masing led nya akan dinylakan dengan logika 1 atau VCC/5V
sedangkan untuk common anode sumber utamanya adalah VCC sehingga untuk meyalakan dari tiap masing – masing led, kita menggunakan GND atau logika 0.
seven segmen dirangkai parallel untuk input tiap kaki a sampai g, lalu powernya memiliki input sendiri, dan kita menggunakan fungsi pewaktuan untuk mengakali kerja seven segmen, karena pada dasarnya program hanya bisa menjalankan satu eksekusi dalam satu waktu. dengan waktu yang tepat, seven segmen yang di parallel bisa menampilkan angka yang berbeda dan waktu yang sama terlihat oleh kita.
pada percobaan yang saya lakukan. saya menggunakan seven segmen jenis common anode. dan ini adalah schematic yang saya gunakan untuk di akses dengan mikrokontroller atmega
jika sobat menggunakan rangkaian persis dengan skematik buatan saya, maka sobat bisa langsung gunakan program yang saya buat berikut ini :
/*****************************************************
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 :
Version :
Date : 1/21/2018
Author : Chaerul Anam
Company : Sixty Light
Comments:
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
// Declare your global variables here
char i[10]={0x88, 0xF9, 0x4C, 0x68, 0x39, 0x2A, 0x0A, 0xF8, 0x08, 0x28};
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=Out Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=0 State5=0 State4=0 State3=0 State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x78;
// 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=0xFF;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=T State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xF7;
// 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=0x00;
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: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
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=0x00;
// 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 disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
// Place your code here
if (PINB.7 == 0){
PORTA=0b00111111;
PORTC=i[1];
delay_ms(1);
PORTA=0b01011111;
PORTC=i[2];
delay_ms(1);
PORTA=0b01101111;
PORTC=i[3];
delay_ms(1);
PORTA=0b01110111;
PORTC=i[4];
delay_ms(1);
}
else if (PINB.6 == 0){
PORTA=0b00111111;
PORTC=i[5];
delay_ms(1);
PORTA=0b01011111;
PORTC=i[6];
delay_ms(1);
PORTA=0b01101111;
PORTC=i[7];
delay_ms(1);
PORTA=0b01110111;
PORTC=i[8];
delay_ms(1);
}
else if (PINB.7==1 && PINB.6==1){
PORTA=0b00111111;
PORTC=i[1];
delay_ms(1000);
PORTA=0b01011111;
PORTC=i[2];
delay_ms(1000);
PORTA=0b01101111;
PORTC=i[3];
delay_ms(1000);
PORTA=0b01110111;
PORTC=i[4];
delay_ms(1000);
PORTA=0b00111111;
PORTC=i[5];
delay_ms(1000);
PORTA=0b01011111;
PORTC=i[6];
delay_ms(1000);
PORTA=0b01101111;
PORTC=i[7];
delay_ms(1000);
PORTA=0b01110111;
PORTC=i[8];
delay_ms(1000);
}
}
}
Ada sketch untuk jamnya tidak
untuk jamnya belum di buat
Adakah sketch arduino dengan inputan keypad dan output sevensegment 2 digit & 4 digit, krn msh newby sy kesulitan untuk mengakses 2 & 4 digit. Trims master
siap,, ditunggu akan saya buatkan tutorialnya 😀