Pages

Senin, 26 Maret 2012

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

8 komentar:

  1. artikel yang sangat bagus untuk belajar pak.....
    saya banyak belajar dari blok ini.
    kalau gak keberatan mohon bisa diberi bimbingan
    bagaimana cara menampilkan jam dan kalender tersebut di dot metrix.maklum lah pak,baru belajar biar asyik nyoba yang bisa berkedap kedip gitu........

    salam......

    BalasHapus
  2. Ma'af mas Jad saya belum ngrancang punyanya baru running text pada dot matrik aja mas, lain kali aku posting

    BalasHapus
  3. Ma'af mas Jad saya belum ngrancang punyanya baru running text pada dot matrik aja mas, lain kali aku posting

    BalasHapus
  4. ok dech pak,makasih atas responnya.saya menunggu postingan berikutnya.

    salam sukses aja tuk pak parno.......

    BalasHapus
  5. Pak bisa buatkan listing program pengendali 5 lampu menggunakan modem wavecom berbasis mikro ATmega8535 dan ada feedback'y saya pakai sensor LDR. .program'y pakai BACOM-AVR
    kl saya boleh minta, tolong krim ke email saya onetho.cannabis@gmail.com
    ni buat skripsi saya pak. .dan saya lum begitu mengerti masih banyak bingung'y pak
    sebelum'y saya ucapkan Terima Kasih Pak

    BalasHapus
  6. maaf pak saya coba copy paste di bascom avr listing nya kok msih ada error ya di line paling bawah apa masih ada yang kurang ya... tolong di bantu...

    BalasHapus
  7. Terkadang pernah saya jumpai error di baris 9 karena dalam instalasi software bascom kurang lengkap, mungkin versinya atau mungkin masih versi demo , tolong di cek lagi kalu masih terjadi eror bisa dikonsultasikan lagi ... OK

    BalasHapus
  8. mas admin gimna caranya bikin radio streaming ?

    BalasHapus

Silahkan berkomentar !