UNIT II
SEVEN SEGMENT
B. Listing Program
1. Tulis source code diantara while seperti dibawah ini:
#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
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
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();
}
};
}
2. karena menggunakan fungsi delay_ms maka harus memasukkan fileheader delay.h
dengan perintah #include<delay.h> setelah baris #include<mega8535.h>
3. Program chip dengan memilih menu Project >> Make atau dengan menekan shift +
F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message.
4. Perhatikan tempilan dari 7segment di rangkaian diatas. Led dalam seven segment
akan menyala membentuk angka.
5. Buatlah listing program dengan memunculkan 4 angka terakhir dari NIM anda.