Anda di halaman 1dari 7

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR Bagikan 0 Lainnya Blog Berikut» Buat Blog Masuk
Bagikan 0
Bagikan
0

Lainnya

Elektro-Kontrol

AVR for Dummies Home AVR Tutorials
AVR for Dummies
Home
AVR Tutorials

AVR Projects

Miscellaneous

AVR Downloader

Free Ebooks

Free Softwares

Miscellaneous AVR Downloader Free Ebooks Free Softwares Senin, 27 Juni 2011 PROGRAMMENGAKSESSEVENSEGMENT

Senin, 27 Juni 2011

PROGRAMMENGAKSESSEVENSEGMENT

MENGGUNAKANCODEVISIONAVR

Sebelumnya teman-teman harus mengerti terlebih dahulu tentang dasar-dasar dari seven segment. Sebenarnya seven segment tersusun dari 8 buah led yang dibentuk menyerupai angka 8 yang terdiri dari 7 segmen dan ditambah 1 segmen berupa titik (dot). Untuk mendapatkan datasheet penampil seven segment silakan download disini.

Seven segment terdiri dari 2 jenis konfigurasi yaitu katoda bersama atau common cathoda (CC) dan anoda bersama atau common anoda (CA) .

cathoda (CC) dan anoda bersama atau common anoda (CA) . Dari gambar diatas teman-teman tentu sudah

Dari gambar diatas teman-teman tentu sudah dapat langsung bisa membedakannya. Jika common cathoda, dimana sisi katoda pada LED tiap segmennya digabungkan (common) sehingga sering disebut katoda bersama. Sedangkan jika common anoda, pada sisi anoda pada LED tiap segmennya digabungkan sehingga sering disebut katoda bersama.

CA (common anoda) mempunyai perbedaan

yang mendasar yaitu cara untuk mengaktifkan/menyalakan tiap segmennya.

Antara CC (common cathoda) dan

Untuk CC agar segmennya dapat menyala harus diberi logika HIGH (misalnya 5V), sedangkan untuk CA agar segmennya dapat menyala harus diberi logila LOW

CA agar segmennya dapat menyala harus diberi logila LOW Pencarian di Blog ini Cari mesin saldo

Pencarian di Blog ini

dapat menyala harus diberi logila LOW Pencarian di Blog ini Cari mesin saldo rekening   "TRIK
Cari
Cari

Translate this Blog

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

(GND). Berikut adalah cara untuk menampilkan angka pada CA dan CC, disini saya akan menampilkan angka 7 (tujuh).

CA dan CC, disini saya akan menampilkan angka 7 (tujuh). Dari gambar diatas terlihat jelas bahwa

Dari gambar diatas terlihat jelas bahwa untuk menampilkan angka 7 pada CA harus menyalakan segment a (bit0), b (bit1) dan c (bit2) dengan memberikan logika LOW (GND).

Sedangkan untuk CC merupakan kebalikan dari CA, dimana untuk menampilkan angka 7 harus menyalakan segment a (bit0), b (bit1) dan c (bit2) dengan memberikan logika HIGH (5V atau VCC).

Dari penjelasan diatas dapat dibuat tabel untuk menampilkan angka dari 0-9.

diatas dapat dibuat tabel untuk menampilkan angka dari 0-9. TABEL 1 Sekarang teman-teman sudah tahu bagaimana

TABEL 1 Sekarang teman-teman sudah tahu bagaimana cara membentuk tampilan angka pada seven segment. Selain dari itu seven segment dapat pula dibentuk karakter selain angka, teman-teman hanya tinggal menyesuaikannya sesuai keinginan dengan menyalakan segment yang diinginkan.

Sekarang saya akan menjelaskan bagaimana cara kerja seven segment jika di- interface-kan dengan mikrokontroler. Dimisalkan saya ingin menampilkan angka 2163 pada seven segment, maka saya akan membutuhkan 4 buah seven segment (digit1=2, digit2=1, digit3=6 dan digit4=3). Dan pada prinsipnya cara kerja seven segment dilakukan secara scanning yaitu “jika ingin menampilkan 2163, maka saya akan menampilkan angka 2 terlebih dahulu pada seven segment digit1 (digit ke1) dengan mematikan digit2, digit3 dan digit4. Kemudian saya akan menampilkan angka 1 pada seven segment digit2 dengan mematikan digit1,

Translate

this

blog

from

Indonesian to

the

following

language!

blog from Indonesian to the following language! Edited by Elektro-Kontrol Ada kesalahan di dalam gadget ini

Edited by Elektro-Kontrol

Ada kesalahan di dalam gadget ini

Entri Terpopuler

Kategori

Juli (1)

Juni (33)

Contact Us

kontrol.elektro@gmail.com

Follow by Email

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

digit3 dan digit4 dan seterusnya sampai menampilkan angka 3 pada digit4″. Metode inilah yang dinamakan scanning, dengan melakukan scanning secara cepat (biasanya 25x dalam 1 detik), maka mata kita tidak akan bisa mengikuti scanning seven segment tersebut sehingga seolah-olah mata kita akan melihat bahwa semua seven segmen (digit1-digit4) menyala secara bersamaan.

Pertanyaaannya, mengapa kita menggunakan metode scanning? Jawabannya dikarenakan metode scanning dapat mengurangi konsumsi daya listrik dibandingkan dengan menyalakan semua seven segment. Dan yang paling penting yaitu dapat menghemat pemakaian pin-pin mikrokontroler, sehingga tidak banyak input/output yang terpakai untuk mengakses seven segment.

Baiklah berikut adalah aplikasi menampilkan angka 2163 menggunakan mikrokontroler dengan seven segment tipe common anoda (CA). Saya sarankan untuk menggunakan seven segment tipe CA karena nantinya mikrokontroler bersifat sebagai sinking. Untuk lebih jelasnya baca pada postingan Sinking Vs Sourching output.

Berikut adalah schematic dan listing program lengkapnya:

Berikut adalah schematic dan listing program lengkapnya: #include <mega16.h> #include <delay.h> char

#include <mega16.h> #include <delay.h>

char digit1, digit2, digit3, digit4;

void main(void)

{

PORTC=0xff;

DDRC=0xff;

PORTD=0x0f;

DDRD=0x0f;

// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0×80;

SFIOR=0×00;

digit1=0xa4;//hexa untuk angka 2 digit2=0xf9;//hexa untuk angka 1 digit3=0×82;//hexa untuk angka 6 digit4=0xb0;//hexa untuk angka 3

while (1)

{

PORTC=digit1;//mengirimkan data untuk angka 2

PORTD=0b11110111;//menyalakan digit1

delay_ms(5);

PORTC=digit2;//mengirimkan data untuk angka 1 PORTD=0b11111011;//menyalakan digit2

delay_ms(5);

Email address

Submit
Submit

Follower

Join this site

delay_ms(5); Email address Submit Follower Join this site w ith Google Friend Connect Members (51) More

w ith Google Friend Connect

Members (51)

this site w ith Google Friend Connect Members (51) More » Already a member? Sign in

Already a member? Sign in

Jam Digital

Hits

(51) More » Already a member? Sign in Jam Digital Hits 2 3 4 3 4

2 3 4 3 4 9

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

PORTC=digit3;//mengirimkan data untuk angka 6 PORTD=0b11111101;//menyalakan digit3

delay_ms(5);

PORTC=digit4;//mengirimkan data untuk angka 3 PORTD=0b11111110;//menyalakan digit4

delay_ms(5);

//lamanya waktu scanning ditentukan oleh intruksi delay };

}

Mudah bukan untuk mengakses seven segment? Tapi jangan senang dulu, disini saya akan menjelaskan tentang kesulitan yang akan dihadapi jika menggunakan penampil seven segment. Pada program diatas kita membuat aplikasi untuk menampilkan angka 2163 pada keempat buah seven segment dengan mengirimkan datanya secara langsung ke setiap seven segment. Pertanyaannya, bagaimana jika kita ingin menampilkan isi dari sebuah variabel ke dalam seven segment? Misalnya saya punya sebuah variabel dengan nama data yang bernilai 2163. Jika dalam program menjadi seperti ini.

int data;//mendeklarasikan tipe data data=2163;//variabel nilai berisi 2163

Cukup sulit bukan jika ditampilkan kedalam seven segment, jika kita menggunakan LCD 2×16 maka akan sangat mudah sekali menampilkannya. Tetapi tenang saja, disini saya akan menjelaskan cara mengatasi permasalahan diatas dengan menggunakan beberapa tambahan algoritma pemrograman.

Sekarang saya akan memberikan sebuah solusi dari permasalahan diatas untuk menampilkan isi dari sebuah variabel ke dalam seven segment. Rangkaiannya masih sama seperti gambar diatas.

Caranya adalah:

Dengan melakukan pembagian dengan angka 10 sebanyak 4 kali, dimana sisa dari pembagian tersebut akan ditampilkan berupa satuan, puluhan, ratusan dan ribuan.

data=2163;

data dibagi 10, hasilnya adalah 216 dan menghasilkan sisa pembagian yaitu 3, angka 3 tersebut kemudian disimpan kedalam variabel satuan.

sekarang data=216 (karena sudah bagi 10 sebelumnya), dengan cara yang sama. data dibagi 10 lagi, hasilnya adalah 21 dan menghasilkan sisa pembagian yaitu 6, angka 6 tersebut kemudian disimpan kedalam variabel puluhan.

sekarang data=21 data dibagi 10 lagi, hasilnya adalah 2 dan menghasilkan sisa pembagian yaitu 1, angka 1 tersebut kemudian disimpan kedalam variabel ratusan.

sekarang data=2 data dibagi 10 lagi, hasilnya adalah 0 dan menghasilkan sisa pembagian yaitu 2, angka 2 tersebut kemudian disimpan kedalam variabel ribuan.

Untuk dapat mengimplementasikannya keprogram dibutuhkan sebuah intruksi % (dalam bahasa C adalah operator untuk operasi sisa pembagian). Berikut adalah listing program lengkapnya untuk mengatasi masalah diatas.

#include <mega16.h> #include <delay.h>

int data, data_temp; char ribuan, ratusan, puluhan, satuan, ubah;

void tampil_7segment()

{

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

PORTC=ribuan;//mengirimkan data ribuan PORTD=0b11110111;//menyalakan digit1

delay_ms(5);

PORTC=ratusan;//mengirimkan data ratusan PORTD=0b11111011;//menyalakan digit2

delay_ms(5);

PORTC=puluhan;//mengirimkan data puluhan PORTD=0b11111101;//menyalakan digit3

delay_ms(5);

PORTC=satuan;//mengirimkan data satuan PORTD=0b11111110;//menyalakan digit4

delay_ms(5);

//lamanya waktu scanning ditentukan oleh intruksi delay

}

void ubah_ke_format7segment()//fungsi untuk mengubah kedalam format 7segment

{

if (ubah==0){ubah=0xc0;} if (ubah==1){ubah=0xf9;} if (ubah==2){ubah=0xa4;} if (ubah==3){ubah=0xb0;} if (ubah==4){ubah=0×99;} if (ubah==5){ubah=0×92;} if (ubah==6){ubah=0×82;} if (ubah==7){ubah=0xf8;} if (ubah==8){ubah=0×80;} if (ubah==9){ubah=0×90;}

}

void main(void)

{

PORTC=0xff;

DDRC=0xff;

PORTD=0x0f;

DDRD=0x0f;

// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0×80;

SFIOR=0×00;

data=2163;

while (1)

{

data_temp=data; satuan=data_temp%10;//sisa dari pembagian disimpan di variabel satuan ubah=satuan; ubah_ke_format7segment();//panggil fungsi mengubah kedalam format

7segment

satuan=ubah;

data_temp=data_temp/10;

puluhan=data_temp%10;

ubah=puluhan;

ubah_ke_format7segment();

puluhan=ubah;

data_temp=data_temp/10;

ratusan=data_temp%10;

ubah=ratusan;

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

ubah_ke_format7segment();

ratusan=ubah;

data_temp=data_temp/10;

ribuan=data_temp%10;

ubah=ribuan;

ubah_ke_format7segment();

ribuan=ubah;

tampil_7segment();//fungsi untuk menampilkan ke 7segment };

}

Rekomendasikan ini di Google

kategori: AVR Tutorials

Tanggapan:

bermanfaat (3)

biasa saja (0)

Diterbitkan oleh

tidak bermanfaat (0)

6komentar:

boleh belajar seven segmen dsini g?

MANTAPS

makasih

mantap

ditunggu

posting berikutnya

mau tanya mas, bagaimana caranya nampilin di seven segment jika datanya berupa data float. Misal datanya 10.35. Kita gunakan 4 digit seven segment. Terima kasih2012 11.19 makasih Balas mantap ditunggu posting berikutnya erick 16 Februari 2012 10.39 Balas Akabri_udara 19

bang q coba malah ada sebagian segmen(sell)yg g nyala,trus q pake clear

ru bisa nyala sesuai dg angka yg d tampilkan

thank You infonya gan

tambah referensi nih

di tunggu posting barunya Sip!

hehehe

8/1/13

Elektro-Kontrol: PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

MasukkankomentarAnda
MasukkankomentarAnda
Beri komentar sebagai: Google Account Publikasikan Pratinjau
Beri komentar sebagai:
Google Account
Publikasikan
Pratinjau

Posting Lebih Baru

Beranda

Langganan: Poskan Komentar (Atom)

Posting Lama

Baru Beranda Langganan: Poskan Komentar (Atom) Posting Lama Copyright © Elektro-Kontrol 2011. All Rights Reserved.
Baru Beranda Langganan: Poskan Komentar (Atom) Posting Lama Copyright © Elektro-Kontrol 2011. All Rights Reserved.

Copyright © Elektro-Kontrol 2011. All Rights Reserved. Contact Us: kontrol.elektro@gmail.com. Template Ethereal. Diberdayakan oleh Blogger.