Archive for the ‘MikroController’ Category

PPI 8255 adalah suatu komponen parralel input/output port dalam satu chip yang dapat di program inpu/oututnya. PPI 8255 memiliki 24 pin I/O yang dibagi menjadi tiga port masing-masing 8 bit. Port – port tersebut adalah port A (PA0-PA7), port B (PB0-PB7) dan port C (PC0-PC7). Sebagai jalur untuk transfer data dari dan ke PPI 8255 disediakan saluran 8 bit bus data (D0-D7). Bus data dari PPI ini dapat dihubungkan langsung dengan bus data dari mikrokomputer.
 Gambar PPI 8255
Keterangan:
1.Bus Alamat
PA-PA0 & PB7 – PB0 & PC7 – PC0 adalah Terminal I/O port.
2.Bus Data
D7 – D0 adalah Data Bus
3.Bus Kontrol: /CS, /WR, /RD dan RESET
CS (Chip Select) adalah  Jika CS di set “0” maka PPI akan bekerja.
RD(Read) adalah Jika RD di set “0” maka CPU Komputer sedang membaca data dari PPI 8255.
WR(Write) adalah jika diset “0” maka CPU Komputer sedang menulis data ke PPI 8255.
4.A0 – A1 adalah Kombinasi mereka digunakan untuk memilih Port yang mana yang akan di gunakan.
5. Vcc dan GND adalah Terminal Tegangan Suplai.
Operasi Dasar PPI 8255 dapat di jelaskan dari gambar dibawah ini:
Penjelasan:
A1=0; A0=0; ==> memilih port A
A1=0; A0=1; ==> memilih port B
A1=1; A0=0; ==> memilih port C
A1=1; A0=1; ==> memilih Control Word ( CW )

ARSITEKTUR PPI 8255

Deskripsi Operasional PPI 8255

Kontrol Group A dan Group B

  Kontrol group A mengontrol mode transfer data (dari atau ke) 8 bit port A dan 4 bit dari port C upper. Sedangkan kontrol group B mengontrol mode transfer data (dari atau ke) 8 bit port B dan 4 bit dari port C lower. Kontrol data yang dituliskan dari kontrol register akan menentukan karakteristik pengoperasian PPI. Pada gambar tersebut terlihat D5-D7 digunakan untuk mengontrol grup B. D7 menentukan port C lower (PC0-PC3), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. D6 menentukan port B (PB0-PB7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. D5 digunakan untuk memilih mode port B yang diinginkan, yakni mode 0 atau mode 1. D1 sampai D4 digunakan untuk mengontrol grup A. D4 menentukan port C upper (PC4-PC7), logic 1 diprogram sebagai masukan dan logic 0 dipogram sebagai keluaran. D3 menentukan port A (PA0-PA7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. Sedangkan D1 dan D2 akan menentukan mode untuk group A; bila 00 berarti modus 0, bila 01 berarti modus 1, dan bila 1X berarti modus 2. Modus 0 dinamakan simple input/output. Bila diprogram sebagai keluaran, data yang ada di port keluaran akan ditahan, sedangkan bila diprogram sebagai port masukan, masukan ini tidak ditahan. Sedangkan D0 adalah modus set flag. D0 ini harus selalu berlogic 1 agar PPI dapat beroperasi.

 Ada tiga mode operasi yang dapat dipilih oleh sistem perangkat lunak untuk mengoperasikan PPI 8255 yaitu:
Mode 0 – Basic Input/Output
Pada mode ini port A,Port B, dan Port C dapat di set sebagai input atau output. Mode ini paling sering digunakan dalam aplikasi kontrol.

Mode 1 – Strobe Input/Output.
Mode ini digunakan untuk membuat port input atau output parallel menggunakan sinyal handshaking dan sinyal interupsi. Port yang bisa digunakan adalah Port A dan PortB. sedangkan PortC sebagai sinyal handshaking.
Mode 2 – Bidirectional Bus
Mode ini digunakan untuk komunikasi dua arah dan port yang bisa dugunaka adalah PortA.
Mode – mode ini dapat dipilih dengan memberikan control word pada saat inisialisasi. Control word yang diberikan cukup sekali pada awal PPI ini diaktifkan. Selain itu selama Program sedang berjalan, PPI 8255 sewaktu – waktu dapat diubah mode operasinya dengan memberikan sebuah control word lagi. tersedianya fasilitas ini memungkinkan PPI 8255 dapat dimanfaatkan untuk melayani berbagai keperluan interfacing dengan program subroutin yag berada dalam sebuah sistem rangkaian.
Iklan

With a microcontroller system AT89c2051 and an LCD display we can create a digital frequency counter which can measure frequencies up to 250KHz. LCD is used LM16200.

LCD LM16200
LM16200 LDC Pic

Table LM16200.

Pin LCD LM16200

Scheme of frequency counter digital using AT89c2051 are as follows:

Frekuensi Counter DigitalSkema Rangkaian Frekuensi Counter Digutal

 

AT89c2051 to program, we use the Bascom 8051, the following programs Frequency caunter Digital Using AT89c2051:

‘——————————————————–
‘ file: efy20fm24.BAS 25-12-05
‘ Frequency Meter Program using AT89c2051 micro controller
‘ written using bascom-51 from http://www.mcselec.com holland
‘ an embedded visual basic compiler for 8051 micro
‘ controllers
‘ by K.S.Sankar Web: http://www.mostek.biz
‘——————————————————
‘ Connect the timer0 input P3.4 to a frequency generator
‘ with 24 mhz xtal accuracy ok upto 250khz
‘ define crystal speed and include file
$regfile = “89c2051.dat”
$crystal = 24000000
‘ define variables used
Dim A As Byte
Dim C As Long , D As Long
Dim Count As Word
Dim T0ic As Long
Dim Delayword As Word

‘ Initialize variables
Count = 0
T0ic = 0
D = 0
‘ initialize ports
P1 = 0
P3 = 255
‘ configure lcd display
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
Cls
‘clear the LCD display
Lcd ” EFY Freq Meter ”
‘ define timer0
Config Timer0 = Counter , Gate = Internal , Mode = 1
‘Timer0 = counter : timer0 operates as a counter
‘Gate = Internal : no external gate control
‘Mode = 1 : 16-bit counter
‘ set t0 internal interrupt
On Timer0 Timer_0_overflow_int
‘ interrupt will be generated on every 65536 count
Priority Set Timer0
Enable Interrupts
Enable Timer0

Counter0 = 0
‘clear counter
Start Counter0
‘enable the counter to count
Do
‘set up a 1 sec accurate DO NOTHING loop
Enable Interrupts
‘wait 1 as per BASCOM-51 is not accurate
For Delayword = 1 To 45440
Next Delayword
Disable Interrupts
C = Counter0
‘get counter value
D = T0ic * 65536
Lowerline
C = C + D
T0ic = 0
Lcd ” ”
Lowerline
‘ show the frequency
Lcd “f=” ; C ; ” Hz”
Waitms 255
Waitms 255
C = 0
Counter0 = 0
Start Counter0
‘re-start it because it was stopped by accessing the COUNTER
Loop

‘ timer0 int subroutine
Timer_0_overflow_int:
Rem timer0 overflow ( 65535 ) interrupt comes here
‘ increment the variable
Incr T0ic
Return
End
‘ end of program
‘ uses 1106 bytes of program memory

Sample Electronics Programmer

This is the schematic for the AVR Parallel Port Programmer, also called the Sample Electronics or DT006 programmer, it can be used with the popular ISP programmers Bascom and PonyProg

se_avr_prog_cable

IC-Prog Programmer

This is another AVR Parallel Port Programmer, also called the FunCard Programmer, it can be used with the programmer software Ic-Prog

Parallel Port Programmer Funcard



Gambar rangkaian sensor suara

Maaf saja jika apa yang saya hidangkan diblog ini seperti rangkaian-rangkaian sensor mempunyai skema yang mirip antara satu dengan yang lain, sehingga anda merasa tidak variatif dan monoton. Jujur saja saya merancang sendiri kebanyakan dari rangkaian-rangkaian yang ada di blog ini, jadi jangan heran jika pada rangkaian sensor semuanya hampir mempunyai konsep yang sama. Bagi anda seorang pemula yang ingin mempelajari dan memahami prinsip kerja dari rangkaian sensor, saya rasa rangkaian-rangkaian sensor yang ada di blog ini cukup untuk merangsang daya analisa anda mengenai rangkaian elektronika. Seperti yang saya katakan sebelum-sebelumnya bahwa rangkaian sensor itu hanya berbeda pada bagian peng-indra atau perasa atau yang disebut komponen sensornya. Untuk selanjutnya anda hanya memikirkan bagaimana supaya dengan perubahan sedikit yang terjadi pada input komponen sensor dapat anda gunakan untuk memicu suatu rangkaian switching baik itu transistor, IC atau komponen yang lain dapat bekerja.

 

Rangkaian sensor suara diatas sangat mirip dengan rangkaian sensor sentuh yang saya buat dan tampilkan di blog ini. Keduanya saya gunakan rangkaian monostable IC555 sebagai penentu lamanya rangkaian alarm diaktifkan setelah menerima satu kali picu pada bagian input sensor. Anda bisa saja tidak menggunakan rangkaian monostable dan langsung menggantinya dengan lampu atau rangkaian alarm. Tapi ingat bahwa lampu atau rangkaian output lainnya yang anda pasang akan langsung mati pada saat input sensor berubah kembali. Atau anda menggunakan rangkaian penahan aktif yang lain seperti rangkaian JK flip-flop dan flip-flop yang lain. Hal itu tergantung juga pada kondisi yang anda inginkan pada bagian output, apakah rangkaian output akan diaktifkan selama jangka waktu tertentu atau akan diaktfkan selamanya sampai diadakan reset kembali pada rangkaian sensor tersebut.

 

Rangkaian di atas memanfaatkan mikrofon sebagai alat pengubah suara menjadi gelombang listrik. Gelombang listrik yang dihasilkan oleh mikrofon sangat kecil sekali dan berbentuk bolak balik atau sinus. Gelombang listrik sinus ini kemudian diloloskan melalui kapasitor C3 untuk kemudian diperkuat oleh rangkaian penguat darlington yang terdiri dari transistor Q1 dan Q2. Kolektor dari transistor Q2 langsung dikopel dengan input pemicu rangkaian monostable. Rangkaian monostable tersebut akan menghasilkan output yang positif jika pada bagian triggernya (pin 2) berubah dari logika 1 ke 0. Jika kita amati pada saat rangkaian sensor tanpa sinyal input maka kolektor-emitor transistor Q2 akan seperti saklar terbuka (kondisi cut-off), dengan kata lain idealnya tegangan pada kolektor akan sebesar tegangan supply. Tapi karena kolektor tersebut paralele dengan input IC 555 maka bisa saya pastikan tegangan pada kolektor akan berkurang pengaruh hubungan parallel keduanya. Tetapi dengan demikian tegangan kolektor akan memberikan kondisi tinggi pada input monostable (pin 2). Pada saat sinyal suara dari input sensor membuat transistor Q2 jenuh maka hubungan antara kolektor dan emitor idealnya bagai seutas kawat, sehingga tegangan pada kolektor akan 0 volt. Dengan begitu rangkaian monostable akan terpicu dan mengaktifkan rangkaian output (pin 3) selama waktu yang ditentukan oleh R1 dan C!. Jika anda ingin mengkondiskan lebih lama, anda cukup memperbesar nilai dari R1 dan atau C1.

 

 

DAFTAR KOMPONEN :

 

1. IC 555

2. Transistor : Q1,Q2 dan Q3 semuanya BC 541

3. Resistor : R1 (100K), R2 (100K), R3 (10K), R4 (1K), R5 (1K) dan potensio VR1 (100K)

4. Kapasitor : C1 (220 µF), C2 (0.01 µF) dan C3 (100 µF)

5. Dioda : D1 (IN 4001)

6. Relay 9 volt

7. Mikrofon

8. Rangkaian alarm (sesuai selera)

Jika rangkaian yang anda buat tidak sensitif atau terlalu sangat sensiti, cobalah anda bereksperimen dengan menganti nilai R2 dan R5 serta VR1 dan R3 jika dibutuhkan. Yang penting yang anda harus pahami adalah bagaimana supaya memposisikan tegangan pada kolektor Q2 tidak sampai langsung berlogika rendah dan pada titik kritis sesuai dengan yang anda harapkan. Jika rangkaian telah bekerja dengan baik, cobalah anda lakukan analisa pada jenis-jenis suara yang bisa anda ciptakan seperti suara pelan, keras, melengking, efek bass.dan lain sebagainya. Asal jangan sampai menjerit-jerit cak wong gilo..hehe. Kemudian tarik kesimpulan dari analisa tersebut. Ingin download rangkaian sensor suara tinggal di copy aja…

kita akan bergerak ke interfacing LED dot matriks layar. LED dot matriks adalah sarana yang sangat populer menampilkan informasi seperti itu memungkinkan teks baik statis dan animasi dan gambar. Mungkin, Anda telah menemukan mereka di pompa bensin menampilkan harga gas, atau di tempat-tempat umum dan di sepanjang jalan raya, menampilkan iklan pada panel dot matrix besar. Dalam percobaan ini, kita akan membahas tentang struktur dasar dari sebuah monokrom (warna tunggal) LED dot matrix dan interface dengan mikrokontroler untuk menampilkan karakter statis dan simbol. Kami akan mencakup hal-hal animasi dalam tutorial berikutnya. Saya menggunakan mikrokontroler PIC18F2550 pada StartUSB untuk PIC papan untuk demonstrasi, namun teknik ini berlaku untuk setiap mikrokontroler lain yang memiliki cukup I / O pin untuk drive LED matriks.

Interfacing layar LED dot matriks dengan mikrokontroler PIC

Teori LED dot matriks layar
Dalam layar dot matrix, beberapa LED yang kabel bersama-sama dalam baris dan kolom. Hal ini dilakukan untuk meminimalkan jumlah pin yang diperlukan untuk mengusir mereka. Misalnya, 8 × 8 matriks LED (ditampilkan di bawah) akan membutuhkan 64 I / O pin, satu untuk setiap pixel LED. Dengan kabel semua anoda bersama-sama dalam baris (R1 melalui R8), dan katoda dalam kolom (C1 melalui C8), jumlah yang diperlukan pin I / O dikurangi menjadi 16. Setiap LED ditujukan demi baris dan jumlah kolom. Pada gambar bawah ini, jika R4 adalah ditarik tinggi dan C3 ditarik rendah, LED di baris keempat dan kolom ketiga akan dihidupkan. Karakter dapat ditampilkan oleh pemindaian cepat baik baris atau kolom. Tutorial ini akan membahas metode pemindaian kolom.

 
Struktur dari 8×8 LED dot matriks

Matriks LED digunakan dalam percobaan ini adalah ukuran 5 × 7. Kita akan belajar bagaimana menampilkan karakter yang masih dalam format standar 5 7 × pixel. Gambar di bawah menunjukkan yang LED harus diaktifkan untuk menampilkan abjad Inggris ‘A’. Para 7 baris dan 5 kolom dikendalikan melalui pin mikrokontroler. Sekarang, mari kita lihat secara detail cara kerjanya.
Misalkan, kita ingin menampilkan A. alfabet Kami akan memilih kolom C1 (yang berarti C1 ditarik rendah dalam kasus ini), dan kolom hapus lainnya dengan memblokir jalan tanah mereka (salah satu cara untuk melakukan hal itu adalah dengan menarik C2 melalui C5 pin untuk tinggi logika). Sekarang, kolom pertama aktif, dan Anda perlu mengaktifkan LED di baris R2 melalui R7 kolom ini, yang dapat dilakukan dengan menerapkan tegangan bias maju untuk baris ini. Selanjutnya, pilih kolom C2 (dan hapus semua kolom lainnya), dan menerapkan bias maju ke R1 dan R5, dan sebagainya. Oleh karena itu, dengan memindai seluruh kolom cepat (> 100 kali per detik), dan menyalakan LED masing-masing di setiap baris kolom itu, kegigihan visi datang untuk bermain, dan kami merasakan tampilan gambar seperti yang masih.

Sebuah standar 5×7 dot matriks layar LED struktur

Tabel di bawah ini memberikan tingkat logika untuk diterapkan ke R1 melalui R7 untuk setiap kolom untuk menampilkan abjad ‘A’.

 

Row nilai untuk menampilkan abjad A

 
Scanning seluruh kolom dan makan dengan nilai-nilai baris yang sesuai

Anda harus telah mencatat bahwa di setiap baris, satu pin adalah sumber arus hanya satu LED pada suatu waktu, tapi pin kolom mungkin harus tenggelam arus dari lebih dari satu LED. Misalnya, kolom C1 harus dapat tenggelam arus dari 6 LED sementara menampilkan ‘A’ alfabet. I / O Sebuah pin mikrokontroler tidak dapat tenggelam ini banyak saat ini, array transistor sehingga eksternal yang diperlukan. Saya menggunakan ULN2003A IC yang memiliki tujuh built-in array transistor Darlington (lihat di bawah). Masukan dari ULN2003A tinggi aktif. Ini berarti pin input harus disertakan dengan logika yang tinggi untuk membawa pin output yang sesuai ke tanah. Skema dari array transistor Darlington dalam chip ULN2003A ditampilkan di bawah.

 
Pin diagram dan skematik ULN2003A (Darlington transistor array)

Sirkuit Pengaturan
Setup sirkuit untuk percobaan ini cukup sederhana. Anda membutuhkan tujuh 330 Ω resistor secara seri dengan R1 baris melalui R7 untuk membatasi arus yang melalui LED. Kemudian baris yang didorong oleh RB0 melalui RB6 pin dari PIC18F2550. Kolom terhubung ke lima output dari ULN2003A. Pin input yang sesuai lima ULN2003A IC dikendalikan oleh RA0 melalui RA4 pin dari PIC18F2550. Mikrokontroler akan, oleh karena itu, scan di kolom dengan mengirimkan bit sesuai dengan Porta. Misalnya, pengaturan RA0 ke 1 dan kliring RA1 melalui RA4 bit, akan memilih kolom pertama. Mikrokontroler akan menunggu sekitar 1 ms sebelum beralih ke kolom berikutnya. Pada setiap kolom, mikrokontroler akan menampilkan nilai baris yang sesuai di PORTB untuk menyalakan LED yang sesuai dalam kolom yang diperlukan untuk menampilkan karakter khusus. Beralih antara kolom cukup cepat untuk menipu mata manusia dan karakter stabil ditampilkan.


Circuit diagram untuk interfacing LED dot matriks 5×7 dengan PIC18F2550

 
Sirkuit Setup menampilkan papan StartUSB dengan LED dot matriks 6×7 (kolom keenam dibuang di sini)

Perangkat Lunak
Bagian utama dari percobaan ini adalah rutin perangkat lunak untuk memindai kolom dan pakan baris dengan nilai yang sesuai. Nilai-nilai baris-kolom khusus untuk menampilkan karakter dapat didefinisikan baik dalam RAM atau disimpan dalam memori program dalam kasus on-board RAM tidak cukup memadai. Dalam MikroC, variabel yang disimpan dalam RAM dan konstanta yang disimpan dalam memori program. Jadi, jika PIC Anda tidak memiliki RAM yang cukup, Anda dapat mendefinisikan sebuah array konstan untuk menyimpan nilai-nilai baris sehingga bagian dari memori program ditempati oleh itu untuk membebaskan RAM on-board. PIC18F2550 memiliki cukup RAM (2 KB), jadi saya telah menggunakan RAM untuk menyimpan nilai-nilai baris untuk huruf A sampai Z. Berikut bagaimana saya mendefinisikan dalam MikroC,

unsigned pendek Alphabets [130] = {0x7E, 0 × 09, 0 × 09, 0 × 09, 0x7E, / / A
0x7f, 0 × 49, 0 × 49, 0 × 49, 0 × 36, / / B
0x3e, 0 × 41, 0 × 41, 0 × 41, 0 × 22,
0x7f, 0 × 41, 0 × 41,0 × 22, 0x1C,
0x7f, 0 × 49, 0 × 49, 0 × 49, 0 × 63,
0x7f, 0 × 09, 0 × 09, 0 × 09, 0 × 01,
0x3e, 0 × 41, 0 × 41, 0 × 49, 0x7A,
0x7f, 0 × 08, 0 × 08, 0 × 08, 0x7f,
0 × 00, 0 × 41, 0x7f, 0 × 41, 0 × 00, / / Aku
0 × 20, 0 × 40, 0 × 41, 0x3f, 0 × 01,
0x7f, 0 × 08, 0 × 14, 0 × 22, 0 × 41,
0x7f, 0 × 40, 0 × 40, 0 × 40, 0 × 60,
0x7f, 0 × 02, 0 × 04, 0 × 02, 0x7f,
0x7f, 0 × 04, 0 × 08, 0 × 10, 0x7f,
0x3e, 0 × 41, 0 × 41, 0 × 41, 0x3e,
0x7f, 0 × 09, 0 × 09, 0 × 09, 0 × 06,
0x3e, 0 × 41, 0 × 51, 0 × 21, 0x5e,
0x7f, 0 × 09, 0 × 19, 0 × 29, 0 × 46,
0 × 46, 0 × 49, 0 × 49, 0 × 49, 0 × 31, / / S
0 × 01, 0 × 01, 0x7f, 0 × 01, 0 × 01,
0x3f, 0 × 40, 0 × 40, 0 × 40, 0x3f,
0x1F, 0 × 20, 0 × 40, 0 × 20, 0x1F,
0x3f, 0 × 40, 0 × 30, 0 × 40, 0x3f,
0 × 63, 0 × 14, 0 × 08, 0 × 14, 0 × 63,
0 × 07, 0 × 08, 0 × 70, 0 × 08, 0 × 07,
0 × 61, 0 × 51, 0 × 49, 0 × 45, 0 × 43 / / Z
};

Dan ini adalah bagaimana MikroC memungkinkan Anda untuk menyimpan array dalam memori program.
const unsigned pendek karakter [30] = {
0 × 24, 0x2A, 0x7f, 0x2A, 0 × 12, / / $
0 × 08, 0 × 14, 0 × 22, 0 × 41, 0 × 00, / / <
0 × 41, 0 × 22, 0 × 14, 0 × 08, 0 × 00, / />
0 × 14, 0 × 14, 0 × 14, 0 × 14, 0 × 14, / / =
0 × 36, 0 × 49, 0 × 55, 0 × 22, 0 × 50, / / &
0 × 44, 0x3c, 0 × 04, 0x7c, 0 × 44, / / PI
};
Saya telah menulis sebuah program sederhana di MikroC untuk menampilkan abjad A sampai Z secara berurutan, dan beberapa karakter khusus juga. Anda dapat menonton video di bawah ini untuk melihat bagaimana mereka terlihat seperti pada layar dot matrix.

Menampilkan simbol PI

Jenis Sensor

Posted: Juli 5, 2011 in electronika, MikroController

Sensor, benda satu ini juga cukup penting dalam dunia elektronika, terlebih kalau ktia ingin membuat robot. Ada apa saja jenis sensor itu? Check this out!


1. Sensor Suhu

Sensor suhu disebut sebagai thermistor. Nilai tahanan thermistor akan semakin berkurang seiring naiknya suhu.Pada thermistor, suhu direpresentasikan dalam bentuk sinyal tegangan yang dihasilkan oleh rangkaian pembagi tegangan.

2. Sensor Cahaya
Disebut juga light dependent resistor. Sensor ini nilai tahanannya semakin berkurang seiring dengan meningkatnya intensitas cahaya. Komponen ini dan komponen thermistor paling bagus digunakan sebagai rangkaian pembagi tegangan yang menghasilkan sinyal tegangan.Sebut saja fotodioda, yang sempat dibahas pada artikel sebelumnya, merupakan salah satu jenis komponen sensor cahaya.Sensor cahaya terdapat pada gambar berikut ini.

3. Sensor Gaya
Komponen bernama strain gauge (pengukur tekanan mekanis) sangat peka terhadap perubahan gaya mekanik. Alat ini tersusun atas selembar kertas foil logam tipis, yang dibentuk sedemikian rupa menjadi benang-benang yang sangat halus. Lapisan film plastik membungkus keseluruhan kertas ini

Sumber gambar: engin.brown.edu



4. Sensor Suara
Suara dapat dideteksi dengan mikrofon seperti komponen mikrofon kapasitor.

sumber gambar : bitsbox.co.uk
Untuk efisiensi, umumnya sensor suara yang digunakan ialah “microphone insert”, sebuah isi mikrofon tanpa badan dan kaki penyangga.Piranti ini merupakan dasar dari mikrofon, memiliki 2 kaki sambungan dibagian belakang. Di atas adalah gambarnya.
Salah satu jenis dari mikrofon insert yakni mikrofon kristal mampu menghasilkan sinyal output tanpa memerlukan catu daya. Berikut adalah gambarnya

sumber gambar : saturn-sound.com

Mengenal ARM Cortex­M0

Posted: Juli 4, 2011 in MikroController

Sejarah Singkat ARM Mikroprosesor
ARM adalah prosesor dengan arsitektur set instruksi 32­bit RISC (Reduced Instruction Set Computer) yang dikembangkan oleh ARM Holdings. ARM merupakan singkatan dari Advanced RISC Machine (sebelumnya lebih dikenal dengan kepanjangan Acorn RISC Machine). Pada awalnya ARM prosesor dikembangkan untuk PC (Personal Computer) oleh Acorn Computers, sebelum dominasi Intel x86 prosesor­ Microsoft di IBM PC kompatibel menyebabkan Acorn Computers bangkrut.

Setelah Acorn Computers bangkrut, Apple Computers (sekarang Apple Inc) dan VLSI Technology Inc membeli kekayaan intelektual Acorn Computer, dan mendirikan ARM Ltd. ARM Ltd kemudian melanjutkan proyek Acorn Computer untuk mengembangkan prosesor 32­bit dengan arsitektur RISC yang sederhana dan hemat energi.

Prosesor yang dikembangkan ARM Ltd ternyata tidak diminati oleh kalangan produsen PC, dengan alasan tidak kompatibel dengan arsitektur Intel x86. ARM Ltd kemudian memutuskan untuk tidak memproduksi ARM prosesor, tetapi melisensikan desain prosesor tersebut untuk digabungkan dengan ASIC (Application Specific IC) yang membutuhkan kontroler embedded (contoh: kontroler printer, kontroler mesin cuci, kontroler video dekoder, kontroler ethernet hub/router, dan sebagainya).

Saat ini, selain digunakan untuk ASIC, ARM prosesor juga diproduksi oleh berbagai perusahaan semikonduktor sebagai mikroprosesor terpisah (sebelumnya ARM prosesor selalu di­embeddedkan dengan ASIC) maupun mikrokontroler (dengan pengurangan berbagai fitur yang diperlukan mikroprosesor).

Perusahaan yang dulu ataupun saat ini menggunakan lisensi ARM prosesor meliputi Alcatel­Lucent, Apple Inc., Atmel, Broadcom, Cirrus Logic, Digital Equipment Corporation (DEC), Freescale, Intel (melalui akuisisi DEC), LG, Marvell Technology Group, Microsoft, NEC, Nuvoton, Nvidia, NXP (dulu Philips), Oki, Qualcomm, Samsung, Sharp, STMicroelectronics, Symbios Logic, Texas Instruments, VLSI Technology, Yamaha and ZiiLABS.
Berbagai macam kontroler berbasis ARM yang terkenal meliputi DEC StrongARM (digunakan Intel untuk prosesor PDA), Marvell Xscale (desain Xscale dibeli Marvell dari Intel), Nintendo (untuk prosesor Gameboy, DSi, dan 3DS), Nvidia Tegra, ST­Ericsson Nomadik, Qualcomm Snapdragon, Texas Instruments OMAP product line, Samsung Hummingbird and Apple A4.

Keluarga ARM Mikroprosesor
Keluarga ARM MikroprosesorARM mempunyai beberapa keluarga untuk menjangkau berbagai aplikasi.

ARM Klasik (Classic ARM Processors)
ARM klasik adalah keluarga ARM prosesor yang pertama kali dirilis oleh ARM Ltd (sekarang ARM Holdings). Prosesor ARM klasik ideal untuk pengguna yang ingin menggunakan teknologi telah teruji di pasar. Prosesor­prosesor ini telah digunakan untuk berbagai macam produk elektronik selama bertahun­-tahun. Desainer produk elektronik yang memilih prosesor­prosesor ini dijamin mempunyai dukungan ekosistem dan sumber daya yang luas, tingkat kesulitan integrasi yang minimum, dan menurunkan waktu desain.

ARM Cortex Prosesor Embedded (ARM Cortex Embedded Processors)
Prosesor­prosesor di keluarga seri Cortex­M telah dikembangkan khusus untuk domain mikrokontroler, dimana permintaan untuk kecepatan, determinasi waktu proses, dan manajemen interrupt bersama dengan jumlah gate silikon minimum (luas silikon yang minimum menentukan harga akhir prosesor) dan konsumsi daya yang minimum sangat diminati. Contoh aplikasi prosesor Cortex­M adalah mikrokontroller dan sensor cerdas.
Prosesor­-prosesor di keluarga seri Cortex­R, sebaliknya, dikembangkan khusus untuk keperluan real­time yang mendalam, dimana kebutuhan konsumsi daya minimum dan sifat interrupt yang terprediksi diimbangi dengan performa yang luar biasa dan kompatibilitas yang kuat dengan platform yang telah ada. Contoh aplikasi prosesor Cortex­R adalah ABS (Automotive Braking Systems), kontroler elektronik roda gigi, hidrolik, dan mesin otomotif.

ARM Cortex Prosesor Aplikasi (ARM Cortex Application Processors)
Prosesor­prosesor di keluarga prosesor aplikasi dikembangkan untuk aplikasi yang membutuhkan daya komputasi yang tinggi (frekuensi prosesing rata­rata 2GHz), seperti netbook, mobile internet devices, smartphone, dan lain-­lain.

ARM Cortex­M0
ARM Cortex­M0 adalah prosesor dari keluarga ARM Cortex prosesor embedded untuk menggantikan aplikasi mikrokontroler 8­/16­bit. Keunggulan ARM Cortex­M0 dibandingkan mikrokontroler 8­/16­bit terletak pada:
• Kemampuan komputasi yang lebih tinggi untuk frekuensi kerja yang sama
• Konsumsi daya yang lebih kecil atau sama
• Jumlah pin yang sedikit (kurang dari 50­pin, tidak memerlukan multi­layer PCB, luas PCB yang dibutuhkan kecil, tidak membutuhkan keahlian khusus untuk memasang prosesor di board), tidak seperti prosesor 32­bit lainnya (butuh setidaknya 100­pin, multi­layer PCB, dan mesin X­Ray / oven)
• Harga yang lebih murah atau sama
• Kompatibel dengan ARM Cortex­M lain (ARM Cortex­M3, ARM Cortex­M4). Aplikasi yang dikompile untuk ARM Cortex­M0 bisa dijalankan di ARM Cortex­M lainnya. Hal ini berguna untuk upgrade hardware, tanpa membuang software yang sudah dikerjakan.
Detil lebih lengkap mengenai perbandingan ARM Cortex­M0 dengan mikrokontroler 8­/16­bit lainnya dapat dilihat di:
http://ics.nxp.com/literature/presentations/microcontrollers/pdf/cortex.m0.lpc111x.overview.benchmar ks.pdf
http://ics.nxp.com/literature/presentations/microcontrollers/pdf/cortex.m0.code.density.pdf

ARM Cortex­M0 Peripheral
ARM Cortex­M0 mempunyai peripheral­peripheral yang terintegrasi dengan prosesor. Peripheral­peripheral tersebut merupakan bagian dari desain ARM Cortex­M0. Karena itu, peripheral­peripheral tersebut terdapat di semua mikroprosesor yang berbasis ARM Cortex­M0, walaupun dibuat oleh manufaktur yang berbeda. Selain itu, peripheral­peripheral yang terdapat di ARM Cortex­M0, juga terdapat di prosesor ARM Cortex­M yang lain (ARM Cortex­M1, ARM Cortex­M3, ARM Cortex­M4), sehingga semua prosesor di
keluarga ARM Cortex­M kompatibel satu sama lainnya. Peripheral­peripheral tersebut antara lain:

Nested Vectored Interrupt Controller (NVIC )
NVIC adalah peripheral yang mengatur interrupt ARM Cortex­M (ARM Cortex­M0, ARM Cortex­M1, ARM Cortex­M3, ARM Cortex­M4). NVIC mengatur prioritas interrupt, mengaktifkan / menon­aktifkan interrupt, menyimpan isi register­register ARM Cortex­M ke memori stack ketika prosesor memasuki interrupt handler, dan mengembalikan isi register­register ARM Cortex­M dari memori stack ketika prosesor keluar dari interrupt handler.

System Control Block (SCB)
SCB adalah peripheral yang digunakan untuk mengatur mode prosesor. SCB menyediakan berbagai info untuk program pengguna (seperti CPU ID, konfigurasi memori big­/little­ endian, nomor interrupt yang saat ini ditangani, dan sebagainya)

System Timer (SysTick)
Pada seri ARM klasik, prosesor­prosesor ARM tidak dilengkapi dengan Timer, sehingga tiap manufaktur melengkapi prosesor tersebut dengan peripheral Timer milik mereka sendiri. Akibatnya, terdapat isu kompatibilitas jika pengguna ingin berpindah dari prosesor ARM dari manufaktur yang satu ke manufaktur lainnya (Contoh: pengguna yang menggunakan peripheral Timer di ARM7TDMI buatan Atmel tidak bisa menggunakan ARM7TDMI buatan NXP tanpa mengubah kode program terlebih dulu, walaupun keduanya berbasis prosesor yang sama, karena Timer milik Atmel dan NXP berbeda).
Pada seri ARM Cortex­M (ARM Cortex­M0, ARM Cortex­M1, ARM Cortex­M3, ARM Cortex­M4), tiap prosesor dilengkapi dengan peripheral Timer, sehingga pengguna yang ingin memiliki kebebasan memilih manufaktur semikonduktor dapat berpindah ke manufaktur lain tanpa harus mengubah program mereka.
ARM Holdings sendiri menyarankan agar SysTick digunakan untuk Timer RTOS, sehingga RTOS tersebut (beserta aplikasinya) dapat dipindahkan dari prosesor satu ke prosesor lainnya (Contoh: dari ARM Cortex­M0 ke ARM Cortex­M3) ataupun dari manufaktur satu ke manufaktur lainnya (Contoh: dari STMicroelectronics ke NXP) tanpa perubahan apa pun di kode program.

Wake­up Interrupt Controller (WIC)
WIC adalah peripheral tambahan di ARM Cortex­M untuk mengaktifkan prosesor yang sedang dalam mode penghematan energi (sleep, deep sleep, dan sebagainya). WIC dibutuhkan untuk mengurangi konsumsi daya prosesor, karena mampu mengaktifkan prosesor tanpa menggunakan clock. WIC merupakan peripheral tambahan untuk membantu kerja NVIC.
Ketika prosesor dalam mode penghematan energi, WIC akan mendeteksi event yang digunakan untuk mengaktifkan prosesor. Ketika event tersebut terdeteksi, WIC akan mengaktifkan prosesor dan NVIC (keluar dari power saving mode), dan menyerahkan tugas ke NVIC untuk memproses interrupt tersebut (jika event tersebut berupa external interrupt).

Embedded Debug Core
Debug core di prosesor seri ARM Cortex­M memungkinkan user untuk men­debug program tanpa harus melepas prosesor dari PCB. Prosesor tanpa debug core (contoh Intel 8051) memerlukan emulator khusus untuk mendebug program (prosesor harus dilepas dari PCB, kemudian kabel­kabel dari emulator disolder ke PCB, di footprint prosesor).
Dengan debug core, pengembang aplikasi ARM Cortex­M cukup menghubungkan tiga pin (SWDIO, SWDCLK, dan GND) prosesor ARM Cortex­M ke JTAG eksternal (JTAG berguna untuk menjembatani program di PC dengan prosesor) tanpa harus melepas prosesor ARM Cortex­M dari PCB.

Periferal tambahan ARM Cortex-M

Kompatibilitas Set Instruksi ARM Cortex­M0
Set instruksi yang digunakan oleh ARM Cortex­M0 dinamakan set instruksi Thumb. Set instruksi ARM Cortex­M0 adalah subset dari set instruksi ARM Cortex­M yang lain, sehingga program yang dikompile untuk ARM Cortex­M0 kompatibel dengan prosesor ARM Cortex­M yang lain.

Kompatibilitas Set Instruksi ARM Cortex-M0

Selain itu, ARM Cortex­M0 juga kompatibel dengan set instruksi prosesor ARM dari seri klasik dan Cortex­A (ARM Cortex Application Processor).

Kesimpulan
Keserdehanaan, kompatibilitas, dan harga ARM Cortex­M0 membuat prosesor ini sebagai prosesor yang tepat untuk:
• Migrasi aplikasi dari prosesor 8­/16­bit ke 32­bit
• Prosesor entry level untuk aplikasi yang memerlukan kompatibilitas antara produk entry level sampai produk yang rumit, dengan satu arsitektur.

Daftar Pustaka
ARM Architecture. (n.d.). Retrieved Jan 30, 2011, from the Wikipedia:
http://en.wikipedia.org/wiki/ARM_architecture
Acorn Computers. (n.d.). Retrieved Jan 30, 2011, from the Wikipedia:
http://en.wikipedia.org/wiki/Acorn_Computers
ARM Holdings. (n. d.). Retrieved Jan 30, 2011, from http://www.arm.com/products/processors/index.php

Hak Cipta dan Lisensi

Hak cipta dan lisensi atas karya tulisan ini diatur berdasarkan perjanjian ‘Creative Common Attribution 3.0 Unported (CC BY 3.0)’ dan UU no 19/2002 tentang Hak Cipta.
Penulis karya tulis ini, Daniel Widyanto (daniel.widyanto@nxp.com), berhak atas nama penulis yang harus dicantumkan untuk tiap kopi karya tulis (cetak maupun elektronik) dan hasil adaptasi karya tulis (termasuk, tetapi tidak terbatas pada: presentasi power point, bahan kuliah, materi praktikum laboratorium, buku, artikel dan sebagainya).
Anda berhak untuk:
Berbagi — mengkopi, mendistribusikan, dan meneruskan karya tulis ini.
Mengubah — mengadaptasi karya tulis ini dengan syarat:
Pengakuan atas karya tulis – Anda harus menghormati karya tulis ini dengan cara yang ditetapkan oleh penulis atau pemegang hak cipta (tetapi tidak dengan cara yang menganjurkan bahwa penulis atau pemegang hak cipta mendukung Anda atau hasil kerja Anda)
dengan pengertian bahwa:
­* Pembatalan Persyaratan di atas dapat dibatalkan jika Anda mendapatkan persetujuan dari pemegang hak cipta
­* Domain umum Bilamana karya tulis atau bagian dari karya tulis merupakan domain umum dalam status hukum yang berlaku, status tersebut tidak terpengaruhi oleh lisensi ini
*­ Hak Lainnya Dalam segala cara, lisensi ini tidak mempengaruhi hak­hak berikut ini:
­ ** Hak untuk menggunakan karya tulis ini sesuai pasal 15 UU no 19/2002 tentang Hak Cipta
­ ** Hak moral penulis, sesuai pasal 24, 25, 26 UU no 19/2002 tentang Hak Cipta
­ ** Hak penulis lain yang terdapat dalam karya tulis ini maupun yang menggunakan
karya tulis ini, seperti publisitas ataupun hak privasi
Catatan: Untuk pengadaptasian ataupun pendistribusian karya tulis ini, Anda harus menjelaskan lisensi ini kepada pengguna hasil modifikasi atau distribusi karya ini.
Untuk informasi yang lebih jelas, silahkan merefer ke:
http://creativecommons.org/licenses/by/3.0/legalcode  untuk perjanjian hukum ‘Creative Common Attribution 3.0 Unported (CC BY 3.0)’ dan
http://www.dgip.go.id/ebhtml/hki/filecontent.php?fid=5011  untuk UU no 19/2002 tentang Hak Cipta

Catatan dari Kelas Mikrokontrol:
Artikel diatas ditampilkan utuh tanpa mengurangi atau menambahkan huruf lengkap beserta halaman Hak Cipta dan Lisensi untuk menghindari hal-hal yang tidak diinginkan kelak dikemudian hari.

Arduino board ialah modul yang menggunakan mikrokontroler AVR dan menggunakan seri yang lebih canggih, sehingga dapat digunakan untuk membangun sistem elektronika berukuran minimalis namun handal dan cepat.  Berbagai modul dan sensor  terkini dapat dipasang pada board ini dilengkapi dengan berbagai kode demo yang memuaskan.

Arduino terdiri dari beberapa board, yang dapat digunakan sesuai kebutuhan dan menggunakan software open source yang dapat dijalankan pada Windows, Mac dan Linux.   Beberapa board yang terkenal ditampilkan pada gambar di bawah :
Gambar 1.  Arduino Main Board berbasis ATmega328 dengan bootloader

Gambar 2.  Arduino Mega 2560 dengan 8 ch ADC dan fitur PWM
Fitur Arduino Mega 2560:
  • ATmega2560 microcontroller
  • Input voltage – 7-12V
  • 54 Digital I/O Pins (14 PWM outputs)
  • 16 Analog Inputs
  • 256k Flash Memory
  • 16Mhz Clock Speed
Mikrokontroler Arduino ini menggunakan Arduino programming language  berbasiskan Wiring dan Arduino development environment berbasiskan Processing.  Arduino menggunakan koneksi USB menggunakan chip FTDI untuk melakukan pemrograman, dan biasanya pada chip Arduino sudah dimasukkan bootloader, sehingga dapat dilakukan pemrograman langsung ke dalam chip menggunakan software Arduino. Berikut ini contoh skema pada Arduino Pro 5V/16MHz.

Gambar 3.  Skema Rangkaian Arduino Pro 5V/16MHz.
Untuk mencoba Arduino board, berikut langkah-langkahnya :
  1. Anda dianggap sudah memiliki board Arduino Mega, Mega 2560, Uno dan Nano atau Arduino lainnya yang sesuai.
  2. Unduhlah software Arduino di situs penulis dan lakukan proses instalasi, setelah itu hubungkan kabel USB dengan modul Arduino.
  3. Buka contoh kode Blink Examples

Blink.pde:

/*
Language: Arduino/Wiring
Kelap kelip pada p 13 setiap ½ detik
Pin 13:  + leg of an LED (- leg goes to ground)
*/
int LEDPin = 13;
void setup() {
pinMode(LEDPin, OUTPUT);    // set pin 13 menjadi Output
}
void loop() {
digitalWrite(LEDPin, HIGH);        // hidupkan  LED pada pin  13
delay(500);                                          // delay ½ detik
digitalWrite(LEDPin, LOW);        // matikan LED
delay(500);                                         // delay ½ detik
}
  1. Pilih modul Anda, lalu klik Upload to I/O Board, dalam beberapa saat maka LED di p13 akan berkedip, berarti alat Anda sudah siap digunakan.
Pengukuran Jarak menggunakan PING
Sensor jarak ultrasonik PING dari Parallax merupakan sensor yang paling banyak digunakan pada berbagai proyek riset dan robotika, kelebihannya antara lain selain dapat mengukur jarak 3cm – 3m, juga hanya menggunakan 1 jalur data.  Pastikan Anda tidak salah pasang rangkaian PING.  Contoh rangkaian berikut merupakan aplikasi pengukuran jarak menggunakan Arduino:
 

                     Gambar 4.  Rangkaian PING dengan Arduino

PING.pde:
 // Program Demo PING untuk  mengukur Jarak
 const int pingPin = 7;

 void setup() {
 // initialize serial communication:
 Serial.begin(9600);
 }

 void loop()
 {
 // establish variables for duration of the ping,
 // and the distance result in inches and centimeters:
 long duration, inches, cm;

 // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
 // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
 pinMode(pingPin, OUTPUT);
 digitalWrite(pingPin, LOW);
 delayMicroseconds(2);
 digitalWrite(pingPin, HIGH);
 delayMicroseconds(5);
 digitalWrite(pingPin, LOW);

 // The same pin is used to read the signal from the PING))): a HIGH
 pinMode(pingPin, INPUT);
 duration = pulseIn(pingPin, HIGH);

 // convert the time into a distance
 inches = microsecondsToInches(duration);
 cm = microsecondsToCentimeters(duration);

 Serial.print(inches);
 Serial.print("in, ");
 Serial.print(cm);
 Serial.print("cm");
 Serial.println();
 delay(100);
 }

 long microsecondsToInches(long microseconds)
 {
 // According to Parallax's datasheet for the PING))), there are
 // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
 // second).  This gives the distance travelled by the ping, outbound
 // and return, so we divide by 2 to get the distance of the obstacle.
 return microseconds / 74 / 2;
 }

 long microsecondsToCentimeters(long microseconds)
 {
 // The speed of sound is 340 m/s or 29 microseconds per centimeter.
 // The ping travels out and back, so to find the distance of the
 // object we take half of the distance travelled.
 return microseconds / 29 / 2;
 }

Dasar Mikrokontroler

Posted: Juli 3, 2011 in MikroController

Jika kita ingin membuat projek atau tugas akhir yang menggunakan mikroprosesor 8086/8088 tampaknya saat ini cukup sulit karena dibutuhkan biaya yang besar serta diperlukannnya EPROM Programmer. Cara lain yang lebih gampang dan murah ialah kita mengembangkan aplikasi menggunakan kit mikrokontroler ( main board) yang sudah ada di pasaran. Kit tersebut umumnya terdiri dari mikrokontroler, memori serta interface untuk koneksi ke lcd, ke PPI atau ke port serial komputer. Kita tinggal membuat program serta menyambungkan dengan board atau komponen tambahan saja. Membangun aplikasi Elektronika berbasis embedded system merupakan topik yang sangat hangat saat ini. Apalagi mikrokontroler tertentu sudah mendukung aplikasi yang terhubung ke jaringan computer (network microcontroller).

Ada perbedaan yang cukup penting antara Mikroprosesor dan Mikrokontroler. Jika Mikroprosesor merupakan CPU (Central Processing Unit) tanpa memori dan I/O pendukung dari sebuah komputer, maka Mikrokontroler umumnya terdiri dari CPU, Memori , I/O tertentu dan unit pendukung, misalnya Analog to Digital Converter (ADC) yang sudah terintegrasi di dalam mikrokontroler tersebut. Kelebihan utama dari Mikrokontroler ialah telah tersedianya RAM dan peralatan I/O Pendukung sehingga ukuran board mikrokontroler menjadi sangat ringkas. Terdapat berbagai jenis mikrokontroler dari berbagai vendor yang digunakan secara luas? di dunia. Diantaranya yang terkenal ialah dari Intel, Maxim, Motorolla , dan ATMEL. Beberapa seri mikrokontroler yang digunakan secara luas ialah 8031, 68HC11, 6502 , 2051 dan 89S51. Mikrokontroler yang mendukung jaringan komputer seperti DS80C400 tampaknya akan menjadi primadona pada tahun-tahun mendatang . Untuk mencoba kit mikrokontroler, anda dapat membeli kit kami bernama SMART52 berbasiskan 89S52 , SmartAVR atau kit produksi lainnya, dapat anda pesan di situs penulis di http://www.toko-elektronika.com

 

Pengenalan Mikrokontroler AT89C51

 

Mikrokontroler AT89C51 ialah mikrokomputer CMOS 8 bit dengan 4KB Flash Programmable dan Erasable Read Only Memory (PEROM). Mikrokontroler berteknologi memori non volatile kerapatan tingi dari Atmel ini kompatibel dengan mikrokontroler standar industri MCS-51 (seperti mikrokontroler 8031 yang terkenal dan banyak digunakan beberapa waktu lalu) baik pin kaki IC maupun set instruksinya serta harganya yang cukup murah. Oleh karena itu, sangatlah tepat jika kita mempelajari mikrokontroler jenis ini. Anda juga diharapkan mempelajari versi terbaru yaitu berseri AT89S51. Informasi lebih detail mengenai interfacing dan penerapan aplikasi pada mikrokontroler 89C51 dapat Anda temukan pada buku Saya sebelumnya.

AT89C51 mempunyai memori yang terdiri dari RAM internal sebesar 128 byte dengan alamat 00H-7FH dapat diakses menggunakan RAM address register. RAM Internal ini terdiri dari Register Banks dengan 8 buah register (R0-R7).Memori lain yaitu 21 buah Special Function Register dimulai dari alamat 80H-FFH. RAM ini beda lokasi dengan Flash PEROM dengan alamat 000H -7FFH.

 

 

 

 

FF

 

80

7F

 

00

 

 

 

 

Special Function Register

RAM Internal

 

 

 

Gambar 1 Alamat RAM Internal

 

Sebagai perbandingan kapasitas memori, Tabel 16.1 menampilkan kapasitas memori dari mikrokontroler seri AT89X.

 

Tabel 1 Kapasitas Memory Mikrokontroler seri AT89X

 

Type RAM Flash Memory EEPROM
AT89C51/ AT89S51 8 X 128 byte 4 Kbyte Tidak
AT89C52/ AT89S52 8 X 256 byte 8 Kbyte Tidak
AT89C55 8 X 256 byte 20 Kbyte Tidak
AT89S53 8 X 256 byte 12 Kbyte Tidak
AT89S8252 8 X 256 byte 8 Kbyte 2 Kbyte

 

 

IC AT89C51 mempunyai 40 pin yang sesuai dengan mikrokontroler 8031, dengan susunan kaki seperti Gambar 2 .

 

 

 

 

Gambar 2 Nama Pin-pin AT89C51

 

Jika kita lihat diagram blok mikrokontroler ini, terlihat jelas kesempurnaan dari fasilitas yang diberikannya. Gambar 3 merupakan diagram blok IC tersebut :

 

 

Gambar 3 Diagram blok AT89C51

 

Pada Gambar 3 terlihat bahwa terdapat 4 port untuk input output data, serta tersedia pula akumulator, register, RAM, stack pointer , Arithmetic Logic Unit (ALU), pengunci (latch) dan rangkaian osilasi yang membuat 89C51 dapat beroperasi hanya dengan 1 keping IC.

 

 

Bahasa Assembly di Mikrokontroler

 

Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus pembacaan instruksi yang tersimpan di dalam memori. Mikrokontroler menentukan alamat? dari memori program yang akan dibaca, dan melakukan proses baca data di memori. Data yang dibaca diinterprestasikan sebagai instruksi.? Alamat instruksi disimpan oleh mikrokontroler di register, yang dikenal sebagai program counter. Instruksi ini misalnya program aritmatika yang melibatkan 2 register.

AT89C51 memiliki sekumpulan instruksi yang sangat lengkap. Jika anda telah mempelajari bahasa assembly mikroprosesor keluarga intel (misal 8086), ada sedikit perbedaan dengan bahasa assembly di mikrokontroler. Instruksi MOV untuk byte dan bit dikelompokkan sesuai dengan mode pengalamatan (addressing modes). Mode pengalamatan menjelaskan bagaimana operand dioperasikan.Berikut penjelasan dari berbagai mode pengalamatan. Bentuk program assembly yang umum ialah sebagai berikut :

 

Label    mnemonic   operand1 operand2     komentar

(isi memori)??? (opcode)

 

 

 

4000 7430       MOV               A, #30H;kirim 30H ke akumulator A

 

 

Isi memori ialah bilangan heksadesimal yang dikenal oleh mikrokontroler kita, yang merupakan representasi dari bahasa assembly yang telah kita buat. Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.

 

 

CJNE R5,#22H, aksi ?;dibutuhkan 3 buah operand

MOVX @DPTR, A     ;dibutuhkan 2 buah operand

RL A                           ;1 buah operand

NOP                           ; tidak memerlukan operand

 

Program yang telah selesai kita buat dapat disimpan dengan ekstension .asm. Lalu kita buat program objek menggunakan program ASM51 yang dapat diperoleh secara gratis di internet. Berikut contoh mengkompile file tesppi.asm yang tersedia di dalam paket DT-51 menggunakan ASM51, yang akan menghasilkan file tesppi.hex dan tesppi.lst. File .hex inilah yang kita masukkan ke Flash PEROM mikrokontroler AT89C51 atau ke eksternal memori seperti AT28C64B menggunakan program downloader.

 

Mendownload Program ke Mikrokontroler

Jika telah selesai menulis program; simpan dgn ekstension.asm, lalu kompile degan ASM51( c:\asm51 lampu.asm, nanti jdnya lampu.hex, anda dapat mendowload file hex anda ke Minimum System mikrokontroler anda menggunakan file dt51l.exe (berbasiskan DOS) atau dt51lwin.exe (berbasiskan windows )atau ATMEL ISP PROGRAMMER sebagai berikut :

 

 

 

Gambar 4 DT-51 Windows Downloader v1.0

 

 

Mode Pengalamatan

 

Pengalamatan Langung

Pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara langsung, Untuk melaksanakan hal tesersebut digunakan tanda #. Operand yang digunakan pada pengalamatan langsung /immediate data dapat berupa bilangan bertanda mulai 256 hingga +256.

 

Contoh :

MOV A,#25H              ;Isi akumulator dengan bilangan 25H

MOV DPTR, #20H    :isi register DPTR dengan bilangan 20H

MOV R1,10H :           ; isi register R1 dengan 10H

MOV A,#-1                 ; sama dengan MOV A,#0FFH

                                   ; karena 00H 1 menjadi FFH

 

 

Pengalamatan Tak Langung

Pada pengalamatan ini, operand menunjuk ke sebuah register yang berisi lokasi alamat memori yang akan digunakan dalam operasi. Untuk melaksanakan pengalamatan tak langsung digunakan symbol @. Pengalamatan jenis ini biasa digunakan untuk melakukan penulisan, pemindahan atau pembacaan beberapa data dalam lokasi memori. AT89C51 mempunyai sebuah register 16 bit (DPTR) yang dapat digunakan untuk melakukan pengalamatan tidak langsung.

 

Contoh :

ADD, A,R1      ;Tambahkan isi RAM yang lokasinya ditunjukkan oleh register R1

; ke akumulator

DEC @R1      ;Kurangi satu isi RAM yang alamatnya ditunjukkan oleh R1

MOVX, ADPTR, A     :Pindahkan isi dari akumulator ke memori luar yang

; lokasinya ditunjukkan oleh data pointer (DPTR)

 

 

Pengalamatan Data

Pengalamatan data terjadi pada sebuah perintah ketika nilai operasi merupakan alamat dari data yang akan diisi atau yang akan dipindahkan.

 

Contoh :

MOV P1,A                  ;isi P1 dari Akumulator

MOV P2,FFH                         ;isi P2 dengan nilai FFH

 

Pengalamatan Kode

Pengalamatan kode terjadi ketika operand merupakan alamat dari instruksi JUMP dan CALL. Berikut contoh ACALL yang memanggil label Tunda, sehingga akan melompat ke lokasi memori bernama Tunda.

 

Contoh :

ACALL Tunda

 

TUNDA:

MOV A,#FEH

LOOP:           

            DJNZ A, LOOP

            RET
Pengalamatan Bit

Pengalamatan bit ialah penunjukkan alamat lokasi bit baik dalam RAM internal atau perangkat keras menggunakan symbol titik (.).

Contoh :

SETB P1.7     ; Set bit port 1.7 aktif

SETB TR1     : Set TR1 (Timer 1 aktif)

SETB RXD    ; memberikan logika 1 pada kaki RXD yang berada di port 3.0

 

Operator

Operator digunakan untuk melakukan aksi aritmatika, logika pergeseran bit dan lain-lainnya pada operand .Beberapa operator yang tersedia diantaranya :

 

Operator Aritmatika

* untuk perkalian

/ untuk pembagian

+ untuk penambahan

– untuk pengurangan

 

Contoh : MOV A, #25H+3H ; sama dengan MOV A,#28H

 

Operator Logika

OR untuk poerasi OR

AND untuk operasi AND

XOR untuk operasi XOR

EXOR untuk operasi EXOR

NOT untuk operasi invert

 

Contoh :

MOV A, #20H OR 40H          ;sama dengan MOV A,#60H

MOV A,#10H AND 31H         ;sama dengan MOV A, 10H

 

Operasi Khusus

SHR 16 bit geser ke kanan

SHL 16 bit geser ke kiri

HIGH pilih bagian tas bit

LOW pilih bagian bawah bit

EQ = sama dengan

NET <> tidak sama dengan

Lt < lebih kecil

LE <= lebih kecil atau sama dengan

GT > lebih besar

GE >= lebih besar atau sama dengan

 

Dimana perlu anda perhatikan prioritas dari operator sebagai berikut :

()

HIGH , LOW

Z*/, MOD, SHL , SHR

+, –

EQ, NE, LT, LE, GT, GE,=,<>,<,<=,>,>=

NOT

AND

OR, XOR

 

Pengarah Pilihan Segmen (Segment Selection Directives)

Ada 5 buah pengarah pilihan segmen yaitu CSEG, BSEG , DSEG ISEG dan XSEG yang menunjukkan salah satu dari 5 buah area memori . Penjelasan dari masing-masing segmen sebagai berikut :

 

CSEG                           : untuk memilih lokasi memori program

BSEG                           : untuk meilih lokasi memori yang dapat dialamati

secara pengalamatan bit

DSEG                           untuk memilih lokasi memori RAM Internal

ISEG                            untuk memilih lokasi memori RAM Internal yang

dialamati secara tak langsung

XSEG                           untuk memilih lokasi memori eksternal

 

 

Mencoba Membuat Program

Anda dapat mengetik program di mana saja seperti notepad, wordpad dan ALDS. ALDS ialah software yang dapat kita gunakan membuat program dan melacak kesalahan. Program pertama kita ialah Program yang menerima input dari port dan lalu menampilkan outputnya berlogika 1 atau 0 di port 1. Karena DT-51 menggunakan memori eksternal, maka dimulai dari alamat 4000H. Kode selanjutnya ialah membuat sebuah label dengan nama mulai, isi dari label tersebut ialah menerima data dari P2 lalu dikirim ke akumulator A menggunakan perintah MOV. Lalu datai di Akumulator di pindahkan ke P1 menggunakan fungsi MOV juga. Untuk terjadi perulangan terus menerus, kita menggunakan fungsi JMP untuk loncat ke label mulai.Program diakhiri menggunakan fungsi END. Untuk merancang program, sebaiknya dibua terlebih dahulu flowchart? yang kemudian dapat diterjemahkan ke dalam pseudocode.

 

Listing Program 1. Program menerima data dari port 2 lalu dikirim ke port 1 (tesio.asm)

$mod51

ORG 4000H                      ; menggunakan alamat awal EEPROM DT51

mulai:                                ; Label mulai

MOV A,P2                       ; Kirim Data pada Port 2 Ke Accumulator

MOV P1,A                   ; Kirim Data pada Accumulator ke Port 1

JMP mulai                         ; Loncat Ke Label Mulai

END

Pastikan file mod51 berada di dalam folder yang sama dan kode tidak case sensitive. Anda dapat menggunakan saklar yang diberi tegangan 5 V dan ground untuk menghasilkan pulsa 1 atau 0 yang dihubungkan ke input port 2. Lalu port 1 dapat menggunakan LED. Atau anda juga dapat menggunakan Trainer Board dari Innovative Electronics sehingga tidak membuang waktu untuk merangkai rangkaian tersebut. Kompile program ini lalu masukkan ke kit DT-51 menggunakan dt51l.exe dalam mode dos atau dt51lwin.exe dalam mode windows.

 

Program berikut akan mengetes port 1 di DT-51 Minimum System. Output di port 1 akan berlogika 1 dan 0 secara bergantian. Untuk melihat hasil output, kita menggunakan delay agar perubahan logika di port tersebut dapat terlihat.

 

Listing Program 2 . Tes port 1 DT-51(tesport.asm)

 

$MOD51

$TITLE(TESPORT)

CSEG

ORG   4000H

AJMP START

ORG 4100H

 

Delay: MOV    R2,#0FH

Del1:   MOV    R1,#0FFH

DJNZ   R1,$

DJNZ   R2,Del1

RET

START: MOV  SP,#30H

XX:      MOV    P1,#0FFH ;semua pin di port 1 high

ACALL Delay

MOV    P1,#00H ; set low

ACALL Delay

AJMP   XX

END

 

Program diatas akan mengisi SP dengan 30H dan membuat P1 kelap – kelip . Untuk memanggil label Delay digunakan fungsi ACALL .

 

Hanya dengan menggunakan 1 buah Mikrontroler, kita? dapat menghubungkannya dengan peralatan lainnya seperti sensor, lampu indicator, relay dan LCD. Jika port yang tesedia tidak memadai, biasanya kita menggunakan IC tambahan seperti PPI 8255 sebagai interface dengan rangkaian digital lainnya. Gambar 16.5 menampilkan model interfacing mikrokontroler yang umum, dimana 1 buah mikrokontroler mampu dihubungkan dengan berbagai devais.

avr microcontroller

Posted: Juli 3, 2011 in MikroController
avr microcontroller

Atmel Products -Microcontrollers – AVR? 8-Bit RISC
. in 1997, today’s large AVR microcontroller portfolio consists of devices sharing . This makes it easy to find THE AVR microcontroller for your application. . ->

avr microcontroller

Atmel Corporation – Industry Leader in the Design and Manufacture of . (Nasdaq: ATML) AVR? 8-bit RISC. AVR32 32-bit MCU. AT91CAP Microcontrollers . Atmel Launches new AVR32 Microcontroller with High Speed Communication for .www.atmel.com – 260k – CachedAtmel AVR – Wikipedia, the free encyclopedia
Website dedicated to Atmel AVR microcontrollers: documentation, instruction descriptions, . Microcontroller Books. Atmel Microcontrollers. AVR Freaks Forum . ->

avr microcontroller

tuxgraphics.org: 352, Programming the AVR microcontroller with GCC .
The AVR 8-Bit RISC microcontroller from Atmel is a very common microcontroller. . in the avr-libc development and the AT90S4433 microcontroller which I used . ->

avr microcontroller

Programming the AVR microcontroller with GCC, libc 1.0.4
352, Programming the AVR microcontroller with GCC, libc 1.0.4. 1 of 8. Content: . have changed in the avr-libc development and the AT90S4433 microcontroller . ->

avr microcontroller