- Зашто нам треба 4к4 тастатура:
- Како 4к4 матрична тастатура ради:
- Потребан материјал:
- Кружни дијаграм:
- Објашњење програмирања:
Тастатуре су широко коришћени улазни уређаји који се користе у разним електроникама и уграђеним пројектима. Користе се за уносе у облику бројева и абецеда и исти уносе у систем за даљу обраду. У овом упутству ћемо повезати 4к4 матричну тастатуру са ПИЦ16Ф877А.
Пре него што уђемо у логику детаља и научимо како да користимо тастатуру, мораћемо да знамо неколико ствари.
Зашто нам треба 4к4 тастатура:
Обично користимо један И / О пин микроконтролера за читање дигиталног сигнала, попут улаза прекидача. У неколико апликација где је 9, 12, 16 кључева потребно за унос, ако додамо сваки кључ у порт микроконтролера, на крају ћемо користити 16 И / О портова. Ових 16 И / О портова нису само за читање И / О сигнала, већ се могу користити и као периферне везе, попут АДЦ носача, И2Ц, СПИ везе такође подржавају ти И / О пинови. Како су ти пинови повезани прекидачима / тастерима, не можемо их користити већ само као И / О портове. Ово уопште нема смисла. Па, како смањити број пинова? Одговор је коришћење хексадецималне тастатуре или матричне тастатуре; можемо смањити број пинова, који повезују 4к4 матричне кључеве. Користиће 8 пинова, од којих 4 спојена у редове и 4 повезана у колоне, чиме се штеди 8 пинова микроконтролера.
Како 4к4 матрична тастатура ради:
На горњој слици је лево приказан модул матричне тастатуре. Десно је приказана интерна веза, као и веза порта. Ако видимо порт има 8 пинова, прва 4 слева надесно су Кс1, Кс2, Кс3 и Кс4 су редови, а последња 4 слева надесно су И1, И2, И3, И4 су четири колоне. Ако правимо 4 реда или Кс страну као излаз и да им логика ниска или 0, и да се 4 колоне као улаз и чита кључеве ћемо прочитати прекидач притисните док дописник И буде 0.
Иста ствар ће се догодити у нкн матрици где је н број. То може бити 3к3, 6к6 итд.
Сад само помислите да је притиснуто 1. Тада се 1 налази у Кс1 реду и И1 колони. Ако је Кс1 0, тада ће И1 бити 0. На исти начин можемо осетити сваки тастер у реду Кс1, осетом на колоне И1, И2, И3 и И4. Ова ствар се дешава за сваки прекидач и очитаћемо положај прекидача у матрици.
Сваки зелени круг је прекидач и обојица су повезана на исти начин.
У овом упутству ћемо повезати плочу са тастатурама са следећим спецификацијама -
- Користићемо унутрашње повлачење
- Додаћемо опцију одбијања кључа
Али када прекидачи нису притиснути, треба да поставимо И1, И2, И3 и И4 као високе или 1. Иначе не можемо открити логичке промене када се прекидач притисне. Али нисмо успели да направимо кодове или програме јер се ти пинови користе као улаз, а не као излаз. Дакле, користићемо интерни регистар рада у микроконтролеру и управљати тим пиновима као режим слабог повлачења. Користећи ово, постојаће логички режим високог омогућавања када је у подразумеваном стању.
Такође, када притиснемо тастер, јављају се скокови или се ствара контакт са контактима прекидача, а услед овог вишеструког прекидача долази до притиска који се не очекује. Дакле, прво ћемо открити прекидач, сачекати неколико милисекунди, поново проверити да ли је прекидач и даље притиснут или не и ако је прекидач и даље притиснут, прихватићемо прекидач прекидача коначно, у супротном не. То се назива одбацивање прекидача.
Све ћемо то имплементирати у наш код и успоставити везу на плочи.
Такође проверите како повезати 4к4 тастатуру са другим микроконтролером:
- Интерфејс тастатуре са Ардуино Уно
- 4к4 матрично повезивање тастатуре са микроконтролером 8051
- 4к4 интерфејс тастатуре са АТмега32 микроконтролером
- Закључавање дигиталног кода Распберри Пи на маски
Потребан материјал:
- Бреадбоард
- Пиц-кит 3 и развојно окружење на вашем рачунару, тј. МПЛАБКС
- Жице и конектори
- Карактер ЛЦД 16к2
- Кристал од 20 МХз
- 2 ком. 33пФ керамичка капа за диск.
- Отпорник 4.7к
- 10к унапред подешено (променљиви отпорник)
- 4к4 матрична тастатура
- Адаптер од 5 В
Кружни дијаграм:
Кристале и отпорник повезаћемо у повезане игле. Такође, повезаћемо ЛЦД у 4-битном режиму преко ПОРТД-а. Повезали смо хексадецималну тастатуру или матричну тастатуру преко порта РБ4.
Ако сте нови у ПИЦ-у, почните са Почетак рада са ПИЦ микроконтролером: Увод у ПИЦ и МПЛАБКС
Објашњење програмирања:
Комплетни код за повезивање матричне тастатуре са ПИЦ микроконтролером дат је на крају. Код је једноставан и саморазумљив. Библиотека тастатуре је једина ствар коју треба разумети у коду. Овде смо користили кеипад.х и лцд.х Либрари за повезивање тастатуре и ЛЦД- а 16к2 . Па да видимо шта се дешава унутар тога.
Унутар тастатуре.х видећемо да смо користили заглавље кц.х које је подразумевана библиотека регистара, фреквенција кристала је дефинисана за употребу са закашњењем које се користи у датотеци кепад.ц. Дефинисали смо портове тастатуре у регистру ПОРТРБ и дефинисали појединачне пинове као ред (Кс) и колоне (И).
Такође смо користили две функције, једну за иницијализацију тастатуре која ће преусмерити порт као излаз и улаз и скенирање прекидача који ће вратити статус прекидача притиском на позив.
#инцлуде
На тастатури.ц видећемо да ће доња функција вратити притисак тастера када функција скенера тастатуре не врати 'н'.
цхар свитцх_пресс_сцан (воид) // Преузми кључ од корисника { цхар кеи = 'н'; // Претпоставимо да ниједан тастер није притиснут док (кеи == 'н') // Сачекајте док се не притисне тастер кеи = кеипад_сцаннер (); // Поново скенирајте тастере и поново вратите кључ; // када се притисне тастер, враћа се његова вредност }
Испод је функција читања са тастатуре. У сваком кораку направићемо ред Кс1, Кс2, Кс3 и Кс4 као 0 и очитавање статуса И1, И2, И3 и И4. Кашњење се користи за ефекат дебоунцеа, када је прекидач и даље притиснут, вратићемо вредност повезану са њим. Када се не притисне ниједан прекидач, вратићемо 'н'.
цхар тастер_сцаннер (воид) { Кс_1 = 0; Кс_2 = 1; Кс_3 = 1; Кс_4 = 1; иф (И_1 == 0) {__делаи_мс (100); док (И_1 == 0); повратак '1'; } иф (И_2 == 0) {__делаи_мс (100); док (И_2 == 0); повратак '2'; } иф (И_3 == 0) {__делаи_мс (100); док (И_3 == 0); повратак '3'; } иф (И_4 == 0) {__делаи_мс (100); док (И_4 == 0); повратак 'А'; } Кс_1 = 1; Кс_2 = 0; Кс_3 = 1; Кс_4 = 1; иф (И_1 == 0) {__делаи_мс (100); док (И_1 == 0); повратак '4'; } иф (И_2 == 0) {__делаи_мс (100); док (И_2 == 0); повратак '5'; } иф (И_3 == 0) {__делаи_мс (100); док (И_3 == 0); повратак '6'; } иф (И_4 == 0) {__делаи_мс (100); док (И_4 == 0); повратак 'Б'; } Кс_1 = 1; Кс_2 = 1; Кс_3 = 0; Кс_4 = 1; иф (И_1 == 0) {__делаи_мс (100); док (И_1 == 0); повратак '7'; } иф (И_2 == 0) {__делаи_мс (100); док (И_2 == 0); повратак '8'; } иф (И_3 == 0) {__делаи_мс (100); док (И_3 == 0); повратак '9'; } иф (И_4 == 0) {__делаи_мс (100); док (И_4 == 0); повратак 'Ц'; } Кс_1 = 1; Кс_2 = 1; Кс_3 = 1; Кс_4 = 0; иф (И_1 == 0) {__делаи_мс (100); док (И_1 == 0); повратак '*'; } иф (И_2 == 0) {__делаи_мс (100); док (И_2 == 0); повратак '0'; } иф (И_3 == 0) {__делаи_мс (100); док (И_3 == 0); ретурн '#'; } иф (И_4 == 0) {__делаи_мс (100); док (И_4 == 0); повратак 'Д'; } ретурн 'н'; }
Такође ћемо поставити слаба повлачења на последња четири бита, а такође ћемо поставити смер портова као последња 4 улаза и прва 4 као излаз. ОПТИОН_РЕГ & = 0к7Ф; користи се за постављање слабог режима повлачења на последњим пиновима.
воид ИнитКеипад (воид) { Кеипад_ПОРТ = 0к00; // Постављање вредности пинова прикључка тастатуре на нулу Кеипад_ПОРТ_Дирецтион = 0кФ0; // Последња 4 пина улаза, Прва 4 пина излаза ОПТИОН_РЕГ & = 0к7Ф; }
У главном ПИЦ програму (дат у наставку) прво смо поставили конфигурационе битове и укључили неколико потребних библиотека. Затим у воид функцијама систем_инит иницијализујемо тастатуру и ЛЦД. И на крају у у главној функцији смо прочитали тастатуру позивом на свитцх_пресс_сцан () функцију и враћање вредности на ЛЦД.
Преузмите комплетан код са заглавним датотекама одавде и погледајте демонстрацијски видео испод.