Тастатуре су широко коришћени улазни уређаји који се користе у разним електроникама и уграђеним пројектима. Користе се за унос података у облику бројева и албабета и исти уносе у систем за даљу обраду. У овом упутству ћемо повезати 4к4 матричну тастатуру са 8051 микроконтролером.
4Кс4 матрична тастатура
Пре него што повежемо тастатуру са микроконтролером, прво морамо да разумемо како она функционише. Матрична тастатура се састоји од скупа тастера који су међусобно повезани. Као у нашем случају, користимо 4Кс4 матричну тастатуру, у којој се налазе по 4 тастера у сваком од четири реда. А терминали тастера повезани су према дијаграму. У првом реду, један терминал од сва 4 тастера повезан је заједно, а други терминал од 4 тастера представља сваку од 4 колоне, исто важи и за сваки ред. Тако добијамо 8 терминала за повезивање са микроконтролером.
Интерфејсна тастатура са 8051 микроконтролером (АТ89С52)
Прво морамо повезати ЛЦД модул да бисмо приказали податке који ће се преносити путем КЕИПАД-а, зато пређите на чланак „Интерфаце ЛЦД-а са микроконтролером 8051“ пре повезивања КЕИПАД-а.
Као што је приказано на горњем дијаграму кола, да бисмо повезали тастатуру, морамо повезати 8 терминала тастатуре на било који порт (8 пинова) микроконтролера. Као што смо спојили терминале тастатуре на порт 1 од 8051. Кад год притиснемо било које дугме, морамо да пронађемо локацију дугмета, што значи одговарајући РЕД и КОЛОНА бр. Једном када пронађемо локацију дугмета, можемо сходно томе одштампати знак.
Сада је питање како добити локацију притиснутог дугмета? Објаснит ћу вам ово у доњим корацима и такође желим да погледате код:
1. Прво смо направили све редове до нивоа логике 0, а све колоне до нивоа логике 1.
2. Кад год притиснемо дугме, ступац и ред који одговарају том дугмету постају кратки и чине одговарајућу колону логичким нивоом 0. Јер се та колона повезује (скраћује) са редом који је на нивоу логике 0. Тако добијамо колона бр. Погледајте главну () функцију.
3. Сада морамо пронаћи ред бр., Па смо креирали четири функције које одговарају свакој колони. Као да се притисне било које дугме прве колоне, позивамо функцију ров_финдер1 (), како бисмо пронашли ред бр.
4. У функцији ров_финдер1 () преокренули смо логичке нивое, што значи да су сада сви редови 1, а колоне 0. Сада би ред притиснутог дугмета требао бити 0, јер је постао повезан (скраћен) са колоном чије је дугме притиснуто, а сви ступци имају логику 0. Дакле, скенирали смо све редове за 0.
5. Дакле, кад год пронађемо Ред на логици 0, значи да је то ред притиснутог дугмета. Дакле, сада имамо колону бр (у кораку 2) и ред бр., А можемо отиснути бр. тог дугмета помоћу функције лцд_дата.
Исти поступак следи за свако притискање тастера, а ми користимо вхиле (1) да непрекидно проверавамо да ли је дугме притиснуто или не.