Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
5.2. Устройства дискретного ввода: кнопки, переключатели, клавиатуры
Любая встраиваемая микропроцессорная система принимает данные из «внешнего мира», преобразует эти данные в управляющие воздействия, а затем «выдает» эти воздействия во внешний мир. Ни одна микропроцессорная система управления не обходится без механических переключателей, которые активируются пользователем, а также без различного рода устройств индикации, которые информируют пользователя о режимах работы самой системы и о состоянии объекта управления. В данном параграфе мы рассмотрим, как подключить к МК различные типы переключателей и простейшие светодиодные индикаторы. Несколько позже, в параграфе 5.6, мы подробно остановимся на вопросах сопряжения МК с жидкокристаллическим дисплеем (далее ЖК индикатор или ЖК дисплей).
5.2.1. Кнопки и переключатели
На рис. 5.4,а приведена схема подключения одиночного механического переключателя к МК. Механическая часть переключателя может быть выполнена таким образом, что его замкнутое состояние удерживается только тогда, когда человек нажимает на клавишу. Такой переключатель называют кнопкой. Другие переключатели
a) Подключение кнопки к МК НС12
б) Подключение группы из 8 DIP-переключателей
Рис. 5.4. Примеры схем подключения механических переключателей к МК
Возвратимся к нашей схеме (рис. 5.4,а). Когда клавиша отжата, переключатель находится в разомкнутом состоянии, и на входе МК формируется высокий логический уровень сигнала. Когда клавиша нажата, переключатель замыкает контакты, вывод МК подсоединяется к потенциалу общего провода системы GND, и на входе МК формируется логический 0. Резистор R = 10 кОм ограничивает силу тока в цепи переключателя.
Если бы переключатель был идеальным, то переход потенциала вывода МК из состояния 1 в состояние 0 при нажатии клавиши происходил бы мгновенно. На самом деле это не так. Переход механического переключателя из одного состояния в другое сопровождается механическим дребезгом контактов. Эффект механического дребезга состоит в том, что при смене состояния, например, с разомкнутого на замкнутое, контакты, прежде чем перейти из установившегося разомкнутого состояния в установившееся замкнутое, многократно замыкаются и размыкаются. Тогда, установив щуп осциллографа на вход МК, мы увидим сначала высокий уровень сигнала, затем многократное нерегулярное во времени переключение с 1 на 0, и, наконец, установится низкий уровень сигнала. Частота работы МК (от единиц до сотен МГц) чрезвычайно высока по сравнению с временами переключения механических контакторов (десятки–сотни мс). Поэтому механический дребезг контакта может быть воспринят управляющей программой как его многократное переключение. Существуют аппаратные и программные методы защиты от эффекта дребезга контактов. Один из программных методов заключается в том, что после обнаружения первого изменения логического уровня сигнала программа формирует задержку на 100-200 мс. В течение этого времени дребезг контактов прекращается, и переключатель переходит в новое устойчивое состояние. Мы рассмотрим аппаратные и программные методы противодребезгвой защиты в параграфе 5.5.
5.2.2. DIP переключатели
На рис. 5.4,б показана схема, в которой мы распространили идею подключения одного механического переключателя к МК сразу на восемь переключателей. Эти микропереключатели смонтированы на заводе-производителе в корпусе, который по размерам и расположению выводов совпадает с корпусом типа DIP (Dual In-line Package) для интегральных схем. Поэтому их называют DIP-переключатели.
Каждый переключатель из блока подсоединен к отдельному выводу порта МК. Так же, как и в предыдущем случае, ток цепи каждого переключателя ограничивается резистором. Для блока из восьми переключателей потребуется восемь резисторов. Для уменьшения габаритов печатной платы изделия целесообразно использовать сборку резисторов в одном корпусе. Однако возможно использование и одиночных резисторов.
В параграфе 5.8 мы рассмотрим пример использования подобной сборки DIP-переключателей для выбора режима работы микропроцессорной системы.
5.2.3. Клавиатуры
Во многих приложениях микропроцессорные системы требуют ввода цифровой и буквенной информации. Для таких случаев могут быть использованы блоки из нескольких кнопок, которые объединены конструктивно и соединены электрически по стандартной матричной схеме. Такие блоки называют клавиатурами. На рис. 5.5 показана клавиатура из 16 клавиш, которая позволяет вводить данные в микропроцессорную систему в шестнадцатеричном коде. Изучим представленную на рис. 5.5 схему соединения МК с клавиатурой подробно.
Код на выходах PORTx[3:0] | Код на входах PORTx[7:4] | ||||||||
---|---|---|---|---|---|---|---|---|---|
Нажатая клавиша | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | Код порта PORTx[7:0] |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0xEE |
1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0xDE |
2 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0xBE |
3 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0x7E |
4 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0xED |
5 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0xDD |
6 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0xBD |
7 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0x7D |
8 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0xEB |
9 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0xDB |
A | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0xBB |
B | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0x7B |
C | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0xE7 |
D | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0xD7 |
E | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0xB7E |
F | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0x77 |
Не
| X | X | X | X | 1 | 1 | 1 | 1 | 0xXF |
Рис. 5.5. Схема подключения матричной клавиатуры к МК 68HC12
Кнопки клавиатуры собраны в матричную схему. Первый ряд составляют кнопки 0, 1, 2 и 3. Второй ряд — кнопки 4, 5, 6, и 7. Следующие восемь кнопок составляют ряд 3 и ряд 4. Выводы левых контактов кнопок одного ряда соединены между собой и подключены к одному из выводов порта PORTx (x — имя порта МК, например, PORTA, PORTB и т.д.). В нашем примере для обслуживания четырех линий клавиатуры использованы четыре линии порта PORTx[0]…..PORTx[3]. Все эти линии работают в режиме вывода.
Выводы правых контактов кнопок также соединены между собой. Но при этом объединены каждые четыре кнопки по вертикали, которые зрительно составляют единый столбец. Приведенное соединение называют матричным. Из рис. 5.5. можно видеть, что блок клавиатуры из 16 клавиш имеет всего восемь линий связи для подключения к МК. А если бы мы использовали ранее рассмотренные схемы соединения, то для подключения 16 кнопок портебовалось бы 16 линий связи. Четыре вывода столбцов подключаются ко входам порта PORTx[4]…PORTx[7]. Эти линии порта работают в режиме ввода. Каждая линии PORTx[4]…PORTx[7] снабжена подтягивающим к напряжению питания резистором R = 10 кОм.
Если все клавиши, принадлежащие к одной колонке, отжаты, то на соответствующем входе порта PORTx[4]…PORTx[7] формируется логическая 1. МК использует специальную программу опроса клавиатуры, чтобы обнаружить, какая клавиша в данный момент времени нажата. Эта программа сначала выставляет на линию PORTx[0] логический 0. Тогда все левые выводы клавиш первого ряда оказываются под потенциалом логического 0. Если одну из клавиш этого ряда нажать, то уровень сигнала на одном из входов PORTx[4]…PORTx[7] изменится с 0 на 1. Например, если нажали клавишу «0», то на входе PORTx[4] установится низкий логический уровень, а все остальные входы PORTx[5]…PORTx[7] останутся в 1. Или, если нажать клавишу «2», то в 0 установится вывод PORTx[6], а линии PORTx[4], PORTx[5] и PORTx[7] будут в 1. Таки образом, программа, прочитав состояние линий PORTx[4]…PORTx[7] и обнаружив 0 в каком-либо разряде, сможет установить, какая клавиша нажата.