Sunday 18 September 2016

Mengakses Seven Segment dengan Atmega16

Assalammualaikum wr. wb . .
Baiklah pada kesempatan kali ini kita akan belajar membuat program seven segment yang nantinya terdapat counter up dan counter down 1 digit sampai 2 digit dengan menggunkan mikrokontroller ATmega16.

untuk skematiknya seperti dibawah ini :


Pada skematik diatas dapat kita tentukan bahwa PORTB.6 dan PORTB.7 sebagai selector yang nantinya digunakan untuk menghidupkan seven segment, kaki kolektor dari kedua transistor BD140 dihubungkan ke pin COM pada seven segment . Kemudian PORTD digunakan untuk  pin LED pada seven segment yang terdiri dari 8 pin yaitu a, b, c, d, e, f, g, dan dp. Namun pada skema diatas hanya 7 pin yang terhubung pada mikrokontroller.

Saatnya kita membuat program, program dibawah ini untuk menampikan angka 3 pada seven segment digit pertama, sementara digit kedua off.

//---------------------------------------------------------------------------------------------//
// Program menampilkan angka 3 pada digit pertama seven segment
//---------------------------------------------------------------------------------------------//
#include <mega16.h>
#include <delay.h>
void main(void){
PORTB=0xc0  //mengatur portb sebagai output, 0b11000000, nilai awal 1
DDRB=0xc0   //mengatur portb sebagai output, 
PORTD=0xff  //mengatur portd sebagai output, 0b11111111 keadaan awal seven segment padam
DDRD=0xff  //mengatur portd sebagai output,
while(1){
        PORTB.6=1;   //aktifkan seven segment kanan (digit pertama)
        PORTB.7=0;   //menonaktifkan seven segment kiri (digit kedua)
        PORTD=0xb0 //menampilkan angka 3, 0b10110000. (common katoda)
        delay_ms(10); //tunda waktu 10milliSecond
}
}


Selanjutnya kita akan membuat program couter up 1 digit seven segment :

//---------------------------------------------------------------------------------------------//
// program couter up 1 digit seven segment
//---------------------------------------------------------------------------------------------//
#include <mega16.h>
#include <delay.h>
unsigned char angka[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}
void main(void){
PORTB=0xc0  //mengatur portb sebagai output, 0b11000000, nilai awal 1
DDRB=0xc0   //mengatur portb sebagai output, 
PORTD=0xff  //mengatur portd sebagai output, 0b11111111 keadaan awal seven segment padam
DDRD=0xff  //mengatur portd sebagai output,
while(1){
        int naik; // menambahkan variabel naik
        for(naik=0;naik<10;naik++){ 
        PORTB.6=1;
        PORTB.7=0;
        PORTD=angka[geser];
        delay_ms(10); //tunda waktu 10milliSecond
}
}
}




Selanjutnya kita membuat program couter up 2 digit seven segment :

//---------------------------------------------------------------------------------------------//
// program couter up 1 digit seven segment
//---------------------------------------------------------------------------------------------//
#include <mega16.h>
#include <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
int satuan,puluhan,data,data_temp,x;
void rumus()
{
data_temp = data ;
satuan = data_temp%10;             //rumus untuk satuan
puluhan = (data_temp/10)%10;  //rumus untuk puluhan
}

void tampil ()
{
//nilai satuan
PORTB.6 = 1;
PORTB.7 = 0 ;
PORTD = angka[satuan];
delay_ms(10);

//nilai puluhan 
PORTB.6 = 0;
PORTB.7 = 1 ;
PORTD = angka[puluhan];
delay_ms(10);
}

void main(void){
PORTB=0xc0  //mengatur portb sebagai output, 0b11000000, nilai awal 1
DDRB=0xc0   //mengatur portb sebagai output, 
PORTD=0xff  //mengatur portd sebagai output, 0b11111111 keadaan awal seven segment padam
DDRD=0xff  //mengatur portd sebagai output,
while (1){
int x;
for(x=0;x<100;x++) {
        rumus();
        tampil(); } 
 }
 }


Sampai disini materi tentang seven segment, bila ada kurangnya dipost dikotak komentar dan bila ini bermanfaat dishare aja ;) .. oke makasih sudah berkunjung ..






2 comments:

  1. mohon maaf kalo mau membikin down counter gimana yaaa

    ReplyDelete
  2. Rangkaian secara versi full nya ada g ?

    ReplyDelete

Mengakses LCD 16x2 dengan Arduino

    Pada postingan sebelumnya kita sudah membahas tentang mengakses lcd 16x2 dengan atmega16. Kali ini saya akan berbagi tutorial cara menga...