Saya merancang tombol di VHDL. Semuanya berfungsi dengan baik ketika hanya satu tombol yang ditekan. Saya memindai setiap kolom untuk menekan tombol di mesin keadaan dan ketika tidak ada tombol yang ditekan, yang merupakan kondisi pin4pin6pin7pin2 = "0000"
saya beralih ke keadaan berikutnya untuk memindai kolom berikutnya. Jadi saya mengatur kolom pin3pin1pin5
secara berurutan ke "001"
, "010"
dan "100"
.
Saat memindai pin3pin1pin5
sebagai "001"
dan jika pin4pin6pin7pin2
ini "0100"
kemudian hanya "9" ditekan. Saya mendeklarasikan dalam VHDL pin4pin6pin7pin2
sebagai input dan pin3pin1pin5
sebagai port output. Ketika saya menekan 6 dan 9 pada saat yang sama pin6
dan pin7
sedang high
. Tombol yang ditekan pertama dibaca, yang kedua diabaikan. Ketika saya menekan 3 dan 7 pada saat yang sama, yang pertama ditekan dengan beberapa ms sebelum menang dan tombol pertama dibaca, tombol kedua diabaikan, pin2
dan pin4
sedang high
.
Inilah bagian yang sulit. Ketika saya menekan 4 dan 6 pada saat yang sama, saya berharap pin7
akan high
tetapi itu menjadi low
dan pin4pin6pin7pin2 = "0000"
, yang saya tidak mengerti bagaimana dan mengapa. Karena "0000"
terdeteksi sebagai tidak ada tombol yang ditekan, mesin negara melompat dari negara ke negara. Sambil memegang 4 dan 6 jika seseorang mendorong dan meninggalkan 4 beberapa kali, itu terdeteksi sebagai 6 ditekan beberapa kali, yang merupakan bug besar . Saya akan senang jika Anda dapat membantu saya men-debug ini!
Hal yang sama terjadi dengan "1" dan "2", sama dengan "7" dan "8" hanya untuk tombol pada baris yang sama. Karena ini adalah proyek yang sedang berjalan saya tidak dapat menempatkan kode VHDL saya online :( Saya akan senang jika Anda dapat memberi saya tips untuk mengatasi ini!
Di bawah, saya tidak mengunggah kode saya ke papan tulis, tidak ada kode yang berjalan. Menghubungkan Pin5
ke ground, satu tekan pada 1,2,4,5,7,8, *, 0 tidak menyalaPin3
LED tetapi jika saya menekan 6 dan kemudian 4 pada saat yang sama Pin3
LED menyala dan Pin7
LED masih menyala, tetapi ketika kode saya berjalan ini tidak terjadi. Mungkin saya menghubungkan sesuatu yang salah dan untungnya Pin7
aktif, saya tidak tahu ...
Di bawah ini adalah skema papan keypad: