Entri Populer

Rabu, 02 Februari 2011

ATMEGA 8535 dan Fungsi-fungsinya

  MIKROKONTROLLER ATMEGA 8535
Mikrokontroler adalah  IC  yang  dapat  diprogram  berulang  kali,  baik  ditulis  atau dihapus  (Agus Bejo, 2007). Biasanya digunakan untuk pengontrolan otomatis dan manual pada perangkat elektronika.
Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan terutama dalam pengontrolan robot. Seiring perkembangan elektronika, mikrokontroler dibuat semakin kompak dengan bahasa pemrograman yang juga ikut berubah. Salah satunya adalah mikrokontroler AVR (Alf  and Vegard’s Risc processor) ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction  Set Computing) dimana program berjalan lebih cepat karena hanya membutuhkan satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR dapat dikelompokkan menjadi 4  kelas, yaitu kelas ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya  yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.
Mikrokontroler  AVR  ATmega8535  memiliki  fitur  yang  cukup  lengkap. Mikrokontroler AVR ATmega8535 telah dilengkapi dengan ADC internal, EEPROM internal,  Timer/Counter,  PWM,  analog  comparator,  dll  (M.Ary  Heryanto,  2008). Sehingga    dengan          fasilitas          yang   lengkap          ini            memungkinkan kita            belajar mikrokontroler   keluarga   AVR   dengan   lebih   mudah   dan   efisien,   serta   dapat mengembangkan kreativitas penggunaan mikrokontroler ATmega8535.
Fitur-fitur yang  dimiliki  oleh  mikrokontroler  ATmega8535  adalah  sebagai berikut:
1.    Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.

2.    ADC internal sebanyak 8 saluran.

3.    Tiga buah Timer/Counter dengan kemampuan pembandingan.

4.    CPU yang terdiri atas 32 buah register.

5.    SRAM sebesar 512 byte.

6.    Memori Flash sebesar 8 kb dengan kemampuan Read While Write.

7.    Port antarmuka SPI

8.    EEPROM sebesar 512 byte yang dapat diprogram saat operasi.

9.    Antarmuka komparator analog.

10. Port USART untuk komunikasi serial.

11. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.

12. Dan lain-lainnya.

2.6.1 Konstruksi ATmega8535
Mikrokontroler  ATmega8535  memiliki  3  jenis  memori,  yaitu  memori  program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah.
a.  Memori program
ATmega8535  memiliki  kapasitas  memori  progam  sebesar  8  Kbyte  yang terpetakan   dari  alamat  0000h  –  0FFFh  dimana  masing-masing  alamat memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi.
b.  Memori data
ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi  3   bagian  yaitu  register  serba  guna,  register  I/O  dan  SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori  RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data SRAM.
c.  Memori EEPROM
ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari memori  program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan  menggunakan register-register I/O yaitu register EEPROM Address,  register  EEPROM  Data,  dan  register  EEPROM  Control.  Untuk mengakses  memori  EEPROM  ini   diperlakukan  seperti  mengakses  data eksternal, sehingga waktu eksekusinya relatif lebih  lama bila dibandingkan dengan mengakses data dari SRAM.
ATmega8535 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC internal  dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATmega8535 dapat dikonfigurasi, baik secara single ended input maupun differential input. Selain itu, ADC ATmega8535 memiliki konfigurasi  pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter derau yang amat fleksibel,  sehingga dengan mudah disesuaikan dengan kebutuhan ADC itu sendiri.
ATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah timer/counter 8 bit dan 1 buah timer/counter 16 bit. Ketiga modul timer/counter ini dapat diatur dalam mode yang berbeda secara  individu dan tidak saling mempengaruhi satu sama lain. Selain  itu,  semua  timer/counter  juga  dapat  difungsikan  sebagai  sumber  interupsi. Masing-masing timer/counter ini memiliki register tertentu  yang digunakan untuk mengatur mode dan cara kerjanya.
Serial Peripheral  Interface  (SPI)  merupakan  salah  satu  mode  komunikasi serial  syncrhronous  kecepatan  tinggi  yang  dimiliki  oleh  ATmega8535.  Universal Syncrhronous and  Asyncrhronous Serial Receiver and Transmitter (USART) juga merupakan  salah  satu  mode  komunikasi  serial  yang  dimiliki  oleh  ATmega8535. USART  merupakan  komunikasi  yang   memiliki  fleksibilitas  tinggi,  yang  dapat digunakan untuk melakukan transfer data baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC yang memiliki fitur UART.
USART memungkinkan  transmisi  data  baik  secara  syncrhronous  maupun asyncrhronous, sehingga dengan memiliki USART pasti kompatibel dengan UART. Pada           ATmega8535,  secara  umum  pengaturan mode syncrhronous   maupun asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock saja. Jika pada  mode  asyncrhronous  masing-masing  peripheral  memiliki  sumber  clock sendiri, maka pada mode syncrhronous hanya ada satu sumber clock yang digunakan secara bersama-sama. Dengan demikian, secara hardware untuk mode asyncrhronous hanya   membutuhkan   2   pin   yaitu   TXD   dan   RXD,   sedangkan   untuk   mode syncrhronous harus 3 pin yaitu TXD, RXD dan XCK.

Gambar 2.5 Konfigurasi Pin Atmega 8535

Konfigurasi pin  ATmega8535  dengan  kemasan  40  pin  DIP  (Dual  Inline Package) dapat dilihat pada gambar 2.1. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut:
1.    VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2.    GND merukan pin Ground.
3.     Port A (PortA0…PortA7) merupakan pin input/output dua arah dan pin masukan ADC.
4.  Port  B  (PortB0…PortB7)  merupakan  pin  input/output  dua  arah  dan    dan  pin fungsi khusus, seperti dapat dilihat pada tabel di bawah ini.
Tabel 2.6  Fungsi Khusus Port B

Pin

Fungsi Khusus

PB7

SCK (SPI Bus Serial Clock)

PB6

MISO (SPI Bus Master Input/ Slave Output)

PB5

MOSI (SPI Bus  Master Output/ Slave Input)

PB4

SS (SPI Slave Select Input)


PB3
AIN1 (Analog Comparator Negative Input)
OC0 (Timer/Counter0 Output Compare Match Output)


PB2
AIN0 (Analog Comparator Positive Input) INT2 (External Interrupt 2 Input)

PB1

T1 (Timer/ Counter1 External Counter Input)


PB0
T0 T1 (Timer/Counter External Counter Input) XCK (USART External Clock Input/Output)

2.              Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti dapat dilihat pada tabel dibawah ini.
Tabel 2.7 Fungsi Khusus Port C


Pin

Fungsi khusus
PC7
TOSC2 ( Timer Oscillator Pin2)

PC6

TOSC1 ( Timer Oscillator Pin1)

PC5

Input/Output

PC4

Input/Output

PC3

Input/Output

PC2

Input/Output

PC1

SDA ( Two-wire Serial Buas Data Input/Output Line)

PC0

SCL ( Two-wire Serial Buas Clock Line)

6. Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti yang terlihat pada tabel dibawah ini.
Tabel 2.8 Fungsi Khusus Port D


Pin

Fungsi khusus

PD7

OC2 (Timer/Counter Output Compare Match Output)

PD6

ICP (Timer/Counter1 Input Capture Pin)

PD5

OC1A (Timer/Counter1 Output Compare A Match Output)

PD4

OC1B (Timer/Counter1 Output Compare B Match Output)

PD3

INT1 (External Interrupt 1 Input)

PD2

INT0 (External Interrupt 0 Input)

PD1

TXD (USART Output Pin)

PD0

RXD (USART Input Pin)

Jumat, 28 Januari 2011

Contoh Perintah Mid, left, Right Pada bascom

Contoh Program Bascom Untuk mengambil Nilai dari Kanan, Kiri, Tengah  

$regfile = "m8535.dat"      'untuk jenis Mikrokontroller yg digunakan'
$crystal = 8000000

Dim S As String * 15 , Z As String * 15

S = "ABCDEFG"            'Nilai Variabel S '

Z = Left(s , 5)                 'Z mengambil nilai S sebanyak lima Dari kiri'

Print Z                                                     'Tampilan keluar ABCDE

Z = Right(s , 3) : Print Z                         ' tampilkan nilai Z keluar adalah 3 dari kanan  yaitu GFE'

Z = Mid(s , 2 , 3) : Print Z                     'tampilkan nilai Z keluar adalah 2 dari kiri sampai dengan 3 nilAi      berikutnya  yaitu CDE'

End

Selasa, 18 Januari 2011

Cara Membuat Program LCD Dengan Bascom AVR

Mungkin banyak dari teman-teman sudah banyak yang bisa menggunakan program bascom saya mau share tentang program bascom untuk program LCD


$regfile = "m8535.dat"        'bwat Mikro yang digunakan
$crystal = 8000000            'untuk krytal yg digunakan


Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0   'port mana saja yang digunakan untuk LCD disini yg digunakan adalah Port B
Config Lcd = 16 * 2  'ukuran LCD yang digunakan

Cls   'buat  ngebersihin lcd jd ngak ada karakter
Locate 1 , 3  'klo menggunakan locate tandanya tulisan akan muncul dari kolom ke 1 baris ke 3
Lcd "Selamat datang"
Lowerline   'untuk tulisan dibawah
Lcd "Selamat Mencoba"
Wait 3 'untuk pewaktuaan

sebenarnya masih banyak instruksi yang dapat digunakan pada bascom avr untuk menampilkan tulisan di lCD
Semoga Bermanfaat

Senin, 17 Januari 2011

Program BascomAVR For SmartCard ACS120S

Nih Program Basom Yg bwat Smart Card Baca data DLLL Program pling Kren Dah

$regfile = "m8535.dat"
$crystal = 8000000
$baud = 9600
Open "comd.3:9600,8,n,1" For Output As #1


 Declare Sub Keypad()

 Declare Function Select_card() As Byte
 Declare Function Login_card(byval Sector As Byte) As Byte
 Declare Function Read_data() As String
 Declare Function Read_block(byval Blok As Byte) As String

   Dim Tag As Byte
   Dim R As Byte
   Dim Nama As Byte
   Dim Buffstr As String * 20
   Dim Hrf As String * 20
   Dim Fde As String * 10

Dim S As Byte
Dim Key As Byte
Dim Key_i As Byte
Dim Key_str As String * 1
Dim Pwd As String * 10
Dim Pgr As String * 4
Dim A As String * 10
Dim _data As String * 10

Rem ------------ lcd ------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2

Rem - - - - - - - - - - - - -keypad - - - - - - - - - - -
Config Kbd = Portb , Debounce = 200

Awal:
Cls
Locate 1 , 3
Lcd "Selamat datang"
Lowerline
Lcd "Tekan *"
Wait 3


Pwd = ""
For S = 1 To 1
      Call Keypad()
      Next S
If Pwd = "*" Then

     Goto Main
   Else
     Goto Awal
End If


Main:
set
Cls
Lcd "Dekatkan kartu"
Wait 3

set
Tag = 0
Tag = Select_card()
Cls
Lcd "SELECT KARTU"
Wait 1
Tag = 0
Tag = Login_card(2)
If Tag = 0 Then
R = 0
Do
R = R + 1
Cls
Lcd "KARTU KOSONG"
Waitms 800
 Cls
Waitms 500
Loop Until R = 3
Waitms 300
Goto Awal
End If

    Cls
    Lcd "LOGIN BERHASIL"
    Wait 1
Buffstr = Read_block(8)
      Cls
      Lcd "Selamat Datang"
      Lowerline
      Lcd Buffstr
      Hrf = Buffstr
      Wait 3

Fde = ""
For R = 1 To 4
    Buffstr = Read_block(9)
    Fde = Buffstr
   Cls
Lcd "pas1" ; Fde
   Next R

Wait 2

Cls
Lcd "Enter Password"
Lowerline
Lcd "Pass>> "


   Pwd = ""
   For S = 1 To 4
      Call Keypad()
      Lcd "*"
   Next S
Do
   If Pwd = Fde Then
     Cls
     Lcd "berhasil"
     Wait 6
    Goto Awal
   Else
   Wait 1
     Goto Awal
End If
Loop




Function Select_card() As Byte
        Dim Sbuf2 As String * 1
        Dim Strbuf As String * 20

        Printbin 2 ; 1 ; 1 ; 115 ; 115 ; 3
        Sbuf2 = ""
        Strbuf = ""
        Cls
        Lcd "No connect to"
        Lowerline
        Lcd "Smart Card"
        Strbuf = Read_data()

        Sbuf2 = Mid(strbuf , 2 , 1)

        If Sbuf2 = Chr(1) Then
                Select_card = 0
                Exit Function
        End If
        Select_card = 1
End Function
Function Login_card(byval Sector As Byte)as Byte

        Dim Sbuf4 As String * 25
        Dim Sbuf3 As Byte
        Dim Sbuf9 As String * 20
        Dim Bcc2 As Byte

        Sbuf4 = ""
        Sbuf3 = ""
        Bcc2 = 155 Xor Sector

        Printbin &H02 ; &H01 ; &H04 ; &H6C ; Sector ; &HFF ; &H0D ; Bcc2 ; &H03
        'Printbin 2 ; 1 ; 4 ; 108 ; Sector ; 255 ; 13 ; Bcc2 ; 3
        Do
                Sbuf3 = Inkey()
                If Sbuf3 > 0 Then
                    Sbuf4 = Sbuf4 + Chr(sbuf3)
                    If Sbuf3 = 3 Then Exit Do
                End If
        Loop

        Sbuf9 = Mid(sbuf4 , 3 , 1)
        If Sbuf9 = "L" Then
           Login_card = 1
            Exit Function
        End If
        Login_card = 0
End Function

Function Read_block(byval Blok As Byte) As String
        Dim Sbuf5 As String * 25
        Dim Sbuf6 As String * 20
        Dim Sbuf7 As Byte
        Dim Bcc As Byte


        Sbuf6 = ""
        Sbuf5 = ""
        Bcc = 113 Xor Blok
        Printbin 2 ; 1 ; 2 ; 114 ; Blok ; Bcc ; 3

        Do
                Sbuf7 = Inkey()
                If Sbuf7 > 0 Then
                        Sbuf5 = Sbuf5 + Chr(sbuf7)
                        If Sbuf7 = 3 Then Exit Do
                   End If

        Loop
        Sbuf6 = Mid(sbuf5 , 3 , 4)
        Read_block = Sbuf6

End Function

Function Read_data() As String
        Dim Sout As String * 25
        Dim Sbuf1 As String * 1

        Sout = ""
        Do
                Sbuf1 = Waitkey()
                Sout = Sout + Sbuf1
                If Sbuf1 = Chr(3) Then Exit Do
        Loop
        Read_data = Sout
 End Function


Sub Keypad()

Key_i = 16
Do
Key = Key_i
Waitms 100
Key_i = Getkbd()

Loop Until Key_i <> 16 And Key <> 16

Key_str = Lookupstr(key , Keydata_str)
Pwd = Pwd + Key_str

End Sub

Keydata_str:
Data "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0" , "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D"

Minggu, 02 Januari 2011

Contoh program Keypad bascom AVR

Pada saat ini mungkin telah banyak orang-orang yang lebih pintar dari saya dalam bhs pemograman namun saya cuma mau share aja contoh program klo ad yg salah tolong dibenerin


$regfile = "m8535.dat"
$crystal = 8000000
Rem ------------ lcd ------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2

Cls
Locate 1 , 4
Lcd "TEKAN KEYPAD"
Wait 5
Dim Ulang As Byte
Dim Keypad As Byte

'Declare Sub Ambil_data_keypad
Config Kbd = Portb , Debounce = 200
'If Ulang = 49 Then Ulang = 1
'If Ulang = 50 Then Ulang = 2
'If Ulang = 51 Then Ulang = 3
'If Ulang = 52 Then Ulang = 4
'If Ulang = 53 Then Ulang = 5
'If Ulang = 54 Then Ulang = 6
'If Ulang = 55 Then Ulang = 7
'If Ulang = 56 Then Ulang = 8
'If Ulang = 57 Then Ulang = 9

Do
Keypad = Getkbd()
If Keypad < 16 Then  
Ulang = Lookup(keypad , Tabel)
Print Ulang
Cls
Lcd Chr(ulang)
Lcd "ulang=" ; Ulang

End If
Loop
End

Tabel:
'Data &H2A , &H30 , &H23 , &H00 , &H31 , &H32 , &H33 , &H00 , &H34 , &H35 , &H36 , &H00
'Data    &H37 , &H38 , &H39 , &H00
Data &H31 , &H34 , &H37 , &H2A , &H32 , &H35 , &H38 , &H30 , &H33 , &H36 , &H39 , &H23 , &H41 , &H42 , &H43 , &H44
'Data &H23 , &H30 , &H2A , &H39 , &H38 , &H37 , &H36 , &H35 , &H34 , &H33 , &H32 , &H31
'Data &H23 , &H39 , &H36 , &H33 , &H30 , &H38 , &H35 , &H32 , &H2A , &H37 , &H34 , &H31


Program diatas hanya untuk ngetes keypad contoh ketika kita tekan tombol 1 maka akan muncul angka 1
keypad yg digunakan adalah matrik keypad 4x4 klo mau make keypad 4x3  juga bisa asalkan diubah aja pd bagian diberi warna merah jadi 12
Terus pada tabel klo ngak urut pas mencet keypad sebaiknya diatur pada bagian yg dikasih warna biru sbgai contoh 1 2 3
            4 5 6
            7 8 9
maka tinggal diganti heksanya aja dari atas kebawah trus keatas lagi jadi 1 4 7 2 5 8 3 6 9
nah selamat mencoba buat rekan-rekan