Свързване на клавиатурата към MK чрез три проводника на регистрите за смяна, Електроника за всички
Електроника блог
Често се налага да използвате голям брой бутони във вашия проект за различни цели. Има различни опции за изпълнение на тази задача. Днес ще ви разкажа за решение, което ми хрумна една вечер. След това трябваше да закача клавиатурата на контролер с ограничен брой свободни крака. Най-вероятно това решение вече е описано и използвано другаде, но не намерих никакви споменавания в Интернет.
Същността
Клавиатурата е свързана чрез три сигнални проводника. Допълнителни позиции: сменени регистри sn74198n и няколко резистора. Максималният брой бутони е ограничен само от максималното време за сканиране на клавиатурата. Използвах 16 бутона в моя проект, но като добавите нови регистри за смяна, можете да увеличите това число до стойността, от която се нуждаете. Ще бъдете ограничени само чрез пропорционално увеличаване на времето за сканиране на клавиатурата.
Хардуерна част
Регистрите за смяна са доста удобни поради ниската си цена и гъвкавост. Често се използват за свързване на светодиоди, седемсегментни дисплеи и т.н. от малък брой щифтове на микроконтролера. В нашия случай ще направим почти всичко по същия начин, но в обратната посока: ще прехвърляме данни не „от микроконтролера“, а „към него“. За по-голяма яснота давам блок-схема на работата на това устройство:

- 1. Клавиатура
- 2. Регистриране на смяна
- 3. MK
Клавиатурният блок е набор от бутони, които са свързани към земята с един щифт и свързани към съответния вход на регистъра за смяна с другия.
Паралелно и серийно предаване
Ако не знаете разликите в паралелните и последователните методи за прехвърляне на информация, препоръчвам ви да разберете сега. Освен това често ще използвам тези термини и без да ги разбирам, ще ви бъде малко по-трудно.
Паралелното предаване на данни е метод за предаване на няколко сигнала с данни едновременно през няколко паралелни канала, например цял порт, всичките осем бита наведнъж. При серийно предаване на данни битовете се изпращат последователно по една комуникационна линия, една след друга. Например чрез UART или SPI
В нашата схема регистърът за смяна преобразува паралелния вход в сериен изход. В процеса на сканиране на клавиатурата ще вземе 8 стойности от блока на клавиатурата и ще го изпрати последователно на микроконтролера.
Въз основа на горното, към регистъра на смяната се налагат следните изисквания:
- паралелен вход
- сериен изход
За това регистър SN74198N е подходящ за нас. В моето местообитание такива микросхеми са рядкост, затова използвах съветското чудовище K155IR13. Те са пълен аналог и няма разлика в тяхната употреба от внесените аналози.
MK контролира регистъра за смяна: той казва кога да вземе сигнала от клавиатурното устройство и да го предаде на собственика си.
Сега нека анализираме схемата на нашето устройство.

Диаграмата е опростена, показва се само връзката на клавиатурата. Захранване и други тръбопроводи на контролера, както обикновено.
Описание на бутоните
Един терминал на бутона е свързан към входа на регистъра за смяна. Други - към общата жица. Друга важна подробност са издърпващите резистори R1 - R8. Те създават високо логическо ниво на входа на регистъра на смяната, докато съответният бутон е отворен.
Веднага след като бутонът се затвори, на входа на регистъра за смяна се формира логическа нула, тъй като той е директно свързан към общия проводник. Стойността на 10k резистор предотвратява протичането на твърде много ток, докато бутонът е затворен, и създава достатъчно висока логика, докато бутонът е отворен.
Регистър за смяна
- Нашият регистър за смяна има входен порт (D0-D7)
- изходен порт (Q0-Q7)
- и управляващи сигнали (SR, SL, CLK, S0, S1, MR).
Входният и изходният порт могат да се използват в паралелен или сериен режим. Поради това този регистър за смяна е доста универсален. Но ние ще се спрем само на функциите, от които се нуждаем, останалото можете сами да прочетете в листа с данни.
- D0-D7 - действителният вход. Тук ще изпратим 8 сигнала от нашите бутони.
- Q0-Q7 - паралелен изход. Ще използваме само един крак - Q7. Останалото в нашия случай нямаме нужда.
- CLK - часовник. Всичко в регистъра на смяната се извършва само по протежение на този крак. Или по-скоро на изгряващ фронт. Ако трябва да направим нещо, тогава просто доставяме високо ниво на крака CLK и след това го спускаме (доставяме логическа нула). За простота на представянето ще кажа в едно село, че трябва да щракнем върху крака CLK.
- S0 и S1. Тези крака са отговорни за поведението на изхода на регистъра (Q0-Q7). Всъщност този регистър може да има както сериен (в нашия случай), така и паралелен изход. Когато двата крака са повдигнати (високо логическо ниво), можем да заредим изхода на данните, които в момента са на входа (D0-D7).