Anda di halaman 1dari 12

Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

Nama
Data Percobaan Unit II NPM /Kelas /
7-Segment Dan ADC Shift / Tanggal /

7-SEGMENT

7-segment display di Learning Board menggunakan metode scanning. Untuk


memunculkan angka di salah satu 7-segment maka berikan data selagi salah satu 7-segment
yang dituju diaktifkan, sementara 7-segment lain tidak diaktifkan.

•Untuk menonaktifkan semua 7-segment bisa menggunakan perintah berikut:


close_seven_segment();

•Untuk mengaktifkan dan memberi data salah satu 7-segment, gunakan perintah berikut:
show_seven_segment(Nomor_7segment,Data_angka);

•Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include


“Seven_Segment.h“

Keterangan: Nomor_7segment diisi dengan nomor urut 0-3, dihitung dari paling kanan.
Data_angka diisi dengan angka 0-9.

Unit II Page 1
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

ADC (Analog Digital Converter)


ADC (Analog Digital Converter) adalah mengubah nilai analog menjadi nilai
digital. Dalam ARM NUC140 memiliki 8 channel pengkonversi sinyal analog ke nilai digital
(ADC) dengan ketelitian 12 bit, yang dapat membaca level sinyal analog menjadi
angka dalam range 0-4095. Clock ADC dapat menggunakan internal 22MHz
dengan divisor 2. Variabel Resistor pada rangkaian hardware yang memberikan masukan
sinyal analog. ARM NUC140 . Pada praktikum ini menggunakan variable resistor sebagai
input sinyal analog dan seven segment sebagai output digitalnya.

• Untuk membaca sinyal analog, bisa menggunakan perintah berikut:


DrvADC_StartConvert();
DrvADC_GetConversionData(Nomor_channel);

• Untuk bisa menggunakan perintah di atas, perlu memasukkan library


#include “DrvADC.h“

• Untuk menampung hasil pembacaan ADC, ada baiknya membuat suatu variabel, misal
bernama adc bertipe data integer.

Keterangan:
Nomor_channel diisi angka 0-7, sesuai dengan pin tempat sinyal analog terhubung. Dalam
hal ini, Variabel Resistor ada di channel 7.

Langkah 1: (Lihat Unit 1)


Langkah 2: Set Pin 7-Segment Data

1. Contreng GPIOE pada gambar chip.

2. Di jendela Configuration pilih GPIOE

3. Di bawahnya, klik pada Pin 0 s/d 7 agar Enable

4. Scroll ke bawah, atur Pin Config 0 s/d 7:


Mode Control: Output

Unit II Page 2
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

Langkah 3: Set Pin 7-Segmen Select

1. Di jendela Configuration pilih GPIOC

2. Di bawahnya, klik pada Pin 4 s/d 7 agar Enable

3. Scroll ke bawah, atur Pin Config 4 s/d 7:


Mode Control: Output

Langkah 4: Set Pin VR

1. Contreng ADC pada gambar chip.

2. Di jendela Configuration pilih ADC.

3. Klik pada Chanel 7 agar Enable.

4. Scroll ke atas, klik pada Clock Source, pilih INTERNAL 22M.

Unit II Page 3
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

5. Klik pada Clock Divisor, isi dengan angka 2

Langkah 5: Pemprograman Seven Segmen

Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton
\BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Include \NUC1xx-LB_002
Pilih file Seven_Segment.h

Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton
\BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xx-LB_002
Pilih file Seven_Segment.c

Unit II Page 4
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

Untuk menampilkan angka 5 di 7-segment paling kanan, tambahkan baris program sehingga
menjadi seperti gambar di bawah.

Build & Download ke chip. Pastikan tidak ada error.

Simulasikan listing program dibawah ini:

1. Menampilkan Seven Segment Angka 1-9


#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "Seven_Segment.h"
void init();
int main(void)

Unit II Page 5
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

{
int i=0,j=0;
while(1)
{
for(i=0;i<=9;i++)
{
close_seven_segment();
show_seven_segment(j,i);
DrvSYS_Delay(5000000);
}
}
} // Selesai

Bagaimana keluaran nya? (Gambarkan)

Jelaskan hasil keluaran nya!

2. Menampilkan Seven Segment Counter 0-9999


#include"DrvGPIO.h"
#include"DrvSYS.h"
#include"Seven_Segment.h"

Unit II Page 6
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

int main(void)
{
/* mengatur penggunaan sumber clock */
UNLOCKREG();
DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);
DrvSYS_Delay(5000);
DrvSYS_SelectHCLKSource(0);
LOCKREG();
DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);
/* ================================ */

/* Memadamkan semua 7Segment menggunakan fungsi close_seven_segment.


* Informasi mengenai parameter fungsi close_seven_segment terdapat
pada file "Seven_Segment.c".
* Input parameter : -.
*/
void close_seven_segment();
int digit=0, value=0;
while(1)
{
digit = (value/1000 %10);

/* Memadamkan semua 7Segment menggunakan fungsi


close_seven_segment.
* Input parameter : -.
*/
close_seven_segment();

/* Menyalakan 7Segment ke-3 (paling kiri) menggunakan fungsi


show_seven_segment.
* Informasi mengenai parameter fungsi show_seven_segment
terdapat pada file "Seven_Segment.c".
* Input parameter : [urutan 7Segment], [nilai yang ingin
ditampilkan].
*/
show_seven_segment(3,digit);
DrvSYS_Delay(5000);

digit = (value/100 %10);

/* Memadamkan semua 7Segment menggunakan fungsi


close_seven_segment.
* Input parameter : -
*/
close_seven_segment();

/* Menyalakan 7Segment ke-2 menggunakan fungsi


show_seven_segment.
* Input parameter : [urutan 7Segment], [nilai yang ingin
ditampilkan].
*/
show_seven_segment(2,digit);
DrvSYS_Delay(5000);

digit = (value/10 %10);

Unit II Page 7
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

/* Memadamkan semua 7Segment menggunakan fungsi


close_seven_segment.
* Input parameter : -.
*/
close_seven_segment();

/* Menyalakan 7Segment ke-1 menggunakan fungsi


show_seven_segment.
* Input parameter : [urutan 7Segment], [nilai yang ingin
ditampilkan].
*/
show_seven_segment(1,digit);
DrvSYS_Delay(5000);

digit = (value %10);

/* Memadamkan semua 7Segment menggunakan fungsi


close_seven_segment.
* Input parameter : -.
*/
close_seven_segment();

/* Menyalakan 7Segment ke-0 menggunakan fungsi


show_seven_segment.
* Input parameter : [urutan 7Segment], [nilai yang ingin
ditampilkan].
*/
show_seven_segment(0,digit);
DrvSYS_Delay(5000);

if (value==9999){
value=0;
}else{
value++;
}
}
} //Selesai

Bagaimana keluaran nya? (Gambarkan)

Unit II Page 8
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

Jelaskan hasil keluaran nya!

3. ADC Tampilan Output Menggunakan Seven Segment


#include "DrvADC.h"
#include "DrvSYS.h"
#include "DrvGPIO.h"
#include "DrvPWM.h"

uint8_t gu8AdcIntFlag;
uint16_t u16ConversionData;
char temp[10];
S_DRVPWM_TIME_DATA_T sPt;

void AdcIntCallback(uint32_t u32UserData)


{
/*
* Mengambil nilai ADC di channel 7
* Parameter input bisa dilihat di @DrvADC_GetConversionData di file
DrvADC.
*/
u16ConversionData = DrvADC_GetConversionData(7);
//ambil data hasil konversi

sPt.u8HighPulseRatio = ((u16ConversionData>>4)/3)+15;
DrvPWM_SetTimerClk(DRVPWM_TIMER0, &sPt);

int digit=0, value=0;

digit = (u16ConversionData/1000 %10);


close_seven_segment();

Unit II Page 9
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

show_seven_segment(3,digit);
DrvSYS_Delay(6000);
digit = (u16ConversionData/100 %10);
close_seven_segment();
show_seven_segment(2,digit);
DrvSYS_Delay(6000);
digit = (u16ConversionData/10 %10);
close_seven_segment();
show_seven_segment(1,digit);
DrvSYS_Delay(6000);
digit = (u16ConversionData %10);
close_seven_segment();
show_seven_segment(0,digit);
DrvSYS_Delay(6000);
}

int main(void)
{
UNLOCKREG();
//disable register protection : 59H,
16H dan 88h di alamat 0x5000_0100
DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);
//aktifkan crystal external 12MHz

//atau SYSCLK->PWRCON.XTL12M_EN =
1;
DrvSYS_Delay(5000);
//tunggu sampai crystal stabil
DrvSYS_SelectHCLKSource(0);
//set crystal external sebagai sumber clock
LOCKREG();
//enable register protection
DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);
//set crystal external sebagai sumber clock 12MHz

DrvGPIO_Open(E_GPA,7,E_IO_INPUT);
//pastikan PortA.7 sebagai input
/*
* mengatur kerja ADC :
* single ended
* continuous
* channel 7
* menggunakan crystal 12MHz
* Freq = 2MHz
* Parameter input bisa dilihat di @DrvADC_Open pada file DrvADC.c
*/
DrvADC_Open(ADC_SINGLE_END, ADC_CONTINUOUS_OP, 0x80, EXTERNAL_12MHZ,
5);//Single-End, Continuous Cycle Scan, kanal 7, 12Mhz, pembagi 5

DrvADC_ConfigADCChannel7(EXTERNAL_INPUT_SIGNAL);
//kanal 7 terhubung ke input analog ekternal

DrvADC_StartConvert();
//konversi ADC dimulai

DrvADC_EnableADCInt(AdcIntCallback, 0);

DrvPWM_Open();

Unit II Page 10
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

DrvGPIO_InitFunction(E_FUNC_PWM0); //mengaktifkan fungsi


PWM pada GPIO

sPt.u8Mode = DRVPWM_AUTO_RELOAD_MODE; //jenis operasi auto


reload
sPt.u32Frequency = 50; //frekuensi =
50Hz = 20ms
sPt.u8HighPulseRatio =0;
sPt.i32Inverter = 0;

/* Mengunnakan PWM0 dan sumber clock crystal external 12MHz


* Informasi @DrvPWM_SelectClockSource() dapat dilihat pada file
DrvPWM.c
*/
DrvPWM_SelectClockSource(DRVPWM_TIMER0, DRVPWM_INTERNAL_22M);
//sumber clock PWM = eksternal 12MHz

/* Mengunnakan PWM0
* Informasi @DrvPWM_SetTimerClk() dapat dilihat pada file DrvPWM.c
*/
DrvPWM_SetTimerClk(DRVPWM_TIMER0, &sPt); //atur konfigurasi untuk
PWM Timer0

/* Aktifkan I/O untuk PWM0


* Informasi @DrvPWM_SetTimerIO() dapat dilihat pada file DrvPWM.c
*/
DrvPWM_SetTimerIO(DRVPWM_TIMER0, 1); //mengaktifkan I/O
dari PWM Timer 0

/* Aktifkan fungsi PWM0


* Informasi @DrvPWM_Enable() dapat dilihat pada file DrvPWM.c
*/
DrvPWM_Enable(DRVPWM_TIMER0, 1); //mengaktifkan PWM
Timer0.

close_seven_segment();

while(1)
{
}
} //Selesai

Bagaimana keluaran nya? (Gambarkan)

Unit II Page 11
Praktikum Mikrokontroler Laboratorium Teknik Elektro 2015

Jelaskan hasil keluaran nya!

Paraf Asisten

( )

Unit II Page 12

Anda mungkin juga menyukai