Contact: ARTRONICS, https://mikrobandung.wordpress.com/, Telp: 081.809.536.225 Cara Penggunaan Kit MCS51
File-file yang diperlukan: 1. 2. 3. 4.
usbasp-windriver.2011-05-28 ProgISP ver 1.72
MIKROC 8051 ver 2.2 : untuk anda yang menggunakan bahasa C 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
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
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
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
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
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;} else{P0=0xff;} } }
//jika tombol 1 ditekan led on dilepas led off
3. Percobaan LCD
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"); Lcd_Cmd(_LCD_CURSOR_OFF); while(1) { Lcd_Cmd(_LCD_SHIFT_RIGHT); delay_ms(1000); } }
//tulis di baris ke 1 kolom 3 //matikan kursor
//geser tulisan ke kanan //tunda 1 detik //ulangi
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)
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;
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:"); Lcd_Chr(1,8,':'); Lcd_Chr(1,11,':'); LCD_Out(2,1,"Time:"); Lcd_Chr(2,8,':'); Lcd_Chr(2,11,':');
// Prepare and output static text on LCD
}
//--------------------- 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
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)
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); Sound_Play(294, 250); Sound_Play(330, 250); Sound_Play(349, 250); Sound_Play(392, 250); Sound_Play(220, 250); Sound_Play(247, 250); }
}
// Frequency = 262Hz, duration = 250ms DO // Frequency = 294Hz, duration = 250ms RE // Frequency = 330Hz, duration = 250ms MI // Frequency = 349Hz, duration = 250ms FA // Frequency = 392Hz, duration = 250ms SO // Frequency = 220Hz, duration = 250ms LA // Frequency = 247Hz, duration = 250ms SI