Professional Documents
Culture Documents
Disusun oleh:
Kelompok : Maxtor
Adi Pramono (2B / 01 / 0731130019 )
Lina Ernani (2B / 15 / 0731130046)
Nurul Furqon R (2B / 20 / 0731130073)
b
c
1 0xF9 1 1 1 1 1 0 0 1
a
b
e g
d
2 0xA4 1 0 1 0 0 1 0 0
a
b
c
d
3 0xB0 1 0 1 1 0 0 0 0
f b
g c
4 0x99 1 0 0 1 1 0 0 1
a
f
g c
d
5 0x92 1 0 0 1 0 0 1 0
a
f
e g c
d
6 0x82 1 0 0 0 0 0 1 0
a
b
c
7 0xF8 1 1 1 1 1 0 0 0
a
f b
e g c
d
8 0x80 1 0 0 0 0 0 0 0
a
f b
g c
d
9 0x90 1 0 0 1 0 0 0 0
a
f b
e c
d
0 0xC0 1 1 0 0 0 0 0 0
Jika kita menghubungan pin input pada suatu rangkaian analog untuk
diambil level tegangannya, kemudian kita memprogram microcontroller sebagai
ADC ( Analog to Digital Converter ), maka nilai tegangan analog tersebut akan
di konversi menjadi tegangan dalam bentuk sinyal digital dengan menggunakan
metode sampling kemudian hasil sampling tersebut dikuantisasi terhadap
tegangan referensi. Hasil tersebut dikodekan dalam bentuk kode biner dan
disimpan dalam suatu register.
Jika kita menghubungkan input dari ADC pada suatu sensor suhu maka
kita dapat mengkonversi nilai tegangan dari output sensor ke dalam kode biner
yang kemudaian kita dapat tampilkan nilai biner tersebut pada sebuah 7 segmen
display.
Cara kerja system tersebut adalah sensor pertama – tama menangkap suhu
dari lingkungan kemudian mengkonversi menjadi suatu level tegangan tertentu.
Setiap perubahan suhu pada lingkungan akan menyebabkan perubahan level
tegangan pada output sensor. Selanjutnya level tegangan tersebut masuk pada
input ADC untuk dikonversi menjadi data digital untuk diproses lebih lanjut. Data
hasil konversi ADC tersebut akan digunakan untuk menggerakkan led untuk
menunjukkan nilai tertentu sesuai dengan data hasil konversi tersebut.
7 6 5 4 3 2 1 0
0 0 Pin VRef
0 1 Vcc
1 0 Not Used
1 1 2,56 V
Untuk mengatur format penyimpanan data ADC pada register ADCL dan ADCH.
0 D9 – D8 D7 – D0
1 D9 – D2 D1 – D0
Bit 4:0 – MUX4:0 : Analog Channel and Gain Selection Bits
Bit – bit MUX4:0 dapat digunakan untuk menentukan pin masukan analog ADC
pada mode konversi tunggal atau untuk menentukan pin- pin masukan analog dan nilai
penguatannya (gain) pada mode penguat beda
0 0 0 0 0 ADC0
0 0 0 0 1 ADC1
0 0 0 1 0 ADC2
0 0 0 1 1 ADC3
0 0 1 0 0 ADC4
0 0 1 0 1 ADC5
0 0 1 1 0 ADC6
0 0 1 1 1 ADC7
7 6 5 4 3 2 1 0
• Bit6 - ADCS
‘1’ = Aktif start otomatis saat tepi positif (pemicu ADC diaktifkan)
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128
3. SFIOR
0 0 1 Analisis Komparator
C. Gambar Rangkaian
D. Flow Char
start
PORTB=
ratusan
Input pin
ADC.0
PORTB=
puluhan
Process conversi
ADC PORTB=
(ADCH) satuan
Leve=data_templ=
ADCH
Satuan=
data_temp%10
Data_temp/=10
puluhan=
data_temp%10
Data_temp/=10
ratusan=
data_temp%10
E. Program
#include<mega8535.h>
#include<delay.h>
void conversi_digital_desimal (unsigned char level);
void tulis_7segmen (unsigned int ratusan, unsigned int puluhan,
unsigned satuan) ;
unsigned char level;
unsigned char
aray[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char satuan,puluhan,ratusan=0;
void main (void)
{
PORTB=0x00;
DDRB=0xff;
ADMUX=0xe0;
ADCSRA=0x84;
SFIOR=0x1f;
while(1)
{
ADMUX=0x00|0xe0;
ADCSRA|=0x40;
while((ADCSRA&0x10)==0);
{
ADCSRA|=0x10;
level=ADCH;
level+=10;
conversi_digital_desimal (level);
};
};
}
void conversi_digital_desimal (unsigned char level)
{
unsigned data_temp;
data_temp=level;
satuan=data_temp%10;
data_temp/=10;
puluhan=data_temp%10;
data_temp/=10;
ratusan=data_temp%10;
tulis_7segmen(ratusan,puluhan,satuan);
}
void tulis_7segmen (unsigned int ratusan, unsigned int puluhan,
unsigned int satuan)
{
PORTB=aray[ratusan];
delay_ms(600);
PORTB=aray[puluhan];
delay_ms(600);
PORTB=aray[satuan]&0x7F;
delay_ms(1800) ;
}
F. Analisis
1. Code DDRB=0xff PORTB=0x00 menunjukkan perintah port B sebagai
output dan nilai awalnya adalah 0x00 yang berati semua led pada 7
segmen display menyala.
2. Code ADCMUX=0xE0 berarti tegangan referensi yang digunakan adalah
tegangan 2,56V dan pin input ADC terletak pada ADC.0 atau pin nomor
40.
3. Code ADCSRA=0x84 adalah perintah untuk mengaktifkan fungsi ADC
pada PORT A, serta mengatur frekuensi sampling dari ADC sebesar 1/16
dari frekuensi oscilator.
4. Register SFIOR yang mempuyai nilai 0x1f berfungsi mengatur mode kerja
dari sumber picu start sampling ADC. Mode kerja diatas diset pada
free running yang berarti ADC melakukan sampling terhdapa tegangan
input ADC secara terus menerus.
5. Perintah didalam while adalah fungsi yang melakukan sampling ADC
kemudian menyimpannya di register ADCH.
6. Perintah level=ADCH berarti kita mengkopi nilai ADCH ke variabel level
7. Pada baris selanjutnya terdapat subprogram yang memproses nilai dari
variabel level untuk dipisahkan antara nilai ratusan, puluhan dan satuan.
8. Subprogram tulis_7segmen berfungsi mengatur format penulisan masing –
masing nilai ratusan, puluhan dan satuan untuk ditampilkan pada 7
segmen.
9. Perintah pada penjelasan nomor 1 sampai nomor 8 akan diulangi terus
menerus sampai ada interupsi reset dari pin reset, dan eksekusi program
kembali mulai baris yang pertama.
B. Kesimpulan
1. Microcontroller ATmega 8535 mempunyai fungsi ADC yang build in
dengan chip microcontroller tersebut.
2. Microcontroller dapat difungsikan sebagai pengendali 7 segmen display
dengan cara mengatur logika dari pin-pin dari port I/O microcontroller
tersebut.
3. Pemilihan keluaran / respons output dari microcontroller dapat
dikendalikan dari luar dengan cara membaca level tegangan analog dari
pin input ADC.
4. Cara penulisan code untuk 7 segmen common anoda dan common katoda
berbeda hal ini dikarenakan logikan pin yang dibutuhkan untuk
mengendalikan led – led pada dua 7 segmen tersebut berbeda.
5. Microcontroller ATMega 8535 dapat digunakan sebagai decoder / driver
input dari sensor suhu menggunakan IC LM 35.