ฉันกำลังออกแบบปุ่มกดใน VHDL ทุกอย่างทำงานได้ดีเมื่อกดปุ่มเพียงปุ่มเดียว ฉันกำลังสแกนแต่ละคอลัมน์เพื่อกดปุ่มในเครื่องสถานะและเมื่อไม่มีการกดปุ่มซึ่งเป็นเงื่อนไขที่pin4pin6pin7pin2 = "0000"ฉันสลับไปยังสถานะถัดไปเพื่อสแกนคอลัมน์ถัดไป ดังนั้นผมจึงตั้งคอลัมน์pin3pin1pin5ตามลำดับเพื่อ"001", และ"010""100"
ในขณะที่การสแกนpin3pin1pin5เป็น"001"และถ้าpin4pin6pin7pin2เป็น"0100"แล้วก็ "9" ถูกกด ฉันประกาศใน VHDL pin4pin6pin7pin2เป็นอินพุตและpin3pin1pin5พอร์ตเอาต์พุต เมื่อฉันกด 6 และ 9 ในเวลาเดียวกันpin6และมีpin7 highปุ่มกดแรกจะถูกอ่านปุ่มที่สองจะถูกละเว้น เมื่อฉันกด 3 และ 7 ในเวลาเดียวกันคนแรกที่กดด้วยไม่กี่มิลลิวินาทีก่อนที่จะชนะและที่สำคัญคือการอ่านครั้งแรกที่สำคัญที่สองจะถูกละเว้นpin2และมีpin4high
นี่คือส่วนที่ยุ่งยาก. เมื่อฉันกด 4 และ 6 ในเวลาเดียวกันฉันคาดว่าpin7จะเป็นhighแต่มันจะกลายเป็นlowและpin4pin6pin7pin2 = "0000"ซึ่งฉันไม่เข้าใจว่าทำไมและทำไม เนื่องจาก"0000"ตรวจพบว่าไม่มีการกดปุ่มใด ๆ เครื่องของรัฐจะกระโดดจากรัฐหนึ่งไปยังอีกรัฐหนึ่ง ในขณะที่ถือ 4 และ 6 หากผลักดันและใบ 4 หลายครั้งก็จะถูกตรวจพบว่าเป็น 6 กดหลายครั้งซึ่งเป็นปัญหาใหญ่ ฉันจะดีใจถ้าคุณสามารถช่วยฉันแก้ปัญหานี้!
สิ่งเดียวกันเกิดขึ้นกับ "1" และ "2" เหมือนกันกับ "7" และ "8" สำหรับคีย์ในแถวเดียวกันเท่านั้น เนื่องจากนี่เป็นโครงการต่อเนื่องฉันไม่สามารถใส่รหัส VHDL ของฉันทางออนไลน์ได้ :( ฉันจะดีใจถ้าคุณสามารถให้เคล็ดลับแก่ฉันเพื่อเอาชนะสิ่งนี้!

ด้านล่างฉันไม่ได้อัปโหลดรหัสของฉันไปยังบอร์ดไม่มีรหัสกำลังทำงานอยู่ การเชื่อมPin5ต่อกับกราวด์กดเพียงครั้งเดียวบน 1,2,4,5,7,8, *, 0 ไม่ได้เปิดPin3ไฟ LED แต่ถ้าฉันกด 6 แล้ว 4 ในเวลาเดียวกันPin3LED จะติดและPin7LED ยังคงเปิดอยู่ แต่ เมื่อรหัสของฉันกำลังทำงานสิ่งนี้จะไม่เกิดขึ้น บางทีฉันอาจจะเชื่อมต่อบางอย่างผิดปกติและโชคดีPin7ที่ฉันไม่ทราบ ...

ด้านล่างเป็นแผนผังของแผงปุ่มกด:


