<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B</id>
	<title>Алгоритм матричной клавиатуры - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B"/>
	<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B&amp;action=history"/>
	<updated>2026-07-10T21:05:59Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B&amp;diff=519&amp;oldid=prev</id>
		<title>Sonya: Новая страница: «Для реализации взаимодействия пользователя с микропроцессорной системой используют ра...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B&amp;diff=519&amp;oldid=prev"/>
		<updated>2021-06-06T12:19:54Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Для реализации взаимодействия пользователя с микропроцессорной системой используют ра...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Для реализации взаимодействия пользователя с микропроцессорной системой используют различные устройства ввода-вывода информации, например, кнопка, осуществляющая размыкание-замыкание контакта при нажатии. Недостаток использования такого подключения в том, что для подключения каждой кнопки требуется отдельная линия параллельного порта. &lt;br /&gt;
&lt;br /&gt;
Для увеличения числа кнопок и уменьшения используемых линий ввода-вывода используют матричную клавиатуру, которая представляет собой матрицу кнопок, организованных в ряды и столбцы.&lt;br /&gt;
&lt;br /&gt;
Программа микроконтроллера начинает работать при включении питания устройства и завершает работу, когда питание выключается. Для этого в программе должен быть бесконечный цикл, в теле которого происходит постоянный опрос клавиатуры. Опрос клавиатуры заключается в последовательном сканировании каждого столбца, для этого на соответствующую линию порта вывода подается логический ноль, на остальных столбцах должен быть высокий уровень, после чего с порта ввода, к которому подключены строки, считывается код.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Подключение матричной клавиатуры к микроконтроллеру AVR ATmega32&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Матричная клавиатура.png|мини|Подключение матричной клавиатуры к микроконтроллеру AVR ATmega32]]&lt;br /&gt;
&lt;br /&gt;
Матричная клавиатура – несколько, в нашем случае девять, взаимосвязанных кнопок, которые подключаются к выводам микроконтроллера таким образом: к первой ножке подключается первая строка, ко второй – вторая и так далее. Столбцы так же подключаются к свободным ножкам порта. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим код программы, в которой определяется номер нажатой клавиши:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned char key_tab[3] = {0b11111110,  // массив столбцов &lt;br /&gt;
                            0b11111101,  // (место, где стоит 0,  &lt;br /&gt;
                            0b11111011,  // соответствующий &lt;br /&gt;
                            };           // столбец-1,2,3)&lt;br /&gt;
unsigned char scan_key(void) // Функция опроса клавиатуры&lt;br /&gt;
{&lt;br /&gt;
unsigned char key_value = 0; // в данной функции определяется&lt;br /&gt;
unsigned char i;             // номер нажатой клавиши&lt;br /&gt;
for(i = 0;i &amp;lt; 3;i++)         // и присваивается &lt;br /&gt;
{                            // переменной key_value.&lt;br /&gt;
PORTD = key_tab[i];          // В PIND будет находиться&lt;br /&gt;
switch (PIND &amp;amp; 0b11111000)   // двоичное число,&lt;br /&gt;
{                            // в котором на месте нулей&lt;br /&gt;
case 0b11110000:             // будет номер строки&lt;br /&gt;
key_value = 1 + i * 3;       // и столбца нажатой клавиши.&lt;br /&gt;
return (key_value);&lt;br /&gt;
case 0b11101000:&lt;br /&gt;
key_value = 2 + i * 3;&lt;br /&gt;
return (key_value);&lt;br /&gt;
case 0b11011000:&lt;br /&gt;
key_value = 3 + i * 3;&lt;br /&gt;
return (key_value);&lt;br /&gt;
default:&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return (key_value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После выполнения этой части кода можно получить номер нажатой кнопки в переменной key_value и использовать ее в дальнейшем при написании кода.&lt;br /&gt;
&lt;br /&gt;
Таким образом, матричные клавиатуры - метод, позволяющий очень надёжно и довольно легко работать с большим количеством кнопок, задействуя при этом минимальное число выводов микроконтроллера. Благодаря большому разнообразию видов, форм, цветов и размеров, можно найти подходящую для своего проекта клавиатуру.&lt;/div&gt;</summary>
		<author><name>Sonya</name></author>
	</entry>
</feed>