Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 01:00:02 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 191
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 189
Total: 189

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

hubungan keypada 3 x 4 dengan at89s51

Dimulai oleh hafidzar, April 25, 2010, 09:33:43 AM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

hafidzar

Saya menghubungkan keypad 3 x 4 ke at89s51 dengan susunan pin sbb :
Keypad 3 x 4   At89s51
C1                P0.0
C2                P0.1
C3                P0.2
R1                P0.4
R2                P0.5
R3                P0.6
R4                P0.7
vcc   
   
Lalu saya membuat program dengan bascom sbg berikut
$regfile = "8051.dat"
$crystal = 11059200
$baud = 9600
CONFIG LCDPIN = PIN, DB4=P1.4,DB5=P1.4,DB6=P1.6,DB7.P1.7,E=P1.2,RS=P1.0
CONFIG LCD = 16 *2

CLS
if P0 =&HFF then
     lcd "tombol tidak ditekan"
else
      lowerline   
      lcd  "tombol ditekan"
endif

ketika dijalankan pada lcd tampil "tombol tidak ditekan" ketika salah satu keypad saya tekan (tombol apa saja) yang muncul tetap "tombol tidak ditekan" seharusnya "tombol ditekan".
Ketika vcc pada keypad dan saya hubungkan dengan negatif hasilnya tetap seperti diatas.
Mohon pencerahan.



0y1k

Wah.. Saya terbiasa dengan bahasa C :-P
Maksud dari P0 =&HFF itu sama seperti gini gak?
P0 = P0 & HFF

atw maksudnya lain?
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

kuin

pemasangan keypad boleh sembarang terhadap PORT. yang penting semuanya dipetakan.

lakukan scanning kolom dan baris keypad.

manfaatkan intruksi logika seperti   "&"

muflih

Maksud dari P0 =&HFF adalah port 0 semua bernilai 1 (jika tidak ada penekanan tombol). jika salah satu tombol keypad ditekan berarti adalah yang bernilai 0. tapi kok ketika saya menekan salah satu tombol keypad yang muncul hasilnya tetap "tidak ada penekanan tombol".

0y1k

Kutip dari: muflih pada Mei 11, 2010, 10:24:04 PM
Maksud dari P0 =&HFF adalah port 0 semua bernilai 1 (jika tidak ada penekanan tombol). jika salah satu tombol keypad ditekan berarti adalah yang bernilai 0. tapi kok ketika saya menekan salah satu tombol keypad yang muncul hasilnya tetap "tidak ada penekanan tombol".

eh bentar mau nanya dulu nih bung.. hehehe
cara bedakan port itu sebagai input dan ouput ada ga?? sebelumnya dikasih tahu dulu yang mana input dan ouput.. takutnya portnya yang bung muflih itu hanya sebagai port...
atau otomatis port bisa langsung sebagai input dan output? gitu??
k'lo di bahasa C ada perintah yang bedakan port sebagai input dan ouput
DDRA = 0xFF (menandakan PORTA sebagai output)
DDRA = 0x00 (menandakan PORTA sebagai input)
DDRA = 0x0F (menandakan PORTA.0 sampai PORTA.3 sebagai output dan sisanya input)
begitulah sekiranya bung... ditakutkan belum ada pendefinisian tentang input dan ouputnya
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

muflih

nga ada pendefenisian input dan outputnya. saya sekarang lagi belajar secara otodidak jd banyak nga ngertinya.saya baca buku bahwa jika keypad tidak ada ditekan paka outputnya semua 1 jika ada ditekan salah satu tombol maka ada yang bernilai 0 . jd saya ingin buktikan dengan program bascom diatas. jadi mohon masukan dan pencerahan bagai mana seharusnya? scanning itu apa sih ?

0y1k

Kutip dari: muflih pada Mei 14, 2010, 09:54:51 PM
nga ada pendefenisian input dan outputnya. saya sekarang lagi belajar secara otodidak jd banyak nga ngertinya.saya baca buku bahwa jika keypad tidak ada ditekan paka outputnya semua 1 jika ada ditekan salah satu tombol maka ada yang bernilai 0 . jd saya ingin buktikan dengan program bascom diatas. jadi mohon masukan dan pencerahan bagai mana seharusnya? scanning itu apa sih ?
wah sulit juga yah k'lo ga ada pembedaan output dan inputnya
kayaknya ada deh.. hehehehe

sy mahir dalam C nih.. bukan bascom. maaf
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع

Too Payz

#7
Kutipk'lo di bahasa C ada perintah yang bedakan port sebagai input dan ouput
DDRA = 0xFF (menandakan PORTA sebagai output)
DDRA = 0x00 (menandakan PORTA sebagai input)
DDRA = 0x0F (menandakan PORTA.0 sampai PORTA.3 sebagai output dan sisanya input)
begitulah sekiranya bung... ditakutkan belum ada pendefinisian tentang input dan ouputnya
Bukan masalah bahasa C-nya tapi masalah mikrokontrollernya.
Mikro AVR dan MCS51 berbeda untuk pengaturan IO-nya

AVR ada 3 register yang berpengaruh :
- DDRx = Data Direction Register, Register yang menentukan "arah" apakah input atau output.
- PORTx = Register OUTPUT.
- PINx = Register INPUT.

Sedangkan MCS51 hanya perintah PORTx saja.
Apakah itu Output atau Input ditentukan dari Hardware-nya.
Makanya Logika pada Port MCS51 sangat terpengaruh keadaan logika dari luar dan ini kelemahan MCS51.

Kutip
Lalu saya membuat program dengan bascom sbg berikut
$regfile = "8051.dat"
$crystal = 11059200
$baud = 9600
CONFIG LCDPIN = PIN, DB4=P1.4,DB5=P1.4,DB6=P1.6,DB7.P1.7,E=P1.2,RS=P1.0
CONFIG LCD = 16 *2

CLS
if P0 =&HFF then
    lcd "tombol tidak ditekan"
else
     lowerline  
     lcd  "tombol ditekan"
endif
Pantes aja "tombol tidak ditekan", lha di tekan ga ditekan tetap FF tuh...
Lihat rangkaian schematik keypad dan coba pelajari logika hardware keypad..

Udah liat blogku.. ?  ::)   ::)
Baca-baca yaa...   ;D   ;D

Tapi coba logikanya gini (sori ga ngerti BASCOM juga:  ::)   ::))
P0 = HFE            >> sejak awal logika P0 selalu FE kalo bisa jgn didalam looping
if P0 ==HFE then
    lcd "tombol tidak ditekan"
if P0.4 ==0 then         >> ganti P0==HEE atau P0==HDE atau P0==HBE atau P0==H7E
     lowerline  
     lcd  "tombol X"
endif
delay(xx)            >> jangan lupa tundaan biar perubahan tampilan LCD kelihatan

dah... mudah-mudahan Ceraaah...   ;D   ;D   ;)

0y1k

Kutip dari: Too Payz pada Mei 15, 2010, 06:31:48 AM
Kutipk'lo di bahasa C ada perintah yang bedakan port sebagai input dan ouput
DDRA = 0xFF (menandakan PORTA sebagai output)
DDRA = 0x00 (menandakan PORTA sebagai input)
DDRA = 0x0F (menandakan PORTA.0 sampai PORTA.3 sebagai output dan sisanya input)
begitulah sekiranya bung... ditakutkan belum ada pendefinisian tentang input dan ouputnya
Bukan masalah bahasa C-nya tapi masalah mikrokontrollernya.
Mikro AVR dan MCS51 berbeda untuk pengaturan IO-nya

AVR ada 3 register yang berpengaruh :
- DDRx = Data Direction Register, Register yang menentukan "arah" apakah input atau output.
- PORTx = Register OUTPUT.
- PINx = Register INPUT.

Sedangkan MCS51 hanya perintah PORTx saja.
Apakah itu Output atau Input ditentukan dari Hardware-nya.
Makanya Logika pada Port MCS51 sangat terpengaruh keadaan logika dari luar dan ini kelemahan MCS51.

Kutip
Lalu saya membuat program dengan bascom sbg berikut
$regfile = "8051.dat"
$crystal = 11059200
$baud = 9600
CONFIG LCDPIN = PIN, DB4=P1.4,DB5=P1.4,DB6=P1.6,DB7.P1.7,E=P1.2,RS=P1.0
CONFIG LCD = 16 *2

CLS
if P0 =&HFF then
     lcd "tombol tidak ditekan"
else
      lowerline   
      lcd  "tombol ditekan"
endif
Pantes aja "tombol tidak ditekan", lha di tekan ga ditekan tetap FF tuh...
Lihat rangkaian schematik keypad dan coba pelajari logika hardware keypad..

Udah liat blogku.. ?  ::)   ::)
Baca-baca yaa...   ;D   ;D

Tapi coba logikanya gini (sori ga ngerti BASCOM juga:  ::)   ::))
P0 = HFE            >> sejak awal logika P0 selalu FE kalo bisa jgn didalam looping
if P0 ==HFE then
     lcd "tombol tidak ditekan"
if P0.4 ==0 then         >> ganti P0==HEE atau P0==HDE atau P0==HBE atau P0==H7E
      lowerline   
      lcd  "tombol X"
endif
delay(xx)            >> jangan lupa tundaan biar perubahan tampilan LCD kelihatan

dah... mudah-mudahan Ceraaah...   ;D   ;D   ;)

oh iyah, tampaknya emang terletak pada perbedaan mikronya.. hehehe
maklum ga pernah make keluarga MCS-51 (jadul sih)
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع