Program 7 segment dan Keypad dengan ATmega8535

ini salah satu file project keypad dengan 7 segment menggunakan bahasa C, yang pernah saya buat monggo untuk dicoba yah,,,makasih dah berkunjung di blog saya..🙂

/*
edited by :aliexdsg
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
#include
#include
#include

#define baris1 PIND.4
#define baris2 PIND.5
#define baris3 PIND.6
#define baris4 PIND.7

char temp=0;
unsigned long int simpan=0;
// Declare your global variables here

void write7segment(unsigned char digit, unsigned char bilangan)
{
 PORTB=((0xF7<
}

void sevsegment( unsigned int bilangan)
{
  unsigned int tempdata;
  unsigned int digit1,digit2,digit3,digit4;  //array data untuk memilah
  tempdata=bilangan;
  digit1=tempdata%10;                //satuan,
  tempdata/=10;
  digit2=tempdata%10;                //puluhan,
  tempdata/=10;
  digit3=tempdata%10;                //ratusan,
  tempdata/=10;
  digit4=tempdata%10;                //ribuan
  write7segment(1,digit1);    //scanning untuk digit 1/satuan
  delay_ms(1);
  write7segment(2,digit2);   //scanning untuk digit 2/puluhan
  delay_ms(1);
  write7segment(3,digit3);   //scanning untuk digit 3/ratusan
  delay_ms(1);
  write7segment(4,digit4);   //scanning untuk digit 4/ribuan
  delay_ms(1);
}

unsigned char scan_keypad()
{
 char nilai;
//scan kolom 1
 PORTD=0b11111110;
 if(!baris1){ while(!baris1);nilai=1;}
 if(!baris2){ while(!baris2);nilai=4;}
 if(!baris3){ while(!baris3);nilai=7;}
 if(!baris4){ while(!baris4);nilai='*';}
//scan kolom 2
 PORTD=0b11111101;
 if(!baris1){ while(!baris1);nilai=2;}
 if(!baris2){ while(!baris2);nilai=5;}
 if(!baris3){ while(!baris3);nilai=8;}
 if(!baris4){ while(!baris4);nilai=10;}
 //scan kolom 3
 PORTD=0b11111011;
 if(!baris1){ while(!baris1);nilai=3;}
 if(!baris2){ while(!baris2);nilai=6;}
 if(!baris3){ while(!baris3);nilai=9;}
 if(!baris4){ while(!baris4);nilai='_';}
 return nilai;
}

void main(void)
{
 //init
 DDRB=0xFF;                 //   PORTB OUTPUT 7 SEGMENT
 DDRC=0xFF;                 //   PORTC OUTPUT
 PORTD=0xFF;                //   PORTD INPUT KEYPAD
 DDRD=0x0F;                 //
 ACSR=0x80;                 //
 //routines

 while(1)
 {
   temp=scan_keypad();
   if ((temp!='*') && (temp!='_') && (temp!='') && (simpan999))
       {
        if (temp==10) {simpan*=10;} else
            {
             simpan=simpan-((simpan/1000)*1000);
             simpan=(simpan*10)+temp;
            }

       }

   if (temp=='*') {simpan=0;temp=0;}
   sevsegment(simpan);
 }
}

Skema rangkaiannya yah

*nb : tombol ‘*’ saya gunakan untuk mereset angka

5 thoughts on “Program 7 segment dan Keypad dengan ATmega8535

  1. heruono says:

    mas, tolong kirimkan file simulasinya diproteuslah sama program yang akan didownloadkan ke mc nya dalam format file hexa ,
    soalnya saya kesulitan dalam mengkompile code c Ke file ekstensi hexa,

    kirimnya ke e-mail ne ja mas kalo boleh (heruono.sitorus@gmail.com)

    terimakasih mas

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s