Jumat, 16 Oktober 2009

Tampilan 7Segment 4 digit

Huh,, pada tutorial kali ini kita saya akan membahas bagaimana caranya menggunakan tampilan display 7segment 4 digit menggunakan mikrokontroller ATmega8535 dengan Bahasa C yang paling sederhana, selanjutnya anda bisa memodifikasinya sendiri. Sebelum saya menyampaikan bagaimana listing program untuk membuat display dari 7segment saya paparkan dahulu rangkaian display 7segment tersebut. pada perancangan ini kita menggunakan teknik multiplexing untuk mengaktifkan 4 digit 7segment agar menyala secara bersamaan. Pada teknik ini sebenarnya tampilan angka yang tampil itu, menyala secara bergantian seperti layaknya multiplexer. Karena daya frame tangkap kita terbatas sehingga nyala 4 digit 7segment tampak menyala bersamaan. Nah.. sebelum saya lama-lama membahas ini, dan takutnya kata-kata yang saya tulis nanti akhirnya ngelantur kemana-mana, langsung aja ke topik permasalahan.

Dibawah ini merupakan rangkaian tampilan 4 digit 7Segment yang saya buat di PCB dengan menggunakan bantuan Protel Altium 2004, tentunya dengan teknik yang sederhana yaitu teknik sablon ala Setrika Ibuku...


Rangkaian diplay 7Segment 4 digit.

Rangkain diatas merupakan rangkaian display 7segment 4 digit. Kaki IC driver 7segment 7447 (pin A,B,C,D) berturut-turut terhub dengan port (C.0, C.1, C.2, C.3), sedangkan digit yg pertama terhubung dengan Port C.4 sampai C.7. Nah gambar yang dibawah ini merupakan realisasi rangkaian dalam Desain layout PCB yang saya buat, filenya bisa anda download disini dan disini. Rangkaian kontroller yangt digunakan terserah anda, namun pada tulisan ini saya menggunakan controller dari Atmel type AVR seri ATmega8535.


Pada sesi kali ini saya akan langsung masuk ke sesi coding, Pada tutorial kali ini saya menggunakan tool CodeVision dengan Pemrograman bahasa C. Langkah yang pertama anda bikin project baru dengan CodeWizardAVR pada CodeVision. Setting PORTA sebagai input dan PORTC sebagai Output, dan yang paling penting anda setting jenis mikrokontroler ATmega8535 pada tab chip sesuai dengan jenis IC mikrokontroler yang kita gunakan. Sesuaikan nilai Clock pada tab Chip sesuai dengan Sistem Minimum yang dipakai. Pada latihan ini saya pakai nilai kristal sebesar 11.059200 MHz. Setelah selesai anda setting parameter yang sesuai, pilihlah Generate, save & exit pada menu file, dan listing programnya akan seperti ini:



/*****************************************************
Project :
Version :
Date : 10/16/2009
Author : Musafir86
Company : Musafir86
Comments:


Chip type : ATmega8535
Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/

#include
#include


// Declare your global variables here
void tampil_7segmen(void);
void hextobcd (unsigned int data);
unsigned int data=0;
unsigned char satuan,puluhan, ratusan, ribuan=0;

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=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=0xFF;
DDRB=0xFF;

// 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=0xFF;

// 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=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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: 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
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;


while (1)
{
// Place your code here
data=PINA;
hextobcd(data);
tampil_7segmen ();
};
}
void tampil_7segmen (void)
{
ribuan|=0x70;
PORTC=ribuan;
delay_us(500);
ratusan|=0xB0;
PORTC=ratusan;
delay_us(500);
puluhan|=0xD0;
PORTC=puluhan;
delay_us(500);
satuan|=0xE0;
PORTC=satuan;
delay_us(500);
}

void hextobcd(unsigned int data)
{
satuan=data%10;
data/=10;
puluhan=data%10;
data/=10;
ratusan=data%10;
data/=10;
ribuan=data%10;
}

Nah, Listing program yang diatas merupakan coding untuk menyalakan display 7Segment 4 digit, yang mana data masukan berasal dari PORTA dan PORTc terhubung dengan rangkaian display 7Segment. pada font yang berwarna merah merupakan coding yang harus anda modif dan tambahkan di listing program anda. Nah sampai disini sudah paham bukan, pasti bisa dan selamat mencoba. Mari kita sharing bersama.


Share/Bookmark

1 komentar:

Muhammad Fadhli mengatakan...

udh mati link download filenya..bagi filenya coyyy

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More