Клавиатура, которую вы показываете, обычно подключается как:
Если нажаты клавиши нескольких столбцов, то контакты RC.[3:0] могут быть закорочены вместе, что приведет к перегрузке логических выходов. Резисторы 470R ограничат этот ток. Возможно, это может привести к недопустимому логическому напряжению для входов RC[7:4], но логические драйверы часто не сбалансированы, МАЛАЯ мощность возбуждения отличается от ВЫСОКОЙ мощности возбуждения, поэтому они вполне могут быть не сбалансированы.
Другие решения, которым не нужны резисторы:
Оба эти решения управляют несканируемыми строками с высоким импедансом вместо НИЗКОГО.
В вашем вопросе отсутствует много информации, так что это только предположение. . .
RC4 - RC7, вероятно, являются входами (?), поэтому они имеют подтягивающие резисторы. Это означает, что RC0 - RC3 являются выходами (?). Если две или более кнопок в одном столбце нажаты одновременно, высокий выход может быть подключен к низкому выходу - не очень хорошо.
Теоретически 470 Ом можно исключить, но коммутируемая емкость может создавать пиковые токи, а ток в установившемся режиме ограничен 10 кОм. Так что, должно быть, была веская причина, чтобы избежать вмешательства.
добавлено: я считаю, что индуктивность дорожки и привод с низким импедансом могут вызвать некоторый ток в диодах защиты от электростатического разряда на верхней стороне, поэтому добавление резисторов определенно ослабит и предотвратит это на входной стороне. Это можно смоделировать, но, возможно, добавить для неизвестных целей в качестве консервативного демпфирующего резистора к ступенчатому напряжению.
Сканирование массива Classic Matrix 4x4 с 8-битным портом.
Просканируйте 4 строки и прочитайте 4 столбца.
Я предполагаю, что последовательные резисторы предназначены для защиты микроконтроллера от ошибок программирования новичков или проводки.
Иногда на некоторых макетных платах один контакт GPIO использовался для нескольких целей, поэтому, если контакты используются совместно, например, с контактами данных ЖК-модуля, нажатие двух кнопок в одном столбце приведет к замыканию двух строк вместе, что может повредить данные ЖК-дисплея. Таким образом, это позволяет обмениваться контактами. Если эта схема существует изолированно, она могла быть скопирована с такой платы, не видя, что используемые только для одной цели резисторы могут не понадобиться.
Еще лучшим предположением может быть то, что программа для сканирования матрицы была сделана кем-то, кто не знал, что существуют лучшие методы, чем просто установка портов GPIO, поскольку существуют двухтактные выходы, а резисторы удерживают контакты от короткого замыкания.
Редактировать: поскольку исходный источник диаграммы и исходный код был найден и размещен в комментариях, довольно ясно, что мои предположения о программном обеспечении, просто устанавливающем строки как двухтактные выходы, были правильными. Технически, возможно, было бы лучше оставить другие строки в качестве входов с высоким импедансом и выдвигать только сканируемую строку на высокий уровень.
Только я
Брюс Эбботт