Post on 08-Oct-2015
description
26/11/2013
1
WORKSHOP PEMROGRAMAN WORKSHOP PEMROGRAMAN MIKROKONTROLLER AT MEGA 8535 MENGGUNAKAN BAHASA CMENGGUNAKAN BAHASA C
Arga Dwi PArga Dwi P
PendahuluanPendahuluanAtmel, salah satu vendor yang bergerak dibidang mikroelektronika telah mengembangkan AVR Atmel, salah satu vendor yang bergerak dibidang mikroelektronika telah mengembangkan AVR
(Alf and Vegards Risc processor) sekitar tahun 1997. Berbeda dengan mikrokontroler
MCS51, AVR menggunakan arsitektur RISC (Reduce Instruction Set Computer) yang MCS51, AVR menggunakan arsitektur RISC (Reduce Instruction Set Computer) yang
mempunyai lebar bus data 8 bit. Perbedaan ini bisa dilihat dari frekuensi kerjanya, MCS51
memiliki frekuensi kerja seperduabelas kali frekuensi osilator sedangkan frekuensi kerjamemiliki frekuensi kerja seperduabelas kali frekuensi osilator sedangkan frekuensi kerja
AVR sama dengan frekuensi osilator. Jadi dengan frekuensi osilator yang sama kecepatan
AVR dua belas kali lebih cepat dibanding dengan MCS51. Secara umum AVR dibagi
menjadi 4 kelas, yaitu:
ATtiny, AT90Sxx, ATMega dan AT86RFxx.
Perbedaan antar tipe AVR adalah fitur-fitur yang ditawarkan, sedangkan dari segi arsitektur Perbedaan antar tipe AVR adalah fitur-fitur yang ditawarkan, sedangkan dari segi arsitektur
dan set instruksi yang digunakan hampir sama.
26/11/2013
2
FiturFitur 8bit AVR berbasis RISC dengan performa tinggi dan konsumsi daya
rendah.
rendah. Kecepatan maksimal 16MHz. Memori Memori 8KB Flash 512 byte SRAM 512 byte SRAM 512 byte EEPROM Timer/Counter
2 buah 8 bit timer/counter 1 buah 16 bit timer/counter 4 kanal PWM 4 kanal PWM
8 kanal 10/8 bit ADC Programable Serial USART Programable Serial USART Komparator Analog 6 pilihan sleep mode untuk penghematan daya listrik 32 jalur I/O yang bisa diprogram 32 jalur I/O yang bisa diprogram
Konfigurasi PINKonfigurasi PIN Power, VCC dan GND (Ground) Power, VCC dan GND (Ground) PORTA (PORTA0-7), merupakan pin IO dua arah
dan fungsi khusus sebagai pin masukan ADC. PORTB (PORTB0-7), merupakan pin IO dua arah
dan fungsi khusus sebagai pin Timer/Counter, komparator analog dan SPI.komparator analog dan SPI.
PORTC (PORTC0-7), merupakan pin IO dua arahdan fungsi khusus sebagaidan fungsi khusus sebagai
PORTD (PORTD0-7), merupakan pin IO dua arahdan fungsi khusus sebagaidan fungsi khusus sebagai
RESET adalah pin utk mereset mikrokontroler. XTAL1 dan XTAL2 pin untuk exsternal clock. XTAL1 dan XTAL2 pin untuk exsternal clock. AVCC adalah pin masukan untuk tegangan ADC. AREF adalah pin masukan untuk tegangan AREF adalah pin masukan untuk tegangan
referensi eksternal ADC.
26/11/2013
3
CV AVRCV AVR Code Vision AVR C Compiler (CVAVR) merupakan compiler Code Vision AVR C Compiler (CVAVR) merupakan compiler
bahasa C untuk AVR. Compiler ini cukup memadai untukbelajar AVR, selain mudah dalam penggunaan juga di dukungbelajar AVR, selain mudah dalam penggunaan juga di dukungfitur-fitur yang sangat membantu dalam pembuatan software untuk keperluan pemrograman AVR.untuk keperluan pemrograman AVR.
CVAVR ini dapat berjalan dibawah sistem operasi Windows 9x, Me, NT 4, 2000 dan XP. CVAVR ini mengimplementasikanhampir semua instruksi bahasa C yang sesuai denganhampir semua instruksi bahasa C yang sesuai denganarsitektur AVR, bahkan terdapat beberapa keunggulantambahan untuk memenuhi keunggulan spesifik dari AVR.tambahan untuk memenuhi keunggulan spesifik dari AVR.
Fitur CV AVRFitur CV AVR Mendukung hampir semua library standart bahasa C Terdapat library tambahan dari CVAVR yang mendukung dalam pemrograman Terdapat library tambahan dari CVAVR yang mendukung dalam pemrograman
AVR, yaitu: Alphanumeric LCD modules Philips I2C bus Philips I2C bus National Semiconductor LM75 Temperature Sensor Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and
DS1307 Real Time Clocks Maxim/Dallas Semiconductor 1 Wire protocol Maxim/Dallas Semiconductor DS1820, DS18S20, DS18B20 Temperature Maxim/Dallas Semiconductor DS1820, DS18S20, DS18B20 Temperature
Sensors Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs SPI Power management Power management Delays Gray code conversion
Memiliki Program Generator yang memungkinkan kita Memiliki Program Generator yang memungkinkan kitamembuat program dengan cepat.
26/11/2013
4
PEMROGRAMAN PEMROGRAMAN PEMROGRAMAN BAHASA CBAHASA CBAHASA C
StrukturStruktur
Struktur penulisan bahasa C secaraStruktur penulisan bahasa C secaraumum tersusun atas empat blok, yaitu:umum tersusun atas empat blok, yaitu: Header Header Deklarasi Global Konstanta dan atau
VariabelVariabel Fungsi dan atau Procedur (bisa dibawah Fungsi dan atau Procedur (bisa dibawah
program utama)program utama) Program Utama Program Utama
26/11/2013
5
StrukturStrukturSecara utuh adalah sebagai berikut:/* HEADER untuk memanggil library yang akan digunakan *//* HEADER untuk memanggil library yang akan digunakan */#include #include /*Deklarasi konstanta dan atau variabel global */unsigned char dt, xx;unsigned char dt, xx;char buf[33];/*Deklarasi fungsi dan atau prosedur */unsigned char lampu(unsigned char bitn)unsigned char lampu(unsigned char bitn){PORTA=bitn & 0x3C;}/*Program Utama *//*Program Utama */void main (void);/*Deklarasi konstanta dan atau variabel lokal */char data;PORTA=0x00;PORTA=0x00;DDRA=0xF0;while (1){
//. . .//. . .};
}
Tipe DataTipe DataType Size (Bits) Rangebit 1 0 , 1
char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
int 16 -32768 to 32767int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
signed long int 32 -2147483648 to 2147483647signed long int 32 -2147483648 to 2147483647
float 32 1.175e-38 to 3.402e38
double 32 1.175e-38 to 3.402e38double 32 1.175e-38 to 3.402e38
26/11/2013
6
KonstantaKonstantaPenulisan konstanta adalah sebagai berikut:Penulisan konstanta adalah sebagai berikut: Integer atau long integer dapat ditulis dengan format desimal
(contoh 1234), biner dengan awalan 0b (contoh 0b101001), (contoh 1234), biner dengan awalan 0b (contoh 0b101001), hexadesimal dengan awalan 0x (contoh 0xff) atau oktal dengan awalan 0 (contoh 0777).awalan 0 (contoh 0777).
Unsigned integer ditulis dengan diakhiri U (contoh 10000U). Long integer ditulis dengan diakhiri L (contoh 99L). Long integer ditulis dengan diakhiri L (contoh 99L). Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL). Floating point ditulis dengan diakhiri F (contoh 1.234F). Penulisan karakter konstanta harus dalam tanda kutip Penulisan karakter konstanta harus dalam tanda kutip
(contoh a). Sedangkan konstanta string harus dalam tanda kutip dua (contoh Saya Belajar C).dua (contoh Saya Belajar C).
Label,Variable,FunctionLabel,Variable,Function
Identifikasi label, variabel dan fungsi dapat Identifikasi label, variabel dan fungsi dapat berupa huruf (A...Z, a...z) dan angka (0...9), juga berupa huruf (A...Z, a...z) dan angka (0...9), juga karakter underscore (_). Meskipun begitu identifikasi hanya bisa dimulai dengan huruf atau identifikasi hanya bisa dimulai dengan huruf atau karakter underscore, dan yang lebih penting lagi karakter underscore, dan yang lebih penting lagi identifikasi ini Case is significant yaitu huruf besar identifikasi ini Case is significant yaitu huruf besar dan kecil berbeda. Misal variable1 tidak sama Variable1. Identifikasi bisa memuat karakter Variable1. Identifikasi bisa memuat karakter sebanyak 32 karakter.sebanyak 32 karakter.
26/11/2013
7
OperatorOperator
Suatu instruksi pasti terdapat operator dan operand. Operand adalah variabel atau Suatu instruksi pasti terdapat operator dan operand. Operand adalah variabel atau konstanta yang merupakan bagian pernyataan sedangkan operator adalah suatu simbol yang menyatakan operasi manakah yang akan dilakukan oleh operand tersebut. Contoh:yang menyatakan operasi manakah yang akan dilakukan oleh operand tersebut. Contoh:c = a + b;Ada tiga operand (a, b dan c) dan dua operator (= dan +).
Operator dalam C dibagi menjadi 3 kelompok yaitu: Unary Unary
Operator yang beroperasi pada satu operand, misal: -n. BinaryBinary
Operator yang beroperasi pada dua operand, misal: a n. Ternary
Operator yang memerlukan tiga atau lebih operand, misal: a = (b*c)+d.Operator yang memerlukan tiga atau lebih operand, misal: a = (b*c)+d.
Operator AritmatikaOperator AritmatikaSimbol Contoh AritmetikaSimbol Contoh Aritmetika
+ c = a + bn = n + 2
Penjumlahan
- c = a - b Pengurangan- c = a - bn = n - 2
Pengurangan
++ ++i Kenaikan (Increment), sama dengan i = i + 1
-- --i Penurunan (Decrement), sama dengan i = i - 1-- --i Penurunan (Decrement), sama dengan i = i - 1
* c = a * bn = n * 2
Perkalian
/ c = a / b Pembagian/ c = a / bn = n / 2
Pembagian
% sisa=a % b Menghasilkan sisa dari pembagian. a dan b bil. bulat
= a = b Pemberian nilai
+= a += 2 Penambahan suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a + 2
-= a -= 2 Pengurangan suatu nilai pada suatu variabel yang sudah ada sebelumnya.-= a -= 2 Pengurangan suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a - 2
*= a *= 2 Pengalian suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a * 2
/= a /= 2 Pembagian dari suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a / 2
%= a /= 2 Sisa dari suatu nilai pada suatu variabel yang sudah ada%= a /= 2 Sisa dari suatu nilai pada suatu variabel yang sudah adasebelumnya yang dibagi oleh nilai atau variabel lain.Sama dengan a = a / 2
* *pointer Menunjukan isi dari pointer
26/11/2013
8
Operator LogikaOperator LogikaSimbol Contoh Logika Pembanding
== if (a == b) Logika sama dengan, digunakan untuk pembanding.Menghasilkan nilai true jika a=b.
!= if (a != b) Tidak sama dengan. Menghasilkan nilai true jika a b.
< if (a < b) Logika lebih kecil dari. Menghasilkan nilai true jika a < b.
b) Logika lebih besar dari. Menghasilkan nilai true jika a > b.> if (a > b) Logika lebih besar dari. Menghasilkan nilai true jika a > b.
>= if (a >= b) Logika lebih besar sama dengan dari.Menghasilkan nilai true jika a b.Menghasilkan nilai true jika a b.
! if (!a) NOT
&& if (a==b && a==c) AND&& if (a==b && a==c) AND
|| if (a==b || a==c) OR
Operator Manipulasi BitOperator Manipulasi Bit~ a = ~b Complement.
b = 1100; a = 0011.b = 1100; a = 0011.
& c = a & b AND untuk manipulasi bit.a=1100; b=1001; maka c=1000.a=1100; b=1001; maka c=1000.
| c = a | b OR untuk manipulasi bit.a=1100; b=1001; maka c=1101.a=1100; b=1001; maka c=1101.
^ c = a ^ b XOR untuk manipilasi bit.^ c = a ^ b XOR untuk manipilasi bit.a=1100; b=1001; maka c=0101.
n Shift Right, manipulasi bit menggeser ke kirisejauh n bit.sejauh n bit.a=11010; n=2; maka c=0110.
26/11/2013
9
PercabanganPercabangan
if then if thenBentuk umum dari percabangan ini adalah: if (kondisi) {if (kondisi) {
// pernyataan};
Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi.Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi.Contoh:if (a
26/11/2013
10
PercabanganPercabangan switch case switch casePernyataan switch case digunakan jika terjadi banyak percabangan.Struktur penulisan pernyataan ini adalah sebagai berikut:Struktur penulisan pernyataan ini adalah sebagai berikut:
. . .switch (ekspresi) {switch (ekspresi) {
case konstanta1:pernyataan1pernyataan1
break;case konstanta2:pernyataan2pernyataan2
break;. . .case konstantaN:. . .case konstantaN:pernyataanN
break;break;}
. . .PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC akan dikirim data 0x04 jika nilai a=3;
PercabanganPercabangan Switch case defaultPernyataan switch case default hampir sama dengan switch case, yang membedakan adalah dengan adanya default. Jika tidakterdapat kondisi case yang sesuai dengan ekspresi switch maka akan menuju pernyataan yang terdapat di bagian default. Strukturterdapat kondisi case yang sesuai dengan ekspresi switch maka akan menuju pernyataan yang terdapat di bagian default. Strukturpenulisan pernyataan ini adalah sebagai berikut:
switch (ekspresi) {switch (ekspresi) {case konstanta1:
pernyataan1break;
case konstanta2:case konstanta2:pernyataan2
break;. . .. . .
case konstantaN:pernyataanN
break;break;default:
pernyataan-pernyataan;}
......PORTC akan dikirim data 0x01 jika nilai a=1,PORTC akan dikirim data 0x02 jika nilai a=2 danPORTC akan dikirim data 0x04 jika nilai a=3 dan jika kondisiPORTC akan dikirim data 0x04 jika nilai a=3 dan jika kondisicase tidak sesuai dengan ekspresi maka pernyataan di default
26/11/2013
11
PerulanganPerulangan ForPernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan. Struktur penulisan perulangan for adalah Pernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan. Struktur penulisan perulangan for adalah sebagai berikut:
. . .for (mulai; kondisi; penambahan atau pengurangan) {for (mulai; kondisi; penambahan atau pengurangan) {
pernyataan-pernyataan;};......
Mulai adalah pemberian nilai awal, kemudian kondisi adalah pengkondisi dalam for yaitu jika kondisi bernilai true maka pernyataan dalam for akan dijalankan, penambahan atau pengurangan adalah penambahan atau pengurangan terhadap nilai awal.nilai awal.Contoh:
. . .a=1;a=1;for (i=1; i
26/11/2013
12
PerulanganPerulangan Do While Do WhilePentuk perulangan ini kebalikan dari while do, yaitu pernyataan dilakukan terlebih dahulu kemudiandiuji kondisinya.diuji kondisinya.
. . .do {
pernyataan-pernyataan;pernyataan-pernyataan;}while (kondisi);while (kondisi);. . .
Contoh:. . .. . .i=1;a=1;a=1;do {
a=a*2;PORTC=a;;PORTC=a;;i++ ;
}while (i
26/11/2013
13
ProsedurProsedurProsedur adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluantertentu tanpa mengembalikan suatu nilai.. . .. . .viod nama_prosedur (parameter1, parametar2, parameterN) {Pernyataan-pernyataan;}}. . .
Contoh:. . .void delay(unsigned char i) {void delay(unsigned char i) {while (i--) {
/* penulisan untuk bahasa assembly akan dibahas tersendiri *//* penulisan untuk bahasa assembly akan dibahas tersendiri */#asm
nopnopnop
#endasm};};
}. . .
FungsiFungsiFungsi adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluantertentu dengan hasil akhir pengembalian nilai dari keperluan tersebut.. . .. . .Type data nama_fungsi (parameter1, parametar2, parameterN) {Pernyataan-pernyataan;return variable_hasil;return variable_hasil;}. . .Contoh:Contoh:. . .int luas(int pj, int lb) {
luas = pj*lb;luas = pj*lb;return luas;
}. . .. . .Pemanggilan prosedur atau fungsi langsung ditulis prosedur atau fungsinya.Contoh:Contoh:. . .delay(150); // cara memanggil prosedurdt = luas(5,10); // cara menggunakan fungsidt = luas(5,10); // cara menggunakan fungsi}. . .
26/11/2013
14
Memasukkan Bahasa Assembly
Atau kita sebut sebagai in-line assembly. Dalam pemrograman dengan bahasa C ini, Atau kita sebut sebagai in-line assembly. Dalam pemrograman dengan bahasa C ini, kita masih dapat memasukkan bahasa assembly ke dalam program C. Strukturpenulisannyapun juga mudah, yaitu:penulisannyapun juga mudah, yaitu:
. . .#asm // dimulai dengan #asm#asm // dimulai dengan #asm
nop // blok bahasa assemblynop //
#endasm // diakhiri dengan #endasm#endasm // diakhiri dengan #endasm. . .Atau, jika hanya beberapa instruksi bisa dengan cara:Atau, jika hanya beberapa instruksi bisa dengan cara:. . .#asm("nop\nop\nop")#asm("nop\nop\nop"). . .
CV AVRCV AVR
Instal Software CV AVR
Setting Programmer :
Instal Software CV AVR
Klik menu Setting, pilih Programmer.Setting Programmer : Klik menu Setting, pilih Programmer. Tampak kotak dialog Programmer Setting, dan
lakukan perubahan menjadi seperti disamping: lakukan perubahan menjadi seperti disamping: (cek di device manager COM yang dipakai oleh USB downloader)
Klik OK. Klik OK.
Setting programmer tergantung dari downloader yang kita gunakan, Setting programmer tergantung dari downloader yang kita gunakan, biasanya dicantumkan dalam CD installer Downloader, karena menggunakan software proteus setting programmer tidak perlu. software proteus setting programmer tidak perlu.
26/11/2013
15
CV AVRCV AVR
1. Pastikan tidak terdapat file/project yang terbuka, jika ada
Make New Project1. Pastikan tidak terdapat file/project yang terbuka, jika ada
yang terbuka tutup dahulu(Klik Menu File, Pilih Close Project).
2. Klik Menu File, kemudian pilih New, maka selanjutnya akan 2. Klik Menu File, kemudian pilih New, maka selanjutnya akan tampak dialog disamping:
3. Pilih Project, kemudian Klik tombol OK.3. Pilih Project, kemudian Klik tombol OK.4. Tampak Dialog untuk konfirmasi menggunakan Program
Generator atau manual. Klik tombol Yes maka tampak wizard dialog spt disamping:wizard dialog spt disamping:
5. Ubah bagian tab Chip, pilih ATmega8535 (karena kitamenggunakan ATmega8535L). Beberapa nantinya akan kitaubah sesuai dengan kebutuhan terutama clock. ubah sesuai dengan kebutuhan terutama clock.
6. Klik File, pilih Generate, Save and Exit. Simpan masing-masing dengan nama input.C (untuk file source C), input.prj (untuk file Project) dan input.cwp (untuk file Code Wizard (untuk file Project) dan input.cwp (untuk file Code Wizard Project).
7. Maka pada bagian navigasi akan tampak seperti pada gambar berikut.gambar berikut.
CV AVRCV AVR8. Klik menu Project dan pilih Configure atau klik 8. Klik menu Project dan pilih Configure atau klik
icon , maka tampak kotak Dialog Project Configure
9. Pilih tab After Make.10. Beri tanda [] Cek pada Program the Chip.11. Untuk keperluan yang lain bisa anda ubah11. Untuk keperluan yang lain bisa anda ubah
sesuai kebutuhan, misal untuk proteksi.12. SCK Freq : 230400 Hz12. SCK Freq : 230400 Hz13. Klik OK
Note: Untuk point 8 sampai 13 untuk menampilkan execute program setelah compile, karena untuk execute program setelah compile, karena untuk workshop kali ini menggunakan proteus, makatidak perlu diaktifkan.tidak perlu diaktifkan.
26/11/2013
16
ProteusProteusInstal Software ProteusInstal Software ProteusReview Tentang Software Proteus (ISIS)
ProteusProteusSetting Program At mega8535 pada proteus:Klik kiri 2 kali pada gambar IC At mega8535 Pilih file program pada kolom program fileKlik kiri 2 kali pada gambar IC At mega8535 Pilih file program pada kolom program file
26/11/2013
17
ProteusProteusMenjalankan Program Simulasi: klik tombol play yang ditunjuk gambar:
Dasar I/ODasar I/OKonfigurasi Pengaturan Register untuk Input Output
DDR bit = 1 DDR bit = 0
PORT bit = 1 Output ; High Input ; R pull-up
PORT bit = 0 Output ; Low Input ; Floating
Misal:
PORTA=0xCC;PORTA=0xCC;DDRA=0x0F;
Printah Dasar
Printah Dasar
26/11/2013
18
Dasar I/ODasar I/O
OutputPORTX = data;PORTX = data;Yaitu untuk mengirim data byte ke PortX (X= A, B, C, D).Perintah ini sama dengan out dalam bahasa assembly ATmega8535.Perintah ini sama dengan out dalam bahasa assembly ATmega8535.Inputdata_in = PINX;data_in = PINX;Yaitu mengambil data byte dari PINX (X= A, B, C, D) yang kemudian disimpan ke variable data_in.variable data_in.Perintah ini sama dengan in dalam bahasa assembly ATmega8535.
Kontrol Port I/O per bitKontrol Port I/O per bit
OutputOutput
PORTX.bitn = data;
Yaitu untuk mengirim data bit (0 atau 1) kePortX bit ke n. (X= A, B, C, D) PortX bit ke n. (X= A, B, C, D) Perintah ini setara dengan sbi dalam bahasa assembly.
Contoh:PORTB.3=1;
Artinya adalah bit 3 PORTB di beri nilai 1.
26/11/2013
19
Kontrol Port I/O per bitKontrol Port I/O per bitInput
data_in = PINX.bitn;
Yaitu mengambil data bit dari PINX (X= A, B, C, D) bit ke n kemudian disimpan ke variable data_in. kemudian disimpan ke variable data_in. Perintah ini setara dengan cbi dalam bahasa assembly.
Contoh:da ta_n= PORTB.3;
Artinya adalah, ATmega8535 mengambil data bit pada PORTB bit ke 3. Nilai dari perintah ini hanya 0 atau 1.dari perintah ini hanya 0 atau 1.
Project 1Project 1
26/11/2013
20
Project 1Project 1
Connect PORTA ke LED,sehingga PORTA diset sebagai output Connect PORTC ke Push Button, sehingga PORTC diset sebagai inputConnect PORTC ke Push Button, sehingga PORTC diset sebagai input
Project 1Project 1
Menyalakan LED melalui Push ButtonMenyalakan LED melalui Push Button
Apa Fungsi penambahan library delay.h?
26/11/2013
21
Project 1Project 1
Buatlah program sebagai berikut:Buatlah program sebagai berikut:~Jika S0 ditekan LED berkedip (looping sampai S1 ditekan).~Jika S1 ditekan LED bergeser dari kiri ke kanan (looping sampai S0 ditekan).~Jika S1 ditekan LED bergeser dari kiri ke kanan (looping sampai S0 ditekan).
Pin Configuration:Pin Configuration:S0 = PINC.0S1 = PINC.1S1 = PINC.1LED = PORTA
Note: Meskipun ketika kondisi pergeseran bit LED yang menyala masih berada ditengah, LED akan langsung berganti kedip ketika S0 ditekan. LED akan langsung berganti kedip ketika S0 ditekan.
Project 2Project 2
26/11/2013
22
Project 2Project 2
Sesuaikan dengan hardware yang kita gunakan Setting LCD Port : PORTC dan setting PORTA sebagai keypad
Project 2Project 2Logika Cara Pemrograman Keypad:~4 pin diset sebagai Output dan 4 pin lainnya di set sebagai input??~4 pin diset sebagai Output dan 4 pin lainnya di set sebagai input??
26/11/2013
23
Project 2Project 2Program menampilkan data keypad ke lcd
Program Utama
Project 2Project 2Program cek_keypad();
26/11/2013
24
Project 2Project 2
Program Kalkulator Sederhana penambahan dan pengurangan
Rule:Rule:Input Error Jika :~ Memasukkan 5 digit atau lebih tiap variabel.~ Memasukkan 5 digit atau lebih tiap variabel.~ Menekan tombol selain angka 0 sampai 9, plus, minus, dan sama dengan.~ Memasukkan lebih dari 2 varibel penambahan atau pengurangan.~ Memasukkan lebih dari 2 varibel penambahan atau pengurangan.~ Memberi nilai minus pada variabel.~ Menekan tombol pengurangan atau penjumlahan dua kali.
Program : ...../Program Lesson/Lesson 2
Project 3Project 3
26/11/2013
25
Project 3Project 3
Setting PORTA.0 sebagai output (connect to oscilloscope).Setting PORTA.0 sebagai output (connect to oscilloscope).Setting ADC Enable (use 8 bit).Setting LCD di PORTC.Setting LCD di PORTC.
Project 3Project 3
ADC ??Penggunaan ADC ini sangat banyak, terutama dalam bidang pengukuran. Banyak keluaran sensor yang
ADC ??bidang pengukuran. Banyak keluaran sensor yangberupa masih analog yang harus dikonversi ke digitalagar dapat di olah mikrokontroller.agar dapat di olah mikrokontroller.
Input ADC adalah di PORTA
Fitur dari ADC ATMega8535 adalah sebagai berikut: Resolusi 10 bit Resolusi 10 bit Waktu konversi 65 260 s 8 ch input 8 ch input 0-Vcc input ADC 3 Mode pemilihan tegangan referensi 3 Mode pemilihan tegangan referensi
26/11/2013
26
Project 3Project 3
VCCRangkaian Pembagi Tegangan VCCDengan dasar pembagi tegangan kita bisa
Rangkaian Pembagi Tegangan
PORTA.n
Dengan dasar pembagi tegangan kita bisa memberi tegangan yang bervariasi ke ADC.
R VR50kVcc
RRRVOUT
21
2
RR 21
Ada beberapa register yang harus diatur jika akan menggunakan ADC, namun sekali lagi kita sangat terbantu dengan wizzard dari Code Vision AVRAVR
Project 3Project 3Program Menampilkan data adc ke LCD
Main ProgramMain Program
26/11/2013
27
Project 3Project 3PWM?? (Pulse Width Modulation)
PWM, Pulse-Width Modulation, adalah salah satu jenis modulasi. Modulasi PWM dilakukan dengan cara merubah lebar pulsa dari suatu pulsa data. Total 1 perioda (T) pulsa dilakukan dengan cara merubah lebar pulsa dari suatu pulsa data. Total 1 perioda (T) pulsa dalam PWM adalah tetap, dan data PWM pada umumnya menggunakan perbandingan pulsa positif terhadap total pulsa.
Penggunaan PWM:pulsa positif terhadap total pulsa.
Penggunaan PWM:~PWM sebagai data keluaran suatu perangkat. PWM dapat digunakan sebagai data dari suatu perangkat, data direpresentasikan dengan lebar pulsa positif (Tp).~PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM ~PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM pun dapat digunakan sebagai data masukan sebagai pengendali suatu perangkat. Salah satu perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor satu perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor DC Servo. Motor DC Servo itu sendiri memiliki dua tipe: 1. Kontinyu, 2. Sudut. Pada tipe 1., PWM digunakan untuk menentukan arah Motor DC Servo, sedangkan pada tipe 2., PWM digunakan untuk menentukan posisi sudut Motor DC Servo.digunakan untuk menentukan posisi sudut Motor DC Servo.~PWM sebagai pengendali kecepatan Motor DC bersikat. Motor DC bersikat atau Motor DC yang biasa ditemui di pasaran yang memiliki kutub A dan kutub B yang jika diberikan bedapotensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC potensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC jenis ini akan ada waktu antara saat beda potensial diantara keduanya dihilangkan dan waktu berhentinya. Prinsip inilah yang digunakan untuk mengendalikan kecepatan Motor DC jenis ini dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin DC jenis ini dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin cepat putaran Motor DC. Untuk mendapatkan putaran Motor DC yang halus, maka perlu dilakukan penyesuaian Frekuensi (Perioda Total) PWM-nya.
Project 3Project 3
PWM 50%
PWM 30%
26/11/2013
28
Project 3Project 3Program output PWM menggunakan Timer 0 dengan referensi adc input
Project 4Project 4
26/11/2013
29
Project 4Project 4Decoder 74LS139Decoder 74LS139
Dari Tabel Kebenaran bisa kita amatifungsi dari IC 74LS139. Bila melihat hardware sebelumnya, PA0 disambunghardware sebelumnya, PA0 disambungKe 1A, PA1 disambung ke 1B, PA2 disambung ke 1G. Output yang dipakaidisambung ke 1G. Output yang dipakai1Y2 dan 1Y3. maka:
Project 4Project 4H-Bridge
H bridge ini terdiri dari dua transistor NPN dan dua transistor PNP. Agar lebih mudah dalam memahami rangkaian anggap saja Transistor tersebut sebagai saklar. T1 dan mudah dalam memahami rangkaian anggap saja Transistor tersebut sebagai saklar. T1 dan T3 akan Aktif jika diberi logika low, T2 dan dan T4 akan aktif jika diberi logika high, SehinggaUntuk menggerakkan motor ke arah kanan X1=L , X2=L, X3=H, X4=H, dan sebaliknya untukUntuk menggerakkan motor ke arah kanan X1=L , X2=L, X3=H, X4=H, dan sebaliknya untukMenggerakkan motor ke kiri X1=H, X2=H, X3 =L, X4=L. Untuk mengerem motor X1=L, X2=L,X3=L, X4=L.X3=L, X4=L.
26/11/2013
30
Project 4Project 4
Motor bergerak ke kanan Motor bergerak ke kiri
Motor NgeremMotor Ngerem
Project 4Project 4
Setting ADC enable Setting LCDSetting PORTA
26/11/2013
31
Project 4Project 4Header program Main program