Sabtu, 08 Juni 2013

Menampilkan data dengan 7 segment



Bingung nch mau ngapain minggu-minggu menunggu seminar skripsi akhirnya teringat ada temen kampus yang tanya tentang 7 segment mulai dech membongkar file-file di komputer tentang 7 segment yang udah sy buat dulu. ok sebelumnya kita harus tahu dulu apa itu seven segment. Ringkasnya 7 segment merupakan komponen yang berfungsi sebagai penampil karakter angka dan karakter huruf. 7 segment tersusun atas led-led. lihat gambar dibawah ini untuk lebih jelasnya.

Dari gambar diatas ada 2 jenis 7 segment yaitu common cathode dan common anode. perbedaanya cuma cara  menghidupkan 7 segment tersebut. Untuk common cathode pin kaki a b c d e f g harus diberi tegangan vcc dan pin gnd di hubungkan ke ground agar 7 segment menyala. Sedangkan untuk common anode pin a b c d e f g harus dihubungkan ke ground dan pin vcc di hubungkan ke vcc agar 7 segment menyala (lihat gambar diatas).


1. Project 1 (Menampilkan angka 0 - 9) 

Pada project 1 ini kita mengendalikan 7 segment ini menggunakan mikrokontroller. Buat rangkaian berikut ini bisa langsung menggunakan real mikrokontroller atau menggunakan proteus sebagai simulasi.



Komponen yang dipakai ATmega 8535 dan 7 segment jenis common cathode. pin a b c d e f g pada 7 segment dihubungkan di PORTC sedangkan pin gnd dihubungkan di PORTD 3 (port yang dipakai ini bisa anda rubah sesuai kebutuhan).

Selanjunya kita akan menuliskan angka 0 - 9 pada 7 segment dengan 7 segment berjumlah satu. Bagaimana caranya..? lihat skematik isi dari 7 segment pada gambar diatas. Untuk angka 1 maka yang perlu dihidupkan adalah pin b dan c pada 7 segment sehingga di mikrokontroller kita perlu mengeset PORTB 1 dan PORT B 2 dengan nilai 1 dan PORT D3 dengan nilai 0 ( PORTD 3 sebagai grn maka diberi nilai 0) , angka 2 yang perlu dihidupkan adalah pin a b  g e d pada 7 segment. demikian seterusnya sampai angka 9. program di CAVR sebagai berikut :
Spoiler :
/*****************************************************
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    : 07/01/2013
Author  : Bayu Sasongko
Company : Teknik Elektro UNILA
Comments: 


Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>


void main(void)
{
PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFF;

while (1)
      {
        PORTC=0b00111111; //angka 0  
        delay_ms(100);
        PORTC=0b00000110; // angka 1
        delay_ms(100);
        PORTC=0b01011011; //angka 2
        delay_ms(100);
        PORTC=0b01001111; // angka 3
        delay_ms(100);
        PORTC=0b01100110; //angka 4
        delay_ms(100);
        PORTC=0b01101101; // angka 5
        delay_ms(100);
        PORTC=0b01111101; //angka 6
        delay_ms(100);
        PORTC=0b00000111; // angka 7
        delay_ms(100);
        PORTC=0b01111111; //angka 8
        delay_ms(100);
        PORTC=0b01101111; // angka 9
        delay_ms(100);
      }
}


Tampilannya


download project coding dan proteus disini
(login dulu ke account google anda untuk mendownload)

2. Project 2 (menampilkan angka sampai ribuan)

Pada project ini kita menggunakan 4 buah 7 segment yang mampung menampilkan nilai pada variabel tertentu. Buat rangkaian seperti dibawah ini :


Dari gambar diatas terlihat bahwa 7 segment terhubung paralel antara yang satu dengan yang lain. Dalam menampilkan data dengan susunan 7 segment seperti ini kita perlu menggunakan teknik scaning. apa itu teknik scaning...? kita kembali dulu pada project 1, pada project tersebut seandainya kita ingin menambah 7 segment tapi dilain port misal PORTD memang bisa tetapi hal itu tentu sangat boros. Bayangkan seandainya kita perlu menambah 4 seven seven segment, berapa port banyaknya yang kita butuhkan...? tentu banyak khan....karena 1 seven segment membutukan 8 PORT pada mikrokontroller. Maka untuk menghemat PORT kita menggunakan teknik scaning ini. Pada teknik ini sebenarnya yang kita kendalikan adalah kolom mana yang hidup. Ok lihat gambar diatas misal kita ingin menampilkan nilai 4657 maka pertama-tama kita kirimkan nilai 7 pada PORTC, maka dapat dipastikan bahwa keempat seven segment menunjukkan angka 7. namun yang kita inginkan adalah nilai satuannya maka kita kendalikan kolomnya yaitu dengan mengatur PORTD. Lihat seven segment yang kita ingin hidupkan hanya yang paling kanan (satuan) maka PORTD0 kita beri nilai 0 dan PORTD1,PORTD2,PORTD3 diberi angka 1 sehingga hanya seven segment yang paling kanan yang hidup. Begitu seterusnya untu seven segment yang menunjukkan angka puluhan maka PORTD1 diberii nilai 0 sedangkan PORTD yang lain 1. Untuk coding lengkapnya silahkan lihat dibawah ini :
Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp;

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
data=4657;

PORTA=0x00;
DDRA=0xFF;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

while (1)
      {
      ambil_data();
      tampilkan_seven_segment();             
      };
}


variabel data merupakan variable yang nilainya akan ditampilkan ke 7 segment. Silahkan anda coba ubah-ubah sesuai kebutuhan. Berikut tampilan screenshootnya:
download coding lengkapnya disini (Login ke account google anda terlebih dahulu sebelum men-downlod).
3. Project 3 (Counter up dan Counter down)

Sekarang rangkaian kita modif untuk counter up dan counter down. Tambah switch push button misal pada PORTB. Rubah DDRB menjadi intput (DDRB=0x00;) aktifkan internal pull up (PORTB=0xFF;). buat rangkaian seperti dibawah ini :


programnya sebagai berikut :

Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x;   

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
data=0;

PORTA=0xFF;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

while (1)
      {
      for(x=0;x<50;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
       
      if (PINB.0==0)
        {
        data++;
        if (data>9999)
            {
            data=0;
            }
        } 
      
      if (PINB.1==0)
        {
        data--;
        if (data<=0)
            {
            data=0;
            }
        }
           
      };
}

Screenshootnya seperti dibawah ini:



Download projectnya lengkap disini.

4. Project 4 (Menampilkan data ADC)

Selanjutnya kita modif rangkaian diatas untuk menampilkan data ADC ( analog to digital konverter). Dalam percobaan ini menggunakan potensiometer untuk mendapatkan tegangan output yang akan dirubah menjadi nilai digital. Buat rangkaian seperti dibawah ini :


Programnya sebagai berikut :


Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x; 

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}  

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
PORTA=0xFF;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

while (1)
      {
      
      data=read_adc(0);
      
      for(x=0;x<50;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
      };
}

Screenshoot hasilnya sebagai berikut:


Download Poject lengkap disini.

5. Project 5 (Menampilkan data sensor suhu LM35)

Setelah kita dapat menampilkan data ADC, sekarang kita naik lagi yaitu membuat termometer digital dengan sensor suhu LM35 dan menampilkannya dengan seven segment. Buat rangkaian seperti dibawah ini:


Programnya sebagai berikut :

Spoiler :
#include  <mega8535.h>
#include  <delay.h>

unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x;

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}  

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

while (1)
      {
                
      data=read_adc(0)*0.488;

      for(x=0;x<100;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
      
      };
}

Hasilnya seperti dibawah ini :


Download project lengkap disini.

0 komentar:

Posting Komentar

get this widget here

LinkWithin

Related Posts Plugin for WordPress, Blogger...
Total Posts: 49
Total Comments: 0
get this
get this widget here
\
leo candra Puisi
by: leo coolz


SAHABAT

    Sahabat
    Walau kini kita tak slalu bersama
    Aku ingin kita selalu dekat

      Sahabat
      Walau kini kita jauh
      Aku ingin kita saling menghubungi

        Sahabat
        Kau tau betapa berharganya dirimu?
        Kau lebih berharga dari sebongkah emas

    Sahabat
    Kau tau kenapa?
    Karena mencari seorang sahabat seperti kau bukanlah hal yang gampang

      Sahabat
      Kini ku ucapkan “Aku akan selalu menjadi sahabatmu”
      Kini kau ucap juga di sana

By: leo candra situmorang


Read more...
Free Music Online
Free Music Online

free music at divine-music.info
eakNewLine]> Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuatmemasang-burung-twitter.html#ixzz2WGSrkig3
Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuat-komentar-admin-berbeda.html#ixzz2WGTOrIEB
Sumber: http://leo-coolz.blogspot.com/2013/05/cara-membuat-dan-mengubah-halaman-blog.html#ixzz2WFvvNdnz
Catatan: Sumber : http://leo-coolz.blogspot.com/2013/04/cara-membuatmemasang-kotak-like-fb-dan.html#ixzz2WGXaRQWU

Sumber : http://rahman-ciblog.blogspot.com/2013/04/cara-membuat-judul-blog-bergerak-dan.html#ixzz2WGUTweln

Make your own

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified
Loading TOC. Please wait....


Loading TOC. Please wait....


Sumber : http://rahman-ciblog.blogspot.com/2013/06/cara-memasang-google-translate-di-blog.html#ixzz2WGRpBtI2

apa yang membuat anda terkesan setelah melihat http://leo-coolz.blogspot.com tinggalkan komentar anda !!!!!!

Leo Coolz Gembel © 2008 Template by:
SkinCorner
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
z
l
o
o
c
a
r
d
n
a
c
o
e
l