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 pin3pin1pin5sıralı olarak "001", "010"ve "100".
Tararken pin3pin1pin5olarak "001"ve eğer pin4pin6pin7pin2olduğunu "0100"sadece o "9" basılır. VHDL'de pin4pin6pin7pin2giriş ve pin3pin1pin5çıkış portları olarak beyan ederim . Aynı anda 6 ve 9 bastığınızda pin6ve pin7vardı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 pin2ve pin4vardır high.
İşte zor kısmı. Aynı anda 4 ve 6 bastığınızda, beklediğim pin7olmak highama olur lowve 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 Pin51,2,4,5,7,8 zemine sağlam bir şekilde, tek bir basın *, 0 dönün gelmez Pin3Im sonra aynı anda 6 ve 4 basılarak değil, eğer LED Pin3ışığı yanıyor ve Pin7LED hala ama kodum çalışırken bu gerçekleşmez. Belki yanlış bir şey bağladım ve neyse ki Pin7açık, bilmiyorum ...

Tuş takımı panosunun şemaları aşağıdadır:


