मैं 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
से, मैं नहीं जानता ...
नीचे कीपैड बोर्ड की योजनाएं हैं: