Pages

Kamis, 24 Maret 2011

Membuat Jam Digital yang dilengkapai dengan Setting Atmega Bascom AVR

Membuat program Jam digital dengan Mikrokontroler Bahasa Bascom ternyata tidak sulit. Bagi temen temen Elektromania ini mungkin bermanfaan bagi anda, ada contoh sederhana memebuat jam digital dengan dilengkapi setting jam dan tanggal

Gambar rangkaian :

Gambar rangkaian dengan Simulator Proteus
Kode Program dengan Bascom (Bas)
  1 
  2 $regfile = "m8def.dat"
  3 $crystal = 1000000
  4 $hwstack = 40
  5 $swstack = 20
  6 $framesize = 32
  7 
  8 Declare Sub Actual()
  9 
 10 Config Lcd = 16 * 4
 11 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
 12 Config Lcdbus = 4
 13 Deflcdchar Print , 14 , 32 , 17 , 25 , 21 , 19 , 17 , 17
 14 Config Date = Dmy , Separator = /
 15 Config Clock = Soft
 16 Enable Interrupts
 17 
 18 Dim Minuto As Byte
 19 
 20 
 21 Ddrd.2 = 1 : Portd.2 = 0
 22 Ddrc.0 = 0 : Portc.0 = 1
 23 Ddrc.1 = 0 : Portc.1 = 1
 24 
 25 Tombol_select Alias Pinc.0
 26 Tombol_set Alias Pinc.1
 27 
 28 
 29 Date$ = "23/03/11"
 30 Time$ = "00:00:00"
 31 Minuto = _min
 32 
 33 Cls
 34 Cursor Off
 35 
 36 Awal:
 37    Locate 1 , 1 : Lcd "BINA ELEKTRONIKA"
 38    Locate 3 , 1 : Lcd "JAM :"
 39    Locate 2 , 1 : Lcd "TGL :"
 40    Locate 4 , 1 : Lcd "         "
 41 
 42 Awal1:
 43 
 44    If Tombol_select = 0 Then
 45 
 46       Waitms 5
 47       Bitwait Tombol_select , Set
 48       Goto Seting_detik
 49 
 50    End If
 51 
 52    Call Actual
 53    Goto Awal1
 54 
 55 Seting_detik:
 56 
 57    Locate 4 , 1 : Lcd "SET DETIK"
 58 
 59 Seting_detik1:
 60 
 61    If Tombol_select = 0 Then
 62 
 63       Waitms 5
 64       Bitwait Tombol_select , Set
 65       Goto Seting_menit
 66 
 67    End If
 68 
 69    If Tombol_set = 0 Then
 70 
 71       Waitms 5
 72       _sec = 0
 73       Bitwait Tombol_set , Set
 74 
 75    End If
 76 
 77    Call Actual
 78    Goto Seting_detik1
 79 
 80 
 81 Seting_menit:
 82 
 83    Locate 4 , 1 : Lcd "SET MENIT "
 84 
 85 Seting_menit1:
 86 
 87    If Tombol_select = 0 Then
 88 
 89       Waitms 5
 90       Bitwait Tombol_select , Set
 91       Goto Seting_jam
 92 
 93    End If
 94 
 95    If Tombol_set = 0 Then
 96 
 97       Waitms 5
 98       Incr _min
 99       If _min = 60 Then
100          _min = 0
101       End If
102       Bitwait Tombol_set , Set
103 
104    End If
105 
106    Call Actual
107    Goto Seting_menit1
108 
109 Seting_jam:
110 
111    Locate 4 , 1 : Lcd "SET JAM  "
112 
113 Seting_jam1:
114 
115    If Tombol_select = 0 Then
116 
117       Waitms 5
118       Bitwait Tombol_select , Set
119       Goto Seting_hari
120 
121    End If
122 
123    If Tombol_set = 0 Then
124 
125       Waitms 5
126       Incr _hour
127       If _hour = 24 Then
128          _hour = 0
129       End If
130       Bitwait Tombol_set , Set
131 
132    End If
133 
134    Call Actual
135    Goto Seting_jam1
136 
137 Seting_hari:
138 
139    Locate 4 , 1 : Lcd "SET TANGGAL  "
140 
141 Seting_hari1:
142 
143    If Tombol_select = 0 Then
144 
145       Waitms 5
146       Bitwait Tombol_select , Set
147       Goto Seting_bulan
148 
149    End If
150 
151    If Tombol_set = 0 Then
152 
153       Waitms 5
154       Incr _day
155       If _day = 32 Then
156          _day = 1
157       End If
158       Bitwait Tombol_set , Set
159 
160    End If
161 
162    Call Actual
163    Goto Seting_hari1
164 
165 Seting_bulan:
166 
167    Locate 4 , 1 : Lcd "SET BULAN  "
168 
169 Seting_bulan1:
170 
171    If Tombol_select = 0 Then
172 
173       Waitms 5
174       Bitwait Tombol_select , Set
175       Goto Seting_tahun
176 
177    End If
178 
179    If Tombol_set = 0 Then
180 
181       Waitms 5
182       Incr _month
183       If _month = 13 Then
184          _month = 1
185       End If
186       Bitwait Tombol_set , Set
187 
188    End If
189 
190    Call Actual
191    Goto Seting_bulan1
192 
193 
194 Seting_tahun:
195 
196    'Locate 4 , 1 : Lcd "A"
197    'Locate 4 , 2 : Lcd Chr(0)
198    Locate 4 , 1 : Lcd "SET TAHUN  "
199 
200 Seting_tahun1:
201 
202    If Tombol_select = 0 Then
203 
204       Waitms 5
205       Bitwait Tombol_select , Set
206       Goto Awal
207 
208    End If
209 
210    If Tombol_set = 0 Then
211 
212       Waitms 5
213       Incr _year
214       If _year = 100 Then
215          _year = 00
216       End If
217       Bitwait Tombol_set , Set
218 
219    End If
220 
221    Call Actual
222    Goto Seting_tahun1
223 
224 
225 Actual:
226 
227    Locate 2 , 7 : Lcd Date$
228    Locate 3 , 7 : Lcd Time$
229    If _min <> Minuto Then
230 
231       Minuto = _min
232       Toggle Portd.2
233 
234    End If
235 
236 Return
237 
238 End

Jam Digital menggunakan Mikro ATMega8 dan Bahasa BASCOM-AVR

Belajar menggunakan LCD dengan ATMega8535 tidaklah sulit, dengan menggunakan bahasa Bascom AVR hal ini menjadi mudah dilakukan terutama bagi pemula. Berikut adalah rangkaian konfigurasi pin pada mikro ATMega8535 dan contoh program yang dapat dicoba. Selamat Mencoba.

Gambar Rangkaian :

Rangkaian Tampilan LCD. 

 Kode Bascom AVR


  1 $regfile = "m8def.dat"
  2 $crystal = 1000000
  3 '------------------------  lcd -----------------------------------------------
  4 Config Lcd = 16 * 2
  5 Config Lcdpin = Pin , Rs = Pind.0 , E = Pind.1 , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5
  6 Cls
  7 
  8 '---------------------------  ds 1307 -----------------------------------------
  9 $lib "ds1307clock.lib"
 10 'configure the scl and sda pins
 11 Config Sda = Portd.7
 12 Config Scl = Portd.6
 13 'address of ds1307
 14 Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
 15 Const Ds1307r = &HD1
 16 '------------------------------ key --------------------------------------------
 17 Config Pinc.1 = Input
 18 Config Pinc.2 = Input
 19 Config Pinc.3 = Input
 20 Config Pinc.4 = Input
 21 '------------------------------------------------------------------------------
 22 Config Debounce = 30
 23 
 24 Dim A As Byte , B As Byte , Data1 As Byte , C As Byte
 25 
 26 Dim Seco As Byte , Mine As Byte , Hour As Byte
 27 
 28 '----------------------------------------------------------------------------
 29 Cursor Off
 30 '-----------------------------
 31 Cls
 32 Locate 1 , 1
 33 Lcd "Jam Digital LCD"
 34 Locate 2 , 1
 35 Lcd "Bina Project"
 36 Wait 2
 37 
 38 For A = 1 To 15
 39  Shiftlcd Left
 40 Waitms 30
 41 Next
 42 
 43 Cls
 44 '-------------------------------------------------------------------------------
 45 Main:
 46 Do
 47          Gosub Ds1307
 48          Gosub 24_12
 49          Gosub Chekkey
 50 
 51 Loop
 52 '-------------------------------------------------------------------------------
 53 Ds1307:
 54         I2cstart                                            ' Generate start code
 55         I2cwbyte Ds1307w                                    ' send address
 56         I2cwbyte 0                                          ' start address in 1307
 57         I2cstart                                            ' Generate start code
 58         I2cwbyte Ds1307r                                    ' send address
 59         I2crbyte Seco , Ack                                 'sec
 60         I2crbyte Mine , Ack                                 ' MINUTES
 61         I2crbyte Hour , Nack                                ' Hours
 62         I2cstop
 63 
 64         Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)
 65 
 66         If Seco > 59 Then Seco = 0
 67         If Mine > 59 Then Mine = 0
 68         If Hour > 23 Then
 69         Hour = 0
 70         Gosub Seco
 71         End If
 72 
 73 Return
 74 '-------------------------------------------------------------------------------
 75  24_12:
 76  If Pinc.4 = 1 Then Gosub Disply_24
 77  If Pinc.4 = 0 Then Gosub Disply_12
 78  Return
 79 '-------------------------------------------------------------------------------
 80 Disply_24:
 81 
 82          Locate 1 , 1
 83          Lcd "Jam = " ; Hour ; ":" ;
 84          If Mine < 10 Then
 85             Lcd "0" ; Mine ; ":" ;
 86          Else
 87             Lcd Mine ; ":" ;
 88          End If
 89 
 90          If Seco < 10 Then
 91             Lcd "0" ; Seco
 92          Else
 93             Lcd Seco
 94          End If
 95 
 96          Locate 2 , 6
 97          Lcd "(24 Jam)"
 98 
 99 Return
100 
101 '-------------------------------------------------------------------------------
102 Disply_12:
103 
104          If Hour = 0 Then Hour = 12
105          If Hour > 12 Then Hour = Hour - 12
106 
107          Locate 1 , 1
108          Lcd "Jam = " ; Hour ; ":" ;
109          If Mine < 10 Then
110             Lcd "0" ; Mine ; ":" ;
111          Else
112             Lcd Mine ; ":" ;
113          End If
114 
115          If Seco < 10 Then
116             Lcd "0" ; Seco
117          Else
118             Lcd Seco
119          End If
120 
121          Locate 2 , 6
122          Lcd "(12 Jam)"
123 Return
124 '-------------------------------------------------------------------------------
125 Chekkey:
126 
127          Debounce Pinc.1 , 0 , Seco , Sub
128          Debounce Pinc.2 , 0 , Mine , Sub
129          Debounce Pinc.3 , 0 , Hour , Sub
130 
131 
132 Return
133 '---------------------------------------------
134 Seco:
135          Incr Seco
136          If Seco > 59 Then Seco = 0
137          Seco = Makebcd(seco)
138          I2cstart                                           ' Generate start code
139          I2cwbyte Ds1307w                                   ' send address
140          I2cwbyte 0                                         ' starting address in 1307
141          I2cwbyte Seco
142          I2cstop
143 Return
144 
145 '-------------------------------------
146 Mine:
147          Incr Mine
148          If Mine > 59 Then Mine = 0
149          Mine = Makebcd(mine)
150          I2cstart                                           ' Generate start code
151          I2cwbyte Ds1307w                                   ' send address
152          I2cwbyte 1                                         ' starting address in 1307
153          I2cwbyte Mine
154          I2cstop
155 Return

Aplikasi ADC pada ATMega8 dengan Bahasa Bascom AVR

Untuk aplikasi ADC menggunakan bahasa Bascom AVR sangatlah sederhana, kita tidak perlu memahami lebih dalam tentang proses yang terjadi pada LCD dan ADC. Kita cukup tau perintah yang digunakan untuk mengakses perangakat tersebut melalui bahasa pemrograman. Pada aplikasi ini saya mencoba menggunakan ATMega8 yang tidak jauh berbeda dengan ATMega8535, yang berbeda hanyalah beberapa fitur dan jumlah Port. Gambar rangkaiannya cukup sederhana seperti gambar dibawah ini.


Gambar Rangkaian Aplikasi ADC menggunakan ATMega8
Berikut ini adalah contoh program sederhana yang dapat di pahami dan dikembangkan dengan mudah dalam aplikasi yang kompleks. Mudah-mudahan bermanfaat. Terima kasih.

 Contoh Program :

  1 $regfile = "m8def.dat"
  2 $crystal = 4000000
  3 Config Portb = Output
  4 Config Lcd = 16 * 2
  5 Config Lcdpin = Pin, Rs = Portd.4, E = Portd.5, Db4 = Portd.0
  6 Config Lcdpin = Pin, Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3
  7 Config Adc = Single , Prescaler = Auto
  8 
  9 Start Adc
 10 'With STOP ADC, you can remove the power from the chip
 11 'Stop Adc
 12 
 13 Dim W As Word , Channel As Byte
 14 Channel = 0
 15 'Baca Nilai ADC dari channel 0
 16 
 17 Do
 18 Locate 1 , 1
 19 Lcd "Nilai ="
 20 W = Getadc(channel)
 21 Locate 1 , 9
 22 Lcd " "
 23 Locate 1 , 9
 24 Lcd W
 25 Waitms 100
 26 Loop
 27 End 

Minggu, 20 Maret 2011

Mencegah Penipuan oleh Karyawan

Penggelapan dan segala jenis penipuan keuangan lain barangkali merupakan bentuk pencurian paling umum oleh karyawan. Bisnis kecil cendeung menjadi korban karena mereka tidak memiliki kontrol untuk mencegahnya. Gunakan tips di bawah ini membantu melindungi bisnis Anda dari anggota staf yang nakal.


Pisahkan tugas-tugas

Tidak boleh ada seorang pun karyawan yang boleh mengontrol transaksi keuangan dari awal hingga akhir. Orang yang menulis cek tidak boleh sama dengan yang menandatangani cek. Orang yang membuka surat tidak boleh mencatat piutang dan merekonsiliasi rekening. Dengan membagi tanggung jawab, Anda akan mempersulit orang-orang yang ingin berbuat curang dan memanipulasi catatan.
Ambillah sendiri laporan bank Anda

Jangan beri kesempatan kepada orang yang berpeluang menggelapkan untuk menghancurkan atau menghilangkan bukti perbuatan jahatnya. Pemilik bisnis atau akuntan eksternal bertugas menerima laporan bank dalam keadaan tertutup dan bertugas membatalkan cek setiap bulan. Periksalah cek-cek itu secara hati-hati. Periksa nama terbayar, tanda tangan, dan pengesahan setiap cek. Perhatikan tanda-tanda penipuan seperti:

* Cek ke pemasok atau orang yang tidak Anda kenal
* Cek dengan nilai lebih tinggi daripada yang diizinkan untuk kas kecil
* Tanda tangan yang nampak dipalsukan
* Cek hilang, atau nomor cek sudah kedaluwarsa
* Cek yang dibuat untuk pihak ketiga namun disahkan oleh seseorang di perusahaan Anda
* Cek yang nama terbayar tidak tercantum di dalam daftar Anda

Lindungi cek perusahaan Anda

Jangan gegabah dengan cek perusahaan Anda Simpanlah di laci terkunci dan jangan memberikan kunci ke siapa pun. Gunakan cek bernomor, dan periksalah sesering mungkin nomor dari cek yang hilang. Gunakan prosedur “membatalkan pengesahan cek” yang menghendaki Anda (pemilik) memvalidasi semua item yang dibatalkan pengesahannya. Semua cek di atas nilai nominal harus memiliki dua tanda tangan (yang salah satunya adalah milik Anda). Dan jangan pernah menandatangani cek kosong.

Tanda tangani setiap cek gaji secara pribadi

Ini memang memakan waktu, namun biasanya hasilnya sepadan. Periksalah cek untuk memastikan apakah cek dikirim ke orang yang Anda kenal. Apabila ada nama yang tidak dikenal, cari orang tersebut. Hitunglah jumlah orang di dalam daftar gaji setiap minggu, dan periksalah apakah jumlahnya cocok dengan jumlah cek yang Anda buat. Pastikan file master penggajian perusahaan tidak dapat diubah tanpa persetujuan dan tanda tangan. Opsi lainnya: pisahkan rekening bank untuk penggajian, dan simpan jumlah yang sesuai untuk gaji di rekening tersebut; kemudian segera lakukan rekonsiliasi bulanan.

Periksa dengan seksama piutang Anda

Tugaskan lebih dari satu karyawan di dalam proses penghitungan dan verifikasi tanda terima yang masuk. Pastikan semua cek yang masuk sudah disahkan. Pertimbangkan untuk membeli stempel “untuk simpanan saja”, dan gunakan di semua cek yang masuk untuk mencegah karyawan menguangkannya. Periksalah secara pribadi keluhan pelanggan yang kreditnya belum diterima untuk pembayaran. Buatlah salinan untuk data sisi muka dan belakang cek pelanggan dan pasikan cek dikirim ke rekening bisnis Anda.

Beri waktu liburan bagi pemegang buku

Seorang karyawan yang pernah berhasil menggelapkan sesuatu mungkin akan berupaya untuk terus melakukannya. Banyak pemilik usaha kecil yang terkejut melihat karyawan yang nampak loyal – mereka tidak pernah libur dan tidak pernah cuti/izin sakit – ternyata sesungguhnya mencuri sesuatu dari mereka. Alasan bagi orang tersebut untuk selalu berada di kantor adalah untuk menutupi jejak kertas yang rumit. Liburkan karyawan yang menjalankan proses akuntansi/pembukuan setiap tahun. Idealnya, liburan akan berlangsung selama dua minggu, dan terjadi di akhir bulan, ketika buku sedang ditutup. Gunakan waktu ini untuk meminta orang lain memeriksa pembukuan dan mencari ketidakberesan.

Auditlah pembukuan Anda secara berkala

Mintalah auditor dari luar untuk mengaudit pembukuan Anda sekurangnya sekali setahun. Ini akan mempersulit pencuri dalam menghilangkan jejak perbuatannya. Audit ini harus tidak terjadwal dan harus mengejutkan; pastikan audit tidak berlangsung pada waktu yang sama setiap tahunnya. Apabila Anda mencurigai ada penipuan, pertimbangkan khususnya untuk meminta “audit penipuan” dan bukan “audit umum”. Jenis audit ini dirancang untuk mengungkapkan dan mencegah jenis kerugian ini.

Pahami pembukuan Anda

Penggelapan biasanya terjadi ketika pembukuan terlihat kacau dan tidak terawasi, yang memudahkan karyawan untuk menyimpan uang tunai dan tanda terima. Sebagai pemilik bisnis, Anda harus mengenal pembukuan perusahaan dan sistem pencatatan data. Dengan cara ini Anda dapat dengan mudah memeriksa pembukuan dan memastikan tidak ada yang keliru. Apabila Anda bukan “orang yang mengerti angka”, mintalah akuntan menunjukkan apa yang Anda cari, atau ambillah pelajaran akuntansi di sekolah setempat. Dengan mempercayai orang lain untuk mengawasi bagian yang paling penting di dalam bisnis Anda ini hanyalah membuka pintu ke arah penipuan.

Amankan perangkat lunak pembukuan Anda

Jangan biarkan ada akses tidak sah ke perangkat lunak pembukuan Anda. Jangan menempatkan komputer yang menyimpan pembukuan di jaringan. Pastikan komputer dan perangkat lunak terlindungi dengan sandi. Ubahlah sandi secara berkala untuk mencegah orang yang tidak berhak mengakses program. Apabila Anda masih menggunakan buku besar di atas kertas, simpanlah di laci terkunci.