MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan...

12
Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225 Cara Penggunaan Kit MCS51 File-file yang diperlukan: 1. usbasp-windriver.2011-05-28 2. ProgISP ver 1.72 3. MIKROC 8051 ver 2.2 : untuk anda yang menggunakan bahasa C 4. ASM51: untuk anda yang menggunakan bahasa assembler Langkah-langkah pemrograman kit Evaluation Board Mikrokontroler MCS51 (AT89S52): 1. Hubungkan Konektor ISP Downpoder ke Programmer USBAsp Susunan pin ISP pada Kit Evaluation Board Mikrokontroler AVR ATMega16 GND RST SCK MISO MOSI VCC Hubungkan pin ISP pada Kit Evaluation Board Mikrokontroler MCS51 dengan pin ISP USBasp GND---GND RST---RST SCK---SCK

Transcript of MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan...

Page 1: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Cara Penggunaan Kit MCS51

File-file yang diperlukan:

1. usbasp-windriver.2011-05-28

2. ProgISP ver 1.72

3. MIKROC 8051 ver 2.2 : untuk anda yang menggunakan bahasa C

4. ASM51: untuk anda yang menggunakan bahasa assembler

Langkah-langkah pemrograman kit Evaluation Board Mikrokontroler MCS51 (AT89S52):

1. Hubungkan Konektor ISP Downpoder ke Programmer USBAsp

Susunan pin ISP pada Kit Evaluation Board Mikrokontroler AVR ATMega16

GND

RST

SCK

MISO

MOSI

VCC

Hubungkan pin ISP pada Kit Evaluation Board Mikrokontroler MCS51 dengan pin ISP USBasp

GND---GND

RST---RST

SCK---SCK

Page 2: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

MISO---MISO

MOSI---MOSI

VCC---VCC

Gambar koneksi USBasp programmer degan kit mikrokontroler

Langkah-langkah instalasi UsbAsp downloader :

1. Pasang USB downloader 2. Install window driverusbasp-windriver.2011-05-28 3. Cek dengan device manager, harus muncul USBasp

Contoh : Pakai Bahasa C

Program: Buat program pakai mikroC PRO for 8051 untuk bahasa C, jika pakai bahasa assembler bisa pakai notepad, kemudian compile pakai ASM51

Page 3: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Klik menu Build, untuk mengubah jadi file hex, Kemudian setelah di build, jadi file hex, masukan ke IC mikrokontroler AT89S52 menggunakan USBasp programmer dan program Progrisp, seperti gambar dibawah

Untuk tipe IC, pilih AT89S52, lalu Pilih File load Flash, cari file hexnya, terus pilih tombol Auto

Page 4: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

==================================================================================

Pemrograman MCS51 (AT89S51,52 dll) dengan Bahasa C

Software yang digunakan dalam ujicoba kali ini ialah MIKROC 8051 ver 2.2. pemrograman

mikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan

menggunakan Assembler. apalagi jika kita ingin membuat perangkat yang rumit akan sangat

terasa perbedaannya.

Berikut merupakan daftar uji coba tersebut:

1. Percobaan LED

Skema Uji Coba LED

Program LED 1 menyalakan Led dengan bilangan heksa void main() { P0=0x00; // LED SEMUA ON

Page 5: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

}

Program LED 2 menyalakan sebagian Led dengan bilangan heksa void main() { P0=0xF0; // LED P0-P3 ON }

Program LED 3 menyalakan 1 Led dengan bilangan biner void main() { P0=0b11111110; // LED 1 ON }

Program LED 4 menyalakan 2 Led dengan bilangan biner void main() { P0=0b01111110; // LED 1 dan 8 ON }

Program LED 5 menyalakan Led per bit void main() { P0_0_bit=0; // LED 1 ON P0_7_bit=0; // LED 8 ON }

Program LED 6 Blinking led dengan delay void main() { while(1){ P0=0b00000000; //led ON delay_ms(1000); //tunda 1 detik P0=0b11111111; //led OFF delay_ms(1000); //tunda 1 detik }

}

2. Percobaan Switch

Page 6: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Skema Uji Coba Switch

Program Switch 1 void main() { while(1){ if(P1_0_bit==0){P0=0x00;} //jika tombol 1 ditekan LED ON } }

Program Switch 2 void main() { while(1){ if(P1_0_bit==0){P0=0x00;} //jika tombol 1 ditekan LED ON if(P1_1_bit==0){P0=0xff;} //jika tombol 2 ditekan LED OFF } }

Program Switch 3 void main() { while(1){ if(P1_0_bit==0){P0_0_bit=0;} //jika tombol 1 ditekan LED 1 ON if(P1_1_bit==0){P0_1_bit=0;} //jika tombol 2 ditekan LED 2 ON if(P1_2_bit==0){P0=0xff;} //jika tombol 3 ditekan LED OFF } }

Program Switch 4 void main() { while(1){ if(P1_0_bit==0){P0=0x00;} //jika tombol 1 ditekan led on dilepas led off else{P0=0xff;} } }

3. Percobaan LCD

Page 7: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Skema Uji Coba LCD

Program LCD 1 // lcd pinout settings sbit LCD_RS at P2_0_bit; sbit LCD_EN at P2_1_bit; sbit LCD_D7 at P2_7_bit; sbit LCD_D6 at P2_6_bit; sbit LCD_D5 at P2_5_bit; sbit LCD_D4 at P2_4_bit; void main() { lcd_init(); Lcd_Out(1, 3, "tutorial-"); //tulis di baris ke 1 kolom 3 lcd_Out(2,1, "mikrokontroler"); //tulis di baris ke 2 kolom 1 }

Program LCD 2 // lcd pinout settings sbit LCD_RS at P2_0_bit; sbit LCD_EN at P2_1_bit; sbit LCD_D7 at P2_7_bit; sbit LCD_D6 at P2_6_bit; sbit LCD_D5 at P2_5_bit; sbit LCD_D4 at P2_4_bit; void main() { lcd_init(); Lcd_Out(1, 3, "Uji coba"); //tulis di baris ke 1 kolom 3 Lcd_Cmd(_LCD_CURSOR_OFF); //matikan kursor while(1) { Lcd_Cmd(_LCD_SHIFT_RIGHT); //geser tulisan ke kanan delay_ms(1000); //tunda 1 detik } //ulangi }

Page 8: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Program LCD 3 // lcd pinout settings sbit LCD_RS at P2_0_bit; sbit LCD_EN at P2_1_bit; sbit LCD_D7 at P2_7_bit; sbit LCD_D6 at P2_6_bit; sbit LCD_D5 at P2_5_bit; sbit LCD_D4 at P2_4_bit; void main() { lcd_init(); Lcd_Out(1, 3, "Uji coba"); //tulis di baris ke 1 kolom 3 Lcd_Cmd(_LCD_CURSOR_OFF); //matikan kursor

} Command LCD lainnya :

4. Percobaan I2C RTC (Jam Digital Dengan LCD)

Page 9: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Skema Uji Coba RTC

Program Jam Digital char seconds, minutes, hours, date, month; // Global date/time variables unsigned int year; unsigned int RTCModuleAddress, YearOffset; // RTC chip description variables #define DS1307 // Uncomment this line if you use DS1307 RTC chip (mE RTC2 extra board) // Software I2C connections sbit Soft_I2C_Scl at P1_0_bit; sbit Soft_I2C_Sda at P1_1_bit; // End Software I2C connections // LCD module connections sbit LCD_RS at P2_0_bit; sbit LCD_EN at P2_1_bit; sbit LCD_D4 at P2_4_bit; sbit LCD_D5 at P2_5_bit; sbit LCD_D6 at P2_6_bit; sbit LCD_D7 at P2_7_bit; // End LCD module connections //------------------ Performs project-wide init void Init_Main() { #ifdef DS1307 RTCModuleAddress = 0xD0; YearOffset = 2000;

Page 10: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

#endif Soft_I2C_Init(); // Initialize Soft I2C communication Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear LCD display Lcd_Cmd(_LCD_CURSOR_OFF); // Turn cursor off LCD_Out(1,1,"Date:"); // Prepare and output static text on LCD Lcd_Chr(1,8,':'); Lcd_Chr(1,11,':'); LCD_Out(2,1,"Time:"); Lcd_Chr(2,8,':'); Lcd_Chr(2,11,':'); } //--------------------- Reads time and date information from DS1307 RTC void Read_Time_DS1307() { char byte_read; Soft_I2C_Start(); // Issue start signal Soft_I2C_Write(RTCModuleAddress); // RTC module address + write (R#/W = 0) Soft_I2C_Write(0); // Start from seconds byte Soft_I2C_Start(); // Issue repeated start signal Soft_I2C_Write(RTCModuleAddress+1); // RTC module address + read (R#/W = 1) byte_read = Soft_I2C_Read(1); // Read seconds byte seconds = ((byte_read & 0x70) >> 4)*10 + (byte_read & 0x0F); // Transform seconds byte_read = Soft_I2C_Read(1); // Read minutes byte minutes = ((byte_read & 0x70) >> 4)*10 + (byte_read & 0x0F); // Transform minutes byte_read = Soft_I2C_Read(1); // Read hours byte if (byte_read.B6) { // 12h format hours = ((byte_read & 0x10) >> 4)*10 + (byte_read & 0x0F); // Transform hours if (byte_read.B5) // PM flag hours = hours + 12; } else hours = ((byte_read & 0x30) >> 4)*10 + (byte_read & 0x0F); // Transform hours byte_read = Soft_I2C_Read(1); // Read weekday byte byte_read = Soft_I2C_Read(1); // Read date byte date = ((byte_read & 0x30) >> 4)*10 + (byte_read & 0x0F); // Transform date byte_read = Soft_I2C_Read(1); // Read month byte month = ((byte_read & 0x10) >> 4)*10 + (byte_read & 0x0F); // Transform month byte_read = Soft_I2C_Read(1); // Read year byte

Page 11: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

year = YearOffset + ((byte_read & 0xF0) >> 4)*10 + (byte_read & 0x0F); // Transform year Soft_I2C_Stop(); // Issue stop signal } //--------------------- Reads time and date information from RTC void Read_Time() { #ifdef DS1307 Read_Time_DS1307(); #endif } //-------------------- Output values to LCD void Display_Time() { Lcd_Chr(1, 6, (date / 10) + 48); // Print tens digit of date variable Lcd_Chr(1, 7, (date % 10) + 48); // Print oness digit of date variable Lcd_Chr(1, 9, (month / 10) + 48); Lcd_Chr(1,10, (month % 10) + 48); Lcd_Chr(1,12, ((year / 1000) % 10) + 48); // Print year Lcd_Chr(1,13, ((year / 100) % 10) + 48); Lcd_Chr(1,14, ((year / 10) % 10) + 48); Lcd_Chr(1,15, (year % 10) + 48); Lcd_Chr(2, 6, (hours / 10) + 48); Lcd_Chr(2, 7, (hours % 10) + 48); Lcd_Chr(2, 9, (minutes / 10) + 48); Lcd_Chr(2,10, (minutes % 10) + 48); Lcd_Chr(2,12, (seconds / 10) + 48); Lcd_Chr(2,13, (seconds % 10) + 48); } //----------------- Main procedure void main() { Init_Main(); // Perform initialization while (1) { // Endless loop Read_Time(); // Read time from RTC Display_Time(); // Prepare and display on LCD Delay_ms(950); // Wait 1 second } }

5. Percobaan SOUND (mikrokontroler mengeluarkan

nada)

Page 12: MIKROC 8051 ver 2.2 : untuk anda yang menggunakan · PDF filemikrokontroler AT89S51 dengan bahasa C memang lebih mudah jika dibandingkan dengan ... Program Jam Digital char seconds,

Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225

Skema Uji Coba Sound

sbit Sound_Play_Pin at P2_0_bit; /* 220.00 Hz A (La) 246.94 Hz B (Si) 261.63 Hz C (Do) 293.66 Hz D (Re) 329.63 Hz E (Mi) 349.23 Hz F (Fa) 392.00 Hz G (Sol) */ void main() { Sound_Init(); while(1){ Sound_Play(262, 250); // Frequency = 262Hz, duration = 250ms DO Sound_Play(294, 250); // Frequency = 294Hz, duration = 250ms RE Sound_Play(330, 250); // Frequency = 330Hz, duration = 250ms MI Sound_Play(349, 250); // Frequency = 349Hz, duration = 250ms FA Sound_Play(392, 250); // Frequency = 392Hz, duration = 250ms SO Sound_Play(220, 250); // Frequency = 220Hz, duration = 250ms LA Sound_Play(247, 250); // Frequency = 247Hz, duration = 250ms SI }

}