मैं VHDL में कीपैड डिजाइन कर रहा हूं। सब कुछ ठीक काम करता है जब केवल एक कुंजी दबाया जाता है। मैं एक स्टेट मशीन में एक कुंजी प्रेस के लिए प्रत्येक कॉलम को स्कैन कर रहा हूं और जब कोई कुंजी दबाया नहीं जाता है, तो वह स्थिति है जो pin4pin6pin7pin2 = "0000"मैं अगले कॉलम को स्कैन करने के लिए अगले राज्य पर स्विच करता हूं। इस प्रकार मैं स्तंभों को pin3pin1pin5क्रमिक रूप से सेट करता हूं "001", "010"और "100"।
स्कैनिंग के pin3pin1pin5रूप में "001"और अगर pin4pin6pin7pin2है "0100"तो बस "9" दबाया जाता है। मैं VHDL pin4pin6pin7pin2में इनपुट और pin3pin1pin5आउटपुट पोर्ट के रूप में घोषित करता हूं । जब मैं एक ही समय में 6 और 9 दबाएँ pin6और pin7कर रहे हैं high। पहली दबाए गए कुंजी को पढ़ा जाता है, दूसरे को अनदेखा किया जाता है। जब मैं एक ही समय में 3 और 7 दबाता हूं, तो पहली जीत के पहले कुछ एमएस के साथ दबाया जाता है और पहली कुंजी पढ़ी जाती है, दूसरी कुंजी को अनदेखा किया जाता है, pin2और pin4हैं high।
यहाँ मुश्किल हिस्सा है। जब मैं एक ही समय में 4 और 6 दबाता हूं, तो मैं होने की उम्मीद pin7करता हूं highलेकिन यह बन जाता है lowऔर pin4pin6pin7pin2 = "0000", जो मुझे समझ नहीं आता कि कैसे और क्यों। क्योंकि "0000"बिना किसी दबाए कुंजी के रूप में पाया जाता है, राज्य मशीन राज्य से राज्य तक कूदती है। 4 और 6 को पकड़ते समय अगर कोई 4 बार धकेलता है और छोड़ता है, तो उसे 6 बार दबाया जाता है , जो एक बड़ा बग है । मुझे खुशी होगी अगर आप मुझे इस पर बहस करने में मदद कर सकते हैं!
एक ही बात "1" और "2" के साथ होती है, वही "7" और "8" के साथ एक ही पंक्ति पर कुंजियों के लिए। चूंकि यह एक चालू परियोजना है, मैं अपना VHDL कोड ऑनलाइन नहीं डाल सकता :( मुझे खुशी होगी अगर आप मुझे इससे उबरने के लिए सुझाव दे सकते हैं!

नीचे, Im मेरे कोड को बोर्ड पर अपलोड नहीं कर रहा है, कोई भी कोड नहीं चल रहा है। Pin5ग्राउंड से कनेक्ट होने पर, 1,2,4,5,7,8, *, 0 पर एक भी प्रेस Pin3एलईडी को चालू नहीं करता है, लेकिन अगर Im 6 दबा रहा है और 4 एक ही समय में Pin3एलईडी चालू है और Pin7एलईडी अभी भी चालू है, लेकिन जब मेरा कोड चल रहा है तो ऐसा नहीं होता है। हो सकता है कि मैंने कुछ गलत जोड़ा हो और सौभाग्य Pin7से, मैं नहीं जानता ...

नीचे कीपैड बोर्ड की योजनाएं हैं:


