- நமக்கு ஏன் 4x4 விசைப்பலகை தேவை:
- 4x4 மேட்ரிக்ஸ் கீபேட் எவ்வாறு செயல்படுகிறது:
- தேவையான பொருள்:
- சுற்று வரைபடம்:
- நிரலாக்க விளக்கம்:
விசைப்பலகைகள் பரவலாகப் பயன்படுத்தப்படும் உள்ளீட்டு சாதனங்கள் பல்வேறு மின்னணுவியல் மற்றும் உட்பொதிக்கப்பட்ட திட்டங்களில் பயன்படுத்தப்படுகின்றன. அவை எண்கள் மற்றும் எழுத்துக்களின் வடிவில் உள்ளீடுகளை எடுக்கப் பயன்படுகின்றன, மேலும் செயலாக்கத்திற்கான கணினியில் அவை ஊட்டப்படுகின்றன. இந்த டுடோரியலில் நாம் 4x4 மேட்ரிக்ஸ் விசைப்பலகையை PIC16F877A உடன் இடைமுகப்படுத்தப் போகிறோம்.
விரிவான தர்க்கத்திற்குச் சென்று, விசைப்பலகையை எவ்வாறு பயன்படுத்துவது என்பதை அறிய முன், நாம் சில விஷயங்களை அறிந்து கொள்ள வேண்டும்.
நமக்கு ஏன் 4x4 விசைப்பலகை தேவை:
சுவிட்ச் உள்ளீடு போன்ற டிஜிட்டல் சிக்னலைப் படிக்க பொதுவாக மைக்ரோகண்ட்ரோலர் யூனிட்டின் ஒற்றை I / O முள் பயன்படுத்துகிறோம். உள்ளீட்டு நோக்கங்களுக்காக 9, 12, 16 விசைகள் தேவைப்படும் சில பயன்பாடுகளில், ஒவ்வொரு விசையையும் மைக்ரோகண்ட்ரோலர் போர்ட்டில் சேர்த்தால், நாங்கள் 16 I / O போர்ட்களைப் பயன்படுத்துவோம். இந்த 16 I / O துறைமுகங்கள் I / O சமிக்ஞைகளைப் படிப்பதற்காக மட்டுமல்ல, அவை புற இணைப்புகளாகவும் பயன்படுத்தப்படலாம், ADC ஆதரவு, I2C, SPI இணைப்புகள் போன்றவையும் அந்த I / O ஊசிகளால் ஆதரிக்கப்படுகின்றன. அந்த ஊசிகளை சுவிட்சுகள் / விசைகளுடன் இணைத்துள்ளதால், அவற்றை நாம் பயன்படுத்த முடியாது, ஆனால் I / O போர்ட்டுகளாக மட்டுமே பயன்படுத்த முடியும். இது ஒன்றும் புரியவில்லை. எனவே, முள் எண்ணிக்கையை எவ்வாறு குறைப்பது? பதில், ஹெக்ஸ் விசைப்பலகை அல்லது மேட்ரிக்ஸ் விசைப்பலகையைப் பயன்படுத்துதல்; முள் எண்ணிக்கையை நாம் குறைக்கலாம், இது 4x4 மேட்ரிக்ஸ் விசைகளை இணைக்கிறது. இது 8 ஊசிகளைப் பயன்படுத்தும், அவற்றில் 4 வரிசைகளிலும் 4 நெடுவரிசைகளிலும் இணைக்கப்பட்டுள்ளன, எனவே மைக்ரோகண்ட்ரோலரின் 8 ஊசிகளைச் சேமிக்கும்.
4x4 மேட்ரிக்ஸ் கீபேட் எவ்வாறு செயல்படுகிறது:

மேல் படத்தில் ஒரு மேட்ரிக்ஸ் விசைப்பலகையானது இடதுபுறத்தில் காட்டப்பட்டுள்ளது. வலதுபுறத்தில் உள் இணைப்பு மற்றும் துறைமுக இணைப்பு காட்டப்பட்டுள்ளது. நாங்கள் துறைமுக பார்த்தால் 8 ஊசிகளையும், முதல் 4 இடமிருந்து வலமாக உள்ளன எக்ஸ் 1, x2, x3, மற்றும் X4 உள்ளன வரிசைகள், மற்றும் கடந்த 4 வலமாக Y1, y2, Y3, Y4 நான்கு பத்திகள். நாம் 4 வரிசைகள் அல்லது எக்ஸ் பக்க செய்தால் வெளியீடு மற்றும் அவர்களை செய்ய தர்க்கம் குறைந்த அல்லது 0, மற்றும் 4 செய்ய பத்திகள் போன்ற உள்ளீடு மற்றும் விசைகளை படிக்க நிருபர் போது நாம் சுவிட்ச் செய்தியாளர் படிக்கும் ஒய் 0 பெறுகிறார்.
Nxn மேட்ரிக்ஸில் n என்பது எண்ணாக இருக்கும் அதே விஷயம் நடக்கும். அது 3x3, 6x6 போன்றதாக இருக்கலாம்.
இப்போது 1 அழுத்தும் என்று நினைக்கிறேன். பின்னர் 1 எக்ஸ் 1 வரிசை மற்றும் ஒய் 1 நெடுவரிசையில் அமைந்துள்ளது. எக்ஸ் 1 0 எனில், ஒய் 1 0 ஆக இருக்கும். அதே வழியில் எக்ஸ் 1 வரிசையில் ஒவ்வொரு விசையும், நெடுவரிசை ஒய் 1, ஒய் 2, ஒய் 3 மற்றும் ஒய் 4 ஐ உணரலாம். ஒவ்வொரு சுவிட்சிற்கும் இது நடக்கும், மேலும் மேட்ரிக்ஸில் சுவிட்சுகளின் நிலையைப் படிப்போம்.
ஒவ்வொரு பச்சை வட்டங்களும் சுவிட்ச் மற்றும் அவை இரண்டும் ஒரே வழியில் இணைக்கப்பட்டுள்ளன.
இந்த டுடோரியலில் கீ போர்டை பின்வரும் விவரக்குறிப்புகளுடன் இடைமுகப்படுத்துவோம்-
- நாங்கள் உள் இழுக்க பயன்படுத்துவோம்
- விசை டி-பவுன்ஸ் விருப்பத்தை சேர்ப்போம்
ஆனால் சுவிட்சுகள் அழுத்தப்படாதபோது நாம் Y1, Y2, Y3 மற்றும் Y4 ஐ உயர்ந்ததாகவோ அல்லது 1 ஆகவோ செய்ய வேண்டும். இல்லையெனில் சுவிட்ச் அழுத்தும் போது தர்க்க மாற்றங்களை நாம் கண்டறிய முடியாது. ஆனால் குறியீடுகள் அல்லது நிரல் மூலம் எங்களால் அதை உருவாக்க முடியவில்லை, ஏனெனில் அந்த ஊசிகளை உள்ளீடாகப் பயன்படுத்துகிறோம், வெளியீடு அல்ல. எனவே, மைக்ரோகண்ட்ரோலரில் உள்ளக செயல்பாட்டு பதிவேட்டைப் பயன்படுத்துவோம், மேலும் அந்த ஊசிகளை பலவீனமான புல் அப் செயல்படுத்தப்பட்ட பயன்முறையாக இயக்குவோம். இதைப் பயன்படுத்துவதன் மூலம், இயல்புநிலை நிலையில் இருக்கும்போது ஒரு தர்க்க உயர் செயலாக்க முறை இருக்கும்.
மேலும், நாம் விசையை அழுத்தும்போது சுவிட்ச் தொடர்புகளுடன் கூர்முனை அல்லது சத்தம் உருவாக்கப்படுகின்றன, மேலும் இந்த பல சுவிட்ச் பிரஸ் காரணமாக எதிர்பார்க்கப்படாதது நிகழ்கிறது. எனவே, நாங்கள் முதலில் சுவிட்ச் பிரஸ்ஸைக் கண்டுபிடிப்போம், சில மில்லி விநாடிகளுக்கு காத்திருப்போம், சுவிட்ச் இன்னும் அழுத்தப்பட்டதா இல்லையா என்பதை மீண்டும் சரிபார்க்கவும், சுவிட்ச் இன்னும் அழுத்தப்பட்டால் இன்னும் சுவிட்ச் பிரஸை ஏற்றுக்கொள்வோம். இது சுவிட்சுகளின் டி-பவுன்ஸ் என்று அழைக்கப்படுகிறது.
இவை அனைத்தையும் எங்கள் குறியீட்டில் செயல்படுத்துவோம், மேலும் பிரெட்போர்டில் இணைப்பை உருவாக்குவோம்.
4x4 விசைப்பலகையை மற்ற மைக்ரோகண்ட்ரோலர்களுடன் எவ்வாறு இடைமுகப்படுத்துவது என்பதையும் சரிபார்க்கவும்:
- Arduino Uno உடன் கீபேட் இடைமுகம்
- 8051 மைக்ரோகண்ட்ரோலருடன் 4x4 மேட்ரிக்ஸ் கீபேட் இடைமுகம்
- ATmega32 மைக்ரோகண்ட்ரோலருடன் 4x4 கீபேட் இடைமுகம்
- ப்ரெட்போர்டில் ராஸ்பெர்ரி பை டிஜிட்டல் குறியீடு பூட்டு
தேவையான பொருள்:
- ப்ரெட்போர்டு
- உங்கள் கணினியில் பிக்-கிட் 3 மற்றும் மேம்பாட்டு சூழல், அதாவது MPLABX
- கம்பிகள் மற்றும் இணைப்பிகள்
- எழுத்து எல்சிடி 16 எக்ஸ் 2
- 20 மெகா ஹெர்ட்ஸ் கிரிஸ்டல்
- 2 பிசிக்கள் 33 பிஎஃப் பீங்கான் வட்டு தொப்பி.
- 4.7 கே மின்தடை
- 10 கே முன்னமைக்கப்பட்ட (மாறி மின்தடை)
- 4x4 மேட்ரிக்ஸ் விசைப்பலகை
- ஒரு 5 வி அடாப்டர்
சுற்று வரைபடம்:


அதனுடன் தொடர்புடைய ஊசிகளில் படிகங்களையும் மின்தடையையும் இணைப்போம். மேலும், எல்.சி.டி.யை PORTD முழுவதும் 4 பிட் பயன்முறையில் இணைப்போம். துறைமுக RB4 முழுவதும் ஹெக்ஸ் விசைப்பலகை அல்லது மேட்ரிக்ஸ் விசைப்பலகையை இணைத்தோம்.
நீங்கள் PIC க்கு புதியவர் என்றால், PIC மைக்ரோகண்ட்ரோலருடன் தொடங்குவதைத் தொடங்குங்கள்: PIC மற்றும் MPLABX அறிமுகம்
நிரலாக்க விளக்கம்:
பி.ஐ.சி மைக்ரோகண்ட்ரோலருடன் மேட்ரிக்ஸ் விசைப்பலகையை இணைப்பதற்கான முழுமையான குறியீடு இறுதியில் கொடுக்கப்பட்டுள்ளது. குறியீடு எளிதானது மற்றும் சுய விளக்கமளிக்கும். கீபேட் நூலகம் என்பது குறியீட்டில் புரிந்து கொள்ள வேண்டிய ஒரே விஷயம். விசைப்பலகையையும் 16x2 எல்சிடியையும் இடைமுகப்படுத்த இங்கே keypad.h மற்றும் lcd.h நூலகத்தைப் பயன்படுத்தினோம். எனவே அதற்குள் என்ன நடக்கிறது என்று பார்ப்போம்.
Keypad.h இன் உள்ளே நாம் xc.h தலைப்பை இயல்புநிலை பதிவு நூலகமாகப் பயன்படுத்துவதைக் காண்போம், kepad.c கோப்பில் பயன்படுத்தப்படும் தாமதத்தைப் பயன்படுத்த படிக அதிர்வெண் வரையறுக்கப்படுகிறது. PORTRB பதிவேட்டில் விசைப்பலகையை நாங்கள் வரையறுத்து, தனிப்பட்ட ஊசிகளை வரிசை (எக்ஸ்) மற்றும் நெடுவரிசைகள் (Y) என வரையறுத்துள்ளோம்.
விசைப்பலகையின் துவக்கத்திற்காக இரண்டு செயல்பாடுகளையும் நாங்கள் பயன்படுத்தினோம், இது துறைமுகத்தை வெளியீடு மற்றும் உள்ளீடாக திருப்பிவிடும், மற்றும் சுவிட்ச் பிரஸ் ஸ்கேன் அழைக்கப்படும் போது சுவிட்ச் பிரஸ் நிலையை வழங்கும்.
#சேர்க்கிறது
இல் keypad.c நாங்கள் விசைப்பலகை ஸ்கேனர் செயல்பாடு 'என்' திரும்பவில்லை போது செயல்பாடு கீழே விசையை அழுத்தும் வருவோம் எனக் பார்ப்பீர்கள்.
char switch_press_scan (வெற்றிடமானது) // பயனரிடமிருந்து விசையைப் பெறுங்கள் { char key = 'n'; // விசையை அழுத்தும்போது எந்த விசையும் அழுத்தப்படவில்லை என்று வைத்துக் கொள்ளுங்கள் ( விசை == 'n') // ஒரு விசையை அழுத்தும் வரை காத்திருங்கள் விசை = keypad_scanner (); // விசைகளை மீண்டும் மீண்டும் ஸ்கேன் செய்து விசையை திருப்பி விடுங்கள்; // விசையை அழுத்தும்போது அதன் மதிப்பைத் தரவும் }
கீபேட் வாசிப்பு செயல்பாடு கீழே உள்ளது. ஒவ்வொரு அடியிலும் நாம் X1, X2, X3, மற்றும் X4 வரிசையை 0 ஆக மாற்றி Y1, Y2, Y3 மற்றும் Y4 நிலையைப் படிப்போம். வீழ்ச்சி விளைவுக்கு தாமதம் பயன்படுத்தப்படுகிறது, சுவிட்ச் இன்னும் அழுத்தும் போது அதனுடன் தொடர்புடைய மதிப்பை நாங்கள் திருப்பித் தருகிறோம். எந்த சுவிட்சும் அழுத்தப்படாதபோது 'n' ஐத் திருப்புவோம் .
char keypad_scanner (வெற்றிடத்தை) { X_1 = 0; எக்ஸ்_2 = 1; எக்ஸ்_3 = 1; எக்ஸ்_4 = 1; if (Y_1 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_1 == 0); திரும்ப '1'; } if (Y_2 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_2 == 0); திரும்ப '2'; } if (Y_3 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_3 == 0); திரும்ப '3'; } if (Y_4 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_4 == 0); திரும்ப 'A'; } எக்ஸ்_1 = 1; எக்ஸ்_2 = 0; எக்ஸ்_3 = 1; எக்ஸ்_4 = 1; if (Y_1 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_1 == 0); திரும்ப '4'; } if (Y_2 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_2 == 0); திரும்ப '5'; } if (Y_3 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_3 == 0); திரும்ப '6'; } if (Y_4 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_4 == 0); திரும்ப 'பி'; } எக்ஸ்_1 = 1; எக்ஸ்_2 = 1; எக்ஸ்_3 = 0; எக்ஸ்_4 = 1; if (Y_1 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_1 == 0); திரும்ப '7'; } if (Y_2 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_2 == 0); திரும்ப '8'; } if (Y_3 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_3 == 0); திரும்ப '9'; } if (Y_4 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_4 == 0); திரும்ப 'சி'; } எக்ஸ்_1 = 1; எக்ஸ்_2 = 1; எக்ஸ்_3 = 1; எக்ஸ்_4 = 0; if (Y_1 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_1 == 0); திரும்ப '*'; } if (Y_2 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_2 == 0); திரும்ப '0'; } if (Y_3 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_3 == 0); திரும்ப '#'; } if (Y_4 == 0) {__ தாமத_எம்எஸ் (100); போது (Y_4 == 0); திரும்ப 'டி'; } திரும்ப 'n'; }
கடைசி நான்கு பிட்களில் பலவீனமான இழுவை அமைப்போம், மேலும் துறைமுகங்களின் திசையை கடைசி 4 உள்ளீடாகவும், முதல் 4 வெளியீடாகவும் அமைப்போம் . OPTION_REG & = 0x7F; கடைசி ஊசிகளில் பலவீனமான புல் அப் பயன்முறையை அமைக்க பயன்படுகிறது.
வெற்றிட InitKeypad (வெற்றிடத்தை) { Keypad_PORT = 0x00; // கீபேட் போர்ட் முள் மதிப்புகளை பூஜ்ஜியமாக அமைக்கவும் Keypad_PORT_Direction = 0xF0; // கடைசி 4 பின்ஸ் உள்ளீடு, முதல் 4 பின்ஸ் வெளியீடு OPTION_REG & = 0x7F; }
இல் முக்கிய PIC திட்டம் (கீழே கொடுக்கப்பட்டுள்ள) நாங்கள் முதல் கட்டமைப்பு பிட்கள் அமைக்கப்படவில்லை மற்றும் சில தேவைப்படும் நூலகங்கள் சேர்க்கப்பட்டுள்ளது. பின்னர் வெற்றிடமான system_init செயல்பாடுகளில் நாம் விசைப்பலகையையும் எல்சிடியையும் துவக்குகிறோம். மற்றும் இறுதியாக உள்ள முக்கிய செயல்பாடு நாம் அழைப்பதன் மூலம் விசைப்பலகை படித்து switch_press_scan () செயல்பாடு மற்றும் எல்சிடி மதிப்பு திரும்பிய.
தலைப்பு கோப்புகளுடன் முழுமையான குறியீட்டை இங்கிருந்து பதிவிறக்கம் செய்து கீழே உள்ள ஆர்ப்பாட்டம் வீடியோவை சரிபார்க்கவும்.
