- మనకు 4x4 కీప్యాడ్ ఎందుకు అవసరం:
- 4x4 మ్యాట్రిక్స్ కీప్యాడ్ ఎలా పనిచేస్తుంది:
- పదార్థం అవసరం:
- సర్క్యూట్ రేఖాచిత్రం:
- ప్రోగ్రామింగ్ వివరణ:
కీప్యాడ్లు వివిధ ఎలక్ట్రానిక్స్ మరియు ఎంబెడెడ్ ప్రాజెక్ట్లలో ఉపయోగించబడుతున్న ఇన్పుట్ పరికరాలను విస్తృతంగా ఉపయోగిస్తున్నారు. అవి సంఖ్యలు మరియు వర్ణమాలల రూపంలో ఇన్పుట్లను తీసుకోవడానికి ఉపయోగించబడతాయి మరియు తదుపరి ప్రాసెసింగ్ కోసం సిస్టమ్లోకి తింటాయి. ఈ ట్యుటోరియల్లో మనం PIC16F877A తో 4x4 మ్యాట్రిక్స్ కీప్యాడ్ను ఇంటర్ఫేస్ చేయబోతున్నాం.
వివరాల తర్కంలోకి వెళ్లి కీప్యాడ్ను ఎలా ఉపయోగించాలో తెలుసుకోవడానికి ముందు, మేము కొన్ని విషయాలు తెలుసుకోవాలి.
మనకు 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 ఎడమ నుండి కుడికి ఉన్నాయి ఉన్నాయి X1, X2, X3, మరియు X4 ఉంటాయి వరుసలు, మరియు నుండి గత 4 కుడి ఎడమ y1, Y2, Y3, Y4 నాలుగు నిలువు. మేము 4 వరుసలు లేదా X వైపు చేస్తే అవుట్పుట్ వాటిని తయారు తర్కం తక్కువ లేదా 0, మరియు 4 చేయడానికి నిలువు గా ఇన్పుట్ మరియు కీలు చదవడానికి మేము స్విచ్ పత్రికా చదువుతాను కరస్పాండెంట్ ఉన్నప్పుడు Y గెట్స్ 0.
Nxn మాతృకలో అదే జరుగుతుంది, ఇక్కడ n సంఖ్య. అది 3x3, 6x6 మొదలైనవి కావచ్చు.
ఇప్పుడు 1 నొక్కినట్లు అనుకోండి. అప్పుడు 1 X1 వరుస మరియు Y1 కాలమ్ వద్ద ఉంటుంది. X1 0 అయితే, Y1 0 అవుతుంది. అదే విధంగా X1 వరుసలోని ప్రతి కీని, కాలమ్ Y1, Y2, Y3 మరియు Y4 ను గ్రహించడం ద్వారా గ్రహించవచ్చు. ప్రతి స్విచ్కు ఈ విషయం జరుగుతుంది మరియు మేము మాతృకలోని స్విచ్ల స్థానాన్ని చదువుతాము.
ప్రతి ఆకుపచ్చ వృత్తాలు స్విచ్ మరియు అవి రెండూ ఒకే విధంగా అనుసంధానించబడి ఉంటాయి.
ఈ ట్యుటోరియల్లో మేము కీ బోర్డ్ను ఈ క్రింది స్పెసిఫికేషన్లతో ఇంటర్ఫేస్ చేస్తాము-
- మేము అంతర్గత పుల్ అప్ ఉపయోగిస్తాము
- మేము కీ డి-బౌన్స్ ఎంపికను జోడిస్తాము
కానీ స్విచ్లు నొక్కినప్పుడు మనం Y1, Y2, Y3 మరియు Y4 ని ఎక్కువ లేదా 1 గా చేయాలి. లేకపోతే స్విచ్ నొక్కినప్పుడు లాజిక్ మార్పులను మనం గుర్తించలేము. కానీ పిన్లు అవుట్పుట్గా కాకుండా ఇన్పుట్గా ఉపయోగించబడుతున్నందున మేము దీనిని కోడ్లు లేదా ప్రోగ్రామ్ ద్వారా చేయలేము. కాబట్టి, మేము మైక్రోకంట్రోలర్లో అంతర్గత ఆపరేషన్ రిజిస్టర్ను ఉపయోగిస్తాము మరియు ఆ పిన్లను బలహీనమైన పుల్ అప్ ఎనేబుల్ మోడ్ వలె ఆపరేట్ చేస్తాము. దీన్ని ఉపయోగించడం ద్వారా, డిఫాల్ట్ స్థితిలో ఉన్నప్పుడు లాజిక్ హై ఎనేబుల్ మోడ్ ఉంటుంది.
అలాగే, మేము కీని నొక్కినప్పుడు స్పైక్లు లేదా శబ్దం స్విచ్ పరిచయాలతో ఉత్పన్నమవుతాయి మరియు ఈ బహుళ స్విచ్ ప్రెస్ కారణంగా not హించని విధంగా జరుగుతుంది. కాబట్టి, మేము మొదట స్విచ్ ప్రెస్ను కనుగొంటాము, కొన్ని మిల్లీసెకన్ల కోసం వేచి ఉండండి, స్విచ్ ఇంకా నొక్కిందా లేదా అని మళ్ళీ తనిఖీ చేయండి మరియు స్విచ్ ఇంకా నొక్కితే మనం స్విచ్ ప్రెస్ను అంగీకరిస్తాము. దీనిని స్విచ్ల డి-బౌన్స్ అంటారు.
మేము ఇవన్నీ మా కోడ్లో అమలు చేస్తాము మరియు బ్రెడ్బోర్డ్లో కనెక్షన్ను చేస్తాము.
ఇతర మైక్రోకంట్రోలర్లతో 4x4 కీప్యాడ్ను ఎలా ఇంటర్ఫేస్ చేయాలో కూడా తనిఖీ చేయండి:
- ఆర్డునో యునోతో కీప్యాడ్ ఇంటర్ఫేసింగ్
- 8051 మైక్రోకంట్రోలర్తో 4x4 మ్యాట్రిక్స్ కీప్యాడ్ ఇంటర్ఫేసింగ్
- ATmega32 మైక్రోకంట్రోలర్తో 4x4 కీప్యాడ్ ఇంటర్ఫేసింగ్
- బ్రెడ్బోర్డ్లో రాస్ప్బెర్రీ పై డిజిటల్ కోడ్ లాక్
పదార్థం అవసరం:
- బ్రెడ్బోర్డ్
- పిక్-కిట్ 3 మరియు మీ PC లో అభివృద్ధి వాతావరణం, అంటే MPLABX
- వైర్లు మరియు కనెక్టర్లు
- అక్షరం LCD 16x2
- 20Mhz క్రిస్టల్
- 2 PC లు 33pF సిరామిక్ డిస్క్ క్యాప్.
- 4.7 కే రెసిస్టర్
- 10 కె ప్రీసెట్ (వేరియబుల్ రెసిస్టర్)
- 4x4 మ్యాట్రిక్స్ కీప్యాడ్
- 5 V అడాప్టర్
సర్క్యూట్ రేఖాచిత్రం:
మేము అనుబంధ పిన్స్లో స్ఫటికాలు మరియు రెసిస్టర్లను కనెక్ట్ చేస్తాము. అలాగే, మేము PORTD అంతటా LCD ని 4 బిట్ మోడ్లో కనెక్ట్ చేస్తాము. మేము పోర్ట్ RB4 అంతటా హెక్స్ కీప్యాడ్ లేదా మ్యాట్రిక్స్ కీప్యాడ్ను కనెక్ట్ చేసాము.
మీరు PIC కి కొత్తగా ఉంటే, PIC మైక్రోకంట్రోలర్తో ప్రారంభించండి: PIC మరియు MPLABX పరిచయం
ప్రోగ్రామింగ్ వివరణ:
పిఐసి మైక్రోకంట్రోలర్తో మ్యాట్రిక్స్ కీప్యాడ్ను ఇంటర్ఫేసింగ్ కోసం పూర్తి కోడ్ చివరిలో ఇవ్వబడింది. కోడ్ సులభం మరియు స్వీయ వివరణాత్మకమైనది. కీప్యాడ్ లైబ్రరీ అనేది కోడ్లో అర్థం చేసుకోవలసిన విషయం. ఇక్కడ మేము కీప్యాడ్ మరియు 16x2 LCD ని ఇంటర్ఫేస్ చేయడానికి keypad.h మరియు lcd.h లైబ్రరీని ఉపయోగించాము. కాబట్టి దాని లోపల ఏమి జరుగుతుందో చూద్దాం.
కీప్యాడ్.హెచ్ లోపల మనం డిఫాల్ట్ రిజిస్టర్ లైబ్రరీ అయిన xc.h హెడర్ను ఉపయోగించామని చూస్తాము, kepad.c ఫైల్లో ఉపయోగించిన ఆలస్యం ఉపయోగం కోసం క్రిస్టల్ ఫ్రీక్వెన్సీ నిర్వచించబడింది. మేము PORTRB రిజిస్టర్లో కీప్యాడ్ పోర్ట్లను నిర్వచించాము మరియు వ్యక్తిగత పిన్లను అడ్డు వరుస (X) మరియు నిలువు వరుసలు (Y) గా నిర్వచించాము.
కీప్యాడ్ ప్రారంభించడం కోసం మేము రెండు ఫంక్షన్లను ఉపయోగించాము, ఇది పోర్టును అవుట్పుట్ మరియు ఇన్పుట్గా మళ్ళిస్తుంది మరియు స్విచ్ ప్రెస్ స్కాన్ పిలిచినప్పుడు స్విచ్ ప్రెస్ స్థితిని అందిస్తుంది.
# చేర్చండి
లో keypad.c మేము కీప్యాడ్ స్కానర్ ఫంక్షన్ తిరిగి ఉన్నప్పుడు 'n' ఫంక్షన్ క్రింద కీ పత్రికా తిరిగి ఆ చూస్తారు.
char switch_press_scan (శూన్యమైనది) // వినియోగదారు నుండి కీని పొందండి { char key = 'n'; // కీ నొక్కినప్పుడు (కీ == 'ఎన్') // ఒక కీని నొక్కినప్పుడు వేచి ఉండండి కీ = కీప్యాడ్_స్కానర్ (); // కీలను మళ్లీ మళ్లీ స్కాన్ చేయండి ; // కీ నొక్కినప్పుడు దాని విలువను తిరిగి ఇవ్వండి }
కీప్యాడ్ రీడింగ్ ఫంక్షన్ క్రింద ఉంది. ప్రతి దశలో మేము X1, X2, X3 మరియు X4 అడ్డు వరుసలను 0 గా చేస్తాము మరియు Y1, Y2, Y3 మరియు Y4 స్థితిని చదువుతాము. ఆలస్యం డీబౌన్స్ ఎఫెక్ట్ కోసం ఉపయోగించబడుతుంది, స్విచ్ ఇంకా నొక్కినప్పుడు మేము దానితో అనుబంధించబడిన విలువను తిరిగి ఇస్తాము. స్విచ్ నొక్కినప్పుడు మేము 'n' ను తిరిగి ఇస్తాము .
చార్ కీప్యాడ్_స్కానర్ (శూన్యమైనది) { X_1 = 0; X_2 = 1; X_3 = 1; X_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'; } X_1 = 1; X_2 = 0; X_3 = 1; X_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); తిరిగి 'బి'; } X_1 = 1; X_2 = 1; X_3 = 0; X_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); తిరిగి 'సి'; } X_1 = 1; X_2 = 1; X_3 = 1; X_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); తిరిగి 'D'; } తిరిగి 'n'; }
మేము చివరి నాలుగు బిట్లలో బలహీనమైన పుల్ అప్ను కూడా సెట్ చేస్తాము మరియు పోర్ట్ల దిశను చివరి 4 ఇన్పుట్గా మరియు మొదటి 4 అవుట్పుట్గా సెట్ చేస్తాము . OPTION_REG & = 0x7F; చివరి పిన్స్లో బలహీనమైన పుల్ అప్ మోడ్ను సెట్ చేయడానికి ఉపయోగిస్తారు.
శూన్యమైన InitKeypad (శూన్యమైనది) { Keypad_PORT = 0x00; // కీప్యాడ్ పోర్ట్ పిన్ విలువలను సెట్ చేయండి సున్నా కీప్యాడ్_ PORT_ దిశ = 0xF0; // చివరి 4 పిన్స్ ఇన్పుట్, మొదటి 4 పిన్స్ అవుట్పుట్ OPTION_REG & = 0x7F; }
లో ప్రధాన PIC కార్యక్రమం (క్రింద ఇచ్చిన) మేము మొదటి ఆకృతీకరణ బిట్స్ సెట్ మరియు కొన్ని అవసరమైన గ్రంధాలయాలు ఉన్నాయి. అప్పుడు శూన్యమైన సిస్టమ్_ఇనిట్ ఫంక్షన్లలో మేము కీప్యాడ్ మరియు ఎల్సిడిని ప్రారంభిస్తాము. చివరికి లో ప్రధాన ఫంక్షన్ మేము కాల్ కీప్యాడ్ చదివాను switch_press_scan () ఫంక్షన్ మరియు LCD విలువ తిరిగి.
ఇక్కడ నుండి హెడర్ ఫైళ్ళతో పూర్తి కోడ్ను డౌన్లోడ్ చేయండి మరియు దిగువ ప్రదర్శన వీడియోను తనిఖీ చేయండి.