VHDL'de bir tuş takımı tasarlıyorum. Yalnızca tek bir tuşa basıldığında her şey yolunda gider. Her sütunu bir durum makinesinde bir tuşa basmak için tarıyorum ve hiçbir tuşa basılmadığında, pin4pin6pin7pin2 = "0000"
sonraki sütunu taramak için bir sonraki duruma geçmem şartıdır . Böylece sütun ayarlamak pin3pin1pin5
sıralı olarak "001"
, "010"
ve "100"
.
Tararken pin3pin1pin5
olarak "001"
ve eğer pin4pin6pin7pin2
olduğunu "0100"
sadece o "9" basılır. VHDL'de pin4pin6pin7pin2
giriş ve pin3pin1pin5
çıkış portları olarak beyan ederim . Aynı anda 6 ve 9 bastığınızda pin6
ve pin7
vardır high
. İlk basılan tuş okunur, ikincisi yok sayılır. Aynı anda 3 ve 7 bastığınızda, ilk galibiyet önce birkaç ms ile preslenmiş ve ilk anahtar ikinci anahtar yok sayılır, okumak, bir pin2
ve pin4
vardır high
.
İşte zor kısmı. Aynı anda 4 ve 6 bastığınızda, beklediğim pin7
olmak high
ama olur low
ve pin4pin6pin7pin2 = "0000"
nasıl ve neden anlamıyorum, hangi. Çünkü "0000"
bir herhangi bir tuşa basıldığında olarak tespit edilir, durum makinesi durumundan durumuna geçer. Biri 4'ü birkaç kez itip bırakırsa, 4 ve 6'yı basılı tutarken, birkaç kez 6 kez basıldığı algılanır, bu büyük bir hatadır . Bu hata ayıklama bana yardımcı olabilir sevinirim!
Aynı şey "1" ve "2" ile aynıdır, "7" ve "8" ile aynı satırdaki tuşlar için de geçerlidir. Bu devam eden bir proje olduğu için VHDL kodumu çevrimiçi olarak koyamam :( Bana bunun üstesinden gelmek için ipuçları verebilirseniz sevinirim!
Aşağıda, kodumu panoya yüklemiyorum, hiçbir kod çalışmıyor. Bağlama Pin5
1,2,4,5,7,8 zemine sağlam bir şekilde, tek bir basın *, 0 dönün gelmez Pin3
Im sonra aynı anda 6 ve 4 basılarak değil, eğer LED Pin3
ışığı yanıyor ve Pin7
LED hala ama kodum çalışırken bu gerçekleşmez. Belki yanlış bir şey bağladım ve neyse ki Pin7
açık, bilmiyorum ...
Tuş takımı panosunun şemaları aşağıdadır: