28
MODUL PRAKTIKUM MIKROKONTROLLER LAB ELEKTRO UMM SEMESTER GENAP TAHUN AJARAN 2017/2018 UNIVERSITAS MUHAMMDIYAH MALANG 2018

MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Embed Size (px)

Citation preview

Page 1: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

MODUL PRAKTIKUM

MIKROKONTROLLER

LAB ELEKTRO UMM

SEMESTER GENAP TAHUN AJARAN 2017/2018

UNIVERSITAS MUHAMMDIYAH MALANG

2018

Page 2: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

PendahuluanKonsep I/O pada NUC1xx Series

Tujuan:

Memahami konsep Masukan/Keluaran (I/O) pada mikrokontroler ARM Cortex M0 NuMicro 1xx Series (NUC140VE3CN)

Pendahuluan

NUC1xx series adalah ARM Cortex mikrokontroler dengan M0 core didalamnya yang cocok digunakan untuk kontrol industri dan aplikasi yang membutuhkan fungsi komunikasi khusus. Cortex M0 adalah prosesor ARM terbaru dengan kinerja 32 bit dengan biaya setara dengan mikrokontroler 8 bit.

NuMicro seri NUC1xx memiliki inti ARM Cortex M0 yang tertanam dengan kecepatan hingga 50 MHz, dilengkapi dengan memori flash untuk program 32KB/64KB/128KB, SRAM sebesar 4KB/8KB/16KB dan memori flash loader untuk ISP (In System Programming) sebesar 4KB. Selain itu juga dilengkapi dengan berbagai macam periperal, seperti GPIO, Timer, Watchdog Timer, RTC, PDMA, UART, SPI/MICROWIRE, I2C, I2S, PWM, LIN, CAN, PS2, USB 2.0 FS Device, ADC 12 bit, komparator analog, Low Voltage Reset, dan Brown Out Detector. Bagan 1 menunjukkan diagram blok dari NuMicro NUC130/140 Series.

Bagan 1 Diagram Blok NuMicro NUC130/140 Series

NuC140 Learning Board

Board ini menggunakan catudaya 5V, yang dapat diperoleh dari konektor USB ataupun melalui konektor catudaya adaptor. Tegangan ini langsung menjadi VDD untuk chip NUC140VE3CN, sehingga perlu diperhatikan tegangan input ini maksimal adalah 5.5V (menurut datasheet NUC140).

Page 3: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Pada board terdapat juga catudaya teregulasi 3.3V menggunakan chip LM1117. Tipe chip regulator ini tidak dinyatakan dalam skematik. Tegangan dari powerjack 3 in dan konektor USB dilewatkan melalui dioda sehingga aman dari kesalahan polaritas pemasangan, namun tidak melindungi dari kerusakan jika tegangan masuk melebihi 5.5V. Bagan 1 menunjukkan layout NUC140 Learning Board. Sedangkan Tabel 1 menunjukkan penggunaan pin pada Learning Board tersebut.

Bagan 2 Layout NUC140 Learning Board dari Nuvoton

Tabel 1 Konfigurasi Sistem NuMicro 1xx Series Learning Board

Blok Pin FungsiICE Bridge Nu Link ICE_CLK

ICE_DATAAntarmuka SWD

UART GPB0GPB1

Rx UART0Tx UART0

Push button GPB15 GPB15 INT0CAN GPD6

GPD7Rx CAN0Tx CAN0

GPB12-13 CAN transciever speedWAU8822 Codec GPC0

GPC1GPC2GPC3GPA15

I2SLRCLKI2SBCLKI2SDII2SDOI2SMCLK

GPA8GPA9

I2C0 SDAI2C0 SCL

GPE14 Line Out Enable/DisableGPE15 Line In Enable/Disable

LIN GPB4GPB5

Rx UART1Tx UART1

GPB6 LIN transceiver wakeupGPB7 LIN tanceiver Enable/Disable

7 Segment LED GPE0-7 BarisGPC4-7 Kolom

LCD Panel Dot Matrix GPD8 SPI3 SS30

Page 4: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

GPD9GPD10GPD11

SPI3 SPCLKSPI3 MISO0SPI3 MOSI0

GPD14 LCD BacklightVariable Resistor GPA7 Antarmuka ADCBuzzer GPB11 PWM4Keypad Matrix GPA0-5 GPIOReset RESET ResetEEPROM GPA10

GPA11I2C1 SDAI2C1 SCL

SD Card Slot GPD12 Catudaya SD CardGPD13 Deteksi SD CardGPC8-11 Antarmuka SD Card

Flash GPD0GPD1GPD2GPD3GPD4GPD5

SPI2 SS20SPI2 SPCLKSPI2 MISO0SPI2 MOSI0SPI2 MISO1SPI2 MOSI1

LED GPA12GPA13GPA14

PWM0PWM1PWM2

GPC12-15 GPIO

Langkah Penggunaan NUVOTON NL-NUC140

1. Buatlah project baru disetiap pergantian dengan memilih MENU PROJECT – NEW PROJECT setelah muncul kotak dialog beri nama project yang akan dibbuat dan pilih tempat penyimpanan project dan pilih NEXT.

2. Maka akan muncul kotak dialog selanjutnya dan pilih CHIP – NEXT dan pilih device yang akan digunakan NUVOTON – NUC140VE3CN – FINISH

3. Langkah selanjutnya Pilih REPOSITORY dan centang sesuai kebutuhan dari sistem sesuai pada masing-masing bab percobaan.

4. Pada PROJECT yang telah dibuat terdapat file “ main.c “ dimana digunakan untuk menuliskan program yang akan dimasukkan kedalam device.

5. Pilih MENU PROJECT – BUILD untuk compile program.6. Jika BUILD SUCCESS maka dapat langsung di downloadkan ke dalam device dengan memilih

MENU – FLASH – PROGRAM DOWNLOAD.7. Tunggu beberapa saat sampai device siap digunakan.

Page 5: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Modul 1Output – LED

TujuanMemahami konsep keluaran pada mikrokontroler ARM Cortex M0 NuMicro 1xx Series (NUC140VE3CN), melalui media LED

PendahuluanPada NuMicro Learning Board tersedia LED yang terhubung pada GPC 12 hingga GPC15. Pada program untuk menyalakan LED digunakan fungsi DrvGPIO_SetPortBits untuk membuat port GPIO Bernilai High atau Low tertentu pada bit-bitnya.

Bagan 3 Skema rangkaian LED pada Learning Board NUC140VE3CN

Pengaturan Repository

Page 6: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

1.1 LED MenyalaPada percobaan kali ini kita akan menyalakan LED pada port GPIO C pin 12, tuliskan kode program di bawah ini, kompile kemudian download ke mikrokontroler.

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

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);

DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetIPClock(E_SYS_HCLK_DIV,0);

DrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT);

while(1) { DrvGPIO_ClrBit(E_GPC, 12); DrvSYS_Delay(100000); }}

Bagan 4 source code percobaan 1.1

Cobalah untuk bereksperimen dan memahami setiap baris perintah yang tertulis diatas.

1.2 LED BerkedipPada percobaan kali ini kita akan mencoba untuk membuat LED pada port GPIO C pin 12 menyala dan padam secara bergantian secara terus menerus, sehingga akan menimbulkan efek seolah-olah

Page 7: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

LED berkedip-kedip, pada percobaan ini kita akan menggunakan SetBit dan ClrBit serta menggunakan delay untuk memperlambat efek berkedip pada LED tersebut.

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

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);

DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetIPClock(E_SYS_HCLK_DIV,0);

DrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT);

while(1) { DrvGPIO_SetBit(E_GPC, 12); DrvSYS_Delay(100000); DrvGPIO_ClrBit(E_GPC, 12); DrvSYS_Delay(100000); }

}

Bagan 5 source code percobaan 1.2

Cobalah bereksperimen dan memahami setiap baris dari perintah yang tertulis diatas.

1.3 LED berkedip (function)Pada percobaan kali ini kita akan mempelajari cara membuat suatu fungsi untuk pekerjaan yang berulang. Berikut contoh dari program yang menggunakan fungsi didalamnya.

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

void delay_loop(void){

uint32_t i,j;for(i=0;i<4;i++){

for(j=0;j<25000;j++);}

}

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); DrvSYS_Delay(5000); DrvSYS_SelectHCLKSource(0); LOCKREG();

DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0); int i=0;for(i=12;i<16;i++){

DrvGPIO_Open(E_GPC, i, E_IO_OUTPUT); }

Page 8: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

while(1) { DrvGPIO_SetBit(E_GPC, 12); delay_loop(); DrvGPIO_ClrBit(E_GPC, 12); delay_loop(); }}

Bagan 6 source code percobaan 1.3

Cobalah bereksperimen dan memahami setiap baris dari perintah yang tertulis diatas.

1.4 LED RGBPada percobaan ini kita akan menyalakan LED RGB yang terhubung pada port GPIO A pin 12 hingga 14. Bagan 6 menunjukkan skema rangkaian LED RGB yang terdapat pada NuMicro 1xx Series.

Bagan 7 skema rangkaian LED RGB pada NuMicro 1xx Series

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

void delay_loop(void){

uint32_t i,j;for(i=0;i<4;i++){

for(j=0;j<100000;j++);}

}

int main(void){

UNLOCKREG(); /*DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);DrvSYS_Delay(5000); DrvSYS_SelectHCLKSource(0);

Page 9: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

LOCKREG(); DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0);

int i=0;for(i=12;i<16;i++){

DrvGPIO_Open(E_GPC, i, E_IO_OUTPUT); }

while(1){

DrvGPIO_SetPortBits(E_GPA, 0x0000); //white greendelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x1000); //yellow greendelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x2000); //blue violetdelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x3000); //orangedelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x4000); //blue greendelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x5000); //greendelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x6000); //bluedelay_loop();DrvGPIO_SetPortBits(E_GPA, 0x7000); //no lightdelay_loop();

}}

Bagan 8 source code percobaan 1.4

Page 10: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Modul 2Seven Segment

TujuanMemahami konsep keluaran yang digunakan pada Seven Segment yang terdapat pada NuMicro 1xx Series Learning Board.

PendahuluanPada NuMicro 1xx Series learning board terdapat 4 buah Seven Segment yang terhubung dengan PORT GPIO E pin 0 sampai 7 sebagai ROW dan PORT GPIO C pin 4 sampai 7 sebagai COLUMN. Untuk menggunakan seven segment ini, pengguna perlu memasukkan header file Seven_Segment.h dan Seven_Segment.c kedalam program.

Pada program, pengguna dapat menggunakan syntax “show_seven_segment(column, row)” untuk menampilkan karakter pada Seven Segment. Karena seven segment tersebut terhubung dengan multiplexer, maka sebelum penggunaannya terlebih dahulu harus mematikan multiplexer dengan perintah “close_seven_segment”.

Bagan 9 skema rangkaian seven segment

Page 11: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Pengaturan Repository

2.1 Seven Segment (Counter 1)Pada percobaan kali ini kita akan membuat sebuah program counter, program yang akan kita buat ini akan menyalakan seven segmen paling kanan, dan menampilkan angka 0 hingga F secara bergantian.

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

void delay_loop(void){

uint32_t i,j;for(i=0;i<3;i++){

for(j=0;j<100000;j++);}

}

int main(void){

Page 12: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

UNLOCKREG(); DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); DrvSYS_Delay(5000); DrvSYS_SelectHCLKSource(0); LOCKREG(); DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0);

int i=0;while(1){

for(i=0;i<16;i++){

close_seven_segment();show_seven_segment(0,i);delay_loop();

}}

}

Bagan 10 source code percobaan 2.1

Cobalah bereksperimen dan memahami maksud dari setiap baris perintah dalam program tersebut.

2.2 Seven Segment (pindah kolom)Percobaan kali ini mempunyai dasar yang sama dengan percobaan pada 2.1, hanya saja counter akan berpindah kolom dari seven segment paling kanan ke paling kiri secara bergantian.

Ketiklah program dibawah ini dan mulailah bereksperimen dengan baris-baris programnya:

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

void delay_loop(void){

uint32_t i,j;for(i=0;i<3;i++){

for(j=0;j<100000;j++);}

}

int main(void){

UNLOCKREG(); DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); DrvSYS_Delay(5000); DrvSYS_SelectHCLKSource(0); LOCKREG(); DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0); int i=0, j=0;while(1){

j=0;for(i=0;i<16;i++){

close_seven_segment();if (j==4) {

j=0;}show_seven_segment(j,i);delay_loop();j++;

Page 13: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

}

}}

Bagan 11 source code percobaan 2.2

2.3 Seven Segment (counter 0 -> 9999)Percobaan ini akan menamilkan program counter dari angka 0 hingga 9999.

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

void delay_loop(void){

uint32_t i,j;for(i=0;i<5;i++){

for(j=0;j<1000;j++);}

}

int main(void){

UNLOCKREG(); DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); DrvSYS_Delay(5000); DrvSYS_SelectHCLKSource(0); LOCKREG();

DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0);

int digit=0, value=0;while(1){

digit = (value/1000 %10);close_seven_segment();show_seven_segment(3, digit);delay_loop();

digit = (value/100 %10);close_seven_segment();show_seven_segment(2, digit);delay_loop();

digit = (value/10 %10);close_seven_segment();show_seven_segment(1, digit);delay_loop();

digit = (value %10);close_seven_segment();show_seven_segment(0, digit);delay_loop();

if (value==9999){value=0;

}else{value++;

}

Page 14: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

}}

Bagan 12 source code percobaan 2.3

Modul 3Keypad Matrix 3x3

TujuanMemahami konsep masukan memalui keypad matrix 3x3 dan menampilkannya melalui seven segment.

PendahuluanPada learning board NuMicro 1xx terdapat Keypad Matrix yang terhubung dengan GPIO Port A pin 0 sampai 2 sebagai kolom, dan GPIO Port A pin 3 sampai 5 sebagai baris. Berikut skema dari rangkaian keypad matrix 3x3 pada learning board NuMicro 1xx.

Bagan 13 Skema rangkaian keypad matrix 3x3 pada NuMicro 1xx Learning Board

Pengaturan Repository

Page 15: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Untuk menggunakan keypad matrix 3x3 pada NuMicro 1xx Learning Board, hal pertama yang harus kita lakukan adalah memasukkan library ScanKey.h dan ScanKey.c. Setelah dilakukan pemanggilan library tersebut, pengguna dapat memanggil fungsi Scankey() saat akan menggunakan keypad matrix tersebut.

Contoh program:

_key = Scankey();if(_key==1){

show_seven_segment(0,_key);}close_seven_segment();

Page 16: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

3.1 Keypad + Seven SegmentProgram berikut akan menampilkan angka pada seven segment sesuai dengan tombol keypad yang ditekan.

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

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);OpenKeyPad();

int8_t _keypressed;while(1)

{_keypressed = Scankey();show_seven_segment(0,_keypressed);DrvSYS_Delay(5000);close_seven_segment();

}}

Bagan 14 source code percobaan 3.1

3.2 Keypad sebagai triggerUntuk percobaan kali ini kita akan menggunakan keypad sebagai trigger untuk menampilkan 2 program yang berbeda, gambarannya sebagai berikut, ketika kita menekan keypad 1, maka akan menampilkan angka 0 sampai F mulai dari kolom paling kanan menuju kolom paling kiri, dan ketika keypad 2 ditekan akan terjadi sebaliknya.

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

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);OpenKeyPad();

int8_t _keypad;while(1)

{close_seven_segment();_keypad = Scankey();if(_keypad==1){

int i=0, j=0, k=0;for(i=0;i<16;i++){

Page 17: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

close_seven_segment();show_seven_segment(j,i);DrvSYS_Delay(500000);if(i>0){

k=(i+1)%4;if(k==0){j++;}

}}

}else if(_keypad==2){

int i=0, j=3, k=0;for(i=0;i<16;i++){

close_seven_segment();show_seven_segment(j,i);DrvSYS_Delay(500000);if(i>0){

k=(i+1)%4;if(k==0){j--;}

}}

} }}

Bagan 15 source code percobaan 3.2

Page 18: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Modul 4LCD

TujuanMemahami penggunaan LCD pada mikrokontroler ARM Cortex M0 NuMicro 1xx Series, yang dihubungkan dengan masukan dari keypad matrix 3x3.

PendahuluanPada learning board NuMicro 1xx series terdapat sebuah dot matrix LCD panel. Berikut adalah skema rangkaian dot matrix LCD yang ada pada learning board NuMicro1xx.

Bagan 16 skema rangkaian LCD pada NuMicro 1xx Series

Page 19: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Pengaturan Repository

4.1 LCDUntuk menggunakan dot Matrix LCD, library dari LCD perlu dipanggil terlebih dahulu, library yang kita gunakan adalah LCD_Driver.h. Kemudian tambahkan file LCD_Driver.h, LCD_Driver.c dan ASCII_Table.c pada bagian project.

Setelah semua file dan library tersebut dimasukkan, tuliskan listing program berikut di main.c

#include "DrvGPIO.h"#include "DrvSYS.h"#include "LCD_Driver.h"

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);

Page 20: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);

Initial_panel();clr_all_panel();

print_lcd(0, "Praktikum");print_lcd(1, "Mikrokontroler");print_lcd(2, "ARM Cortex");print_lcd(3, "uC M0 32 Bit");

while(1) {

}}

Bagan 17 source code percobaan 4.1

Pada percobaan diatas, dengan menggunakan fungsi print_lcd(), LCD akan menampilkan suatu kalimat dalam 4 baris dengan layar latar belakang menyala terang.

4.2 LCD dan KeypadPada percobaan kali ini kita akan menghubungkan LCD dengan Keypad, sehingga tombol yang ditekan melalui keypad matrix 3x3 akan ditampilkan ke layar dot matrix LCD. Berikut source code programnya, tuliskan dalam main.c.

#include "DrvGPIO.h"#include "DrvSYS.h"#include "LCD_Driver.h"#include "ScanKey.h"

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);

DrvGPIO_Open(E_GPD,14,E_IO_OUTPUT);DrvGPIO_ClrBit(E_GPD,14);

OpenKeyPad();Initial_panel();clr_all_panel();

print_lcd(0, "Praktikum uC");print_lcd(1, "ARM Cortex");print_lcd(2, "M0 32 Bit");print_lcd(3, "Key Pressed:");

while(1) {

char getKeyPressed=Scankey();if(!getKeyPressed){

Show_Word(3, 12, 32);}else

Page 21: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

{Show_Word(3, 12, 48 + getKeyPressed);

} }}

Bagan 18 source code percobaan 4.2

Percobaan diatas akan menampilkan nilai keypad yang ditekan kelayar LCD menggunakan fungsi Show_Word().

4.3 LCD DrawUntuk percobaan kali ini kita akan menggunakan fungsi LCD_Draw(), fungsi ini memanfaatkan *buffer array yang dibentuk dengan matrik 8x128.

#include "DrvGPIO.h"#include "DrvSYS.h"#include "LCD_Driver.h"

int main(void){

UNLOCKREG();DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);DrvSYS_Delay(5000);DrvSYS_SelectHCLKSource(0);LOCKREG();DrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);

DrvGPIO_Open(E_GPD,14,E_IO_OUTPUT);DrvGPIO_ClrBit(E_GPD,14);Initial_panel();clr_all_panel();

char b[128*8];unsigned int i;for(i=0;i<=(128*8);i++){

b[i]=0x0;}//b[0]=0x18; b[1]=0x24; b[2]=0x42; b[3]=0x81; b[4]=0x81; b[5]=0x42;

b[6]=0x24; b[7]=0x18;//b[0]=0x3c; b[1]=0x42; b[2]=0x81; b[3]=0x81; b[4]=0x81; b[5]=0x81;

b[6]=0x42; b[7]=0x3c;b[0]=0x3c; b[1]=0x42; b[2]=0x8d; b[3]=0xa1; b[4]=0xa1; b[5]=0x8d; b[6]=0x42;

b[7]=0x3c;//b[128*1+63]=0xff;//b[128*2+1]=0xff;draw_LCD(b);

while(1) {

//sengaja dikosongkan }}

Bagan 19 source code percobaan 4.3

Page 22: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

MODUL 5ADC

TujuanPraktikan memahami penggunaan ADC pada NuMicro 1XX Series Development Board dengan menggunakan CoCoox IDE

Pada NuMicro 1XX series terdapat variable resistor yang terhubung dengan port ADC dengan resolusi 12bit pada GPA.7

Gambar 5 berikut ini merupakan konfigurasi ADC pada NuMicro 1XX series Development Board

bagan 20 Konfigurasi ADC pada NuMicro 1XX series Development Board

Pengaturan Repository

Page 23: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

Berikut program yang digunakan untuk menginisialisasi fungsi ADC pada NuMicro 1XX series:

#include "stdio.h"#include "DrvADC.h"#include "DrvSYS.h"#include "DrvGPIO.h"#include "LCD_Driver.h"

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

void AdcIntCallback(uint32_t u32UserData){

u16ConversionData = DrvADC_GetConversionData(7);//ambil data hasil konversi

sprintf(temp,"ADC7 : %d",u16ConversionData);//gabungkan data ADC dengan tulisan ADC7

clr_all_panel();//hilangkan semua karakter di LCD

print_lcd(0, temp);//atur kursor di baris paling atas

DrvSYS_Delay(500000);//tunda selama 500ms

}

int main(void){

UNLOCKREG(); //disable register protection : 59H, 16H dan 88h di alamat 0x5000_0100DrvSYS_SetOscCtrl(E_SYS_XTL12M,1); //aktifkan crystal external 12MHz

//atau SYSCLK->PWRCON.XTL12M_EN = 1;DrvSYS_Delay(5000);

//tunggu sampai crystal stabilDrvSYS_SelectHCLKSource(0);

//set crystal external sebagai sumber clockLOCKREG();

//enable register protectionDrvSYS_SetClockDivider(E_SYS_HCLK_DIV,0);

//set crystal external sebagai sumber clock 12MHz

Initial_panel();//inisial LCD

Page 24: MODUL PRAKTIKUM - lab-elektro.umm.ac.idlab-elektro.umm.ac.id/files/file/data/MODUL PRAKTIKUM...  · Web viewBagan 1 Diagram Blok NuMicro NUC130/140 Series. NuC140 Learning Board

clr_all_panel();//hilangkan semua karakter di LCD

DrvGPIO_Open(E_GPA,7,E_IO_INPUT);//pastikan PortA.7 sebagai input

DrvGPIO_Open(E_GPD,14,E_IO_OUTPUT);//mengatur PortD.14 sebagai OUTPUT

DrvGPIO_ClrBit(E_GPD,14);//mengeluarkan logika LOW pada PortD.14 untuk menyalakan LED Backlight untuk

LCD

DrvADC_Open(ADC_SINGLE_END, ADC_CONTINUOUS_OP, 0x80, EXTERNAL_12MHZ, 5); //Single-End, Contiuous Cycle Scan, kanal 7, 12Mhz, pembagi 5

//clock ADC = 12MHz/(5+1) = 6MHzDrvADC_ConfigADCChannel7(EXTERNAL_INPUT_SIGNAL);

//kanal 7 terhubung ke input analog ekternalDrvADC_StartConvert();

//konversi ADC dimulaiDrvADC_EnableADCInt(AdcIntCallback, 0);

//aktifkan interrupt ADC, dan ADC_IRQHandler diarahkan ke AdcIntCallbackwhile(1)

{//sengaja dikosongkan

}}