Клавиатурный интерфес - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Клавиатурный интерфес (описание разработки интерфейса матричной клавиатуры.)
Клавиатурный интерфес
vladh5916 Дата: Ср, 27.04.2011, 14:52  |                                                                                                                Сообщение # 1
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Недавно "путешествия" в И-нете я нашел сайт: http://wiki.picbasic.org/index.php?n=ExampleCode.Keypad
Там была вот эта интересная статья. Мне показалась, что она будет интересна многим и я сделал её перевод, который здесь и предлагаю на всеобщее обозрение.

Странно. Я думал, что эта статья понравится многим, тем более, что подход к написанию интерфейса подойдет для многих байсик-компиляторов. А вижу только всеобщее равнодушие. Ведь при таком построении многие цепи можно использовать в нескольких назначениях. Например для клавиатуры и для ЖКИ.

Прикрепления: ___PIC-.docx(220Kb)

Сообщение отредактировал vladh5916 - Чт, 28.04.2011, 21:56
ЯНДЕКС Дата: 27.04.2011
mikhail09p Дата: Чт, 28.04.2011, 22:27  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 495
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

vladh5916, ну почему всеобщее равнодушие?!! wacko Я, например, использовал похожий способ опроса клавиатуры в кодовом замке. http://picbasic.ru/forum/5-457-2
Помогали все, кто мог и желал, за что большое спасибо.
Не думайте, что если не восхищаются люди, то это не нужно, обычно мы (они) тихо работаем wink
Не пропадёт наш (Ваш) труд. smile

Сообщение отредактировал mikhail09p - Чт, 28.04.2011, 22:36
vladh5916 Дата: Пт, 29.04.2011, 05:34  |                                                                                                                Сообщение # 3
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Спасибо Михаил за внимание. Но в Вашей ссылке используется стандартная команда Inkey (для стандартного подключения клавиатуры), а в примере переведенной статьи, подключение может быть свободным, цепи матрицы клавиатуры могут идти не по порядку и на разные порты. Я почему обратил на неё внимание? У меня под рукой оказалось готовое изделие, т.н. промышленный контроллер MIAC от Flowcode: http://www.matrixmultimedia.com/miac.php
Я купил эту бодягу, чтобы использовать на работе для решения одной важной производственной задачи. Но в арсенале компилятора Flowcode, который обслуживает это изделие нет математической операции логарифмирования и возведения в степень (для AVR и ARM правда есть но там стоит PIC18F4455), а эти операции мне нужны для обработки результата. Поэтому решил написать программу на Протоне, который мне знаком. Но выясняется, что Протон стандартными средствами не может работать с таким подключением клавиатуры. Правда там еще и ЖКИ подключен не стандартно. Поэтому скорее всего буду писать на MikroBasice. Он все это умеет делать. Вот из этих рассуждений я и вышел на описываемую статью.
mikhail09p Дата: Пт, 29.04.2011, 22:15  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 495
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Code
klava:
key = 0                       ' Обработка клавиатуры
col1 = 1
     If raw1 = 1 Then
         DelayMS 100
         key = 1                    ' 1
     EndIf
     If raw2 = 1 Then
         DelayMS 100
         key = 4                    ' 4
     EndIf
     If raw3 = 1 Then
         DelayMS 100
         key = 7                    ' 7
     EndIf
     If raw4 = 1 Then
         DelayMS 100
         key = 42                   '*
     EndIf       
col1 = 0
col2 = 1
     If raw1 = 1 Then
         DelayMS 100
         key = 2                      ' 2  
     EndIf
     If raw2 = 1 Then
         DelayMS 100
         key = 5                      ' 5
     EndIf
     If raw3 = 1 Then
         DelayMS 100
         key = 8                      ' 8
     EndIf
     If raw4 = 1 Then
     DelayMS 100
         key = 10                      ' 0
     EndIf
col2 = 0
col3 = 1
     If raw1 = 1 Then
         DelayMS 100
         key = 3                       ' 3
     EndIf
     If raw2 = 1 Then  
          DelayMS 100
         key = 6                       ' 6
     EndIf
     If raw3 = 1 Then  
         DelayMS 100
         key = 9                       ' 9
     EndIf
     If raw4 = 1 Then
         DelayMS 200
           If raw4 = 1 Then
           DelayMS 500
           key = 35                     '#
           EndIf                        
     EndIf
col3 = 0
Return

Вот подпрограмма опроса клавиатуры. Пост 39.
vladh5916 Дата: Сб, 30.04.2011, 06:43  |                                                                                                                Сообщение # 5
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Прошу прощения за мою невнимательность. Да, действительно, вначале обсуждаемой схемы было одно, а потом логика рассуждений изменилась. Как мне кажется жаль, что это решение не было никем выделено. И следовательно мало кто мог воспользоваться подобным решением в дальнейшем.
Еще раз приношу свои извинения.
mikhail09p Дата: Пн, 02.05.2011, 23:08  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 495
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Да всё нормально, не надо извинятся. Будет время, выложу свой кодовый замок в виде статьи. Тем более, что он изменился в лучшую сторону. Не бог весть что, но кому нибуть да и сгодится.
fedonin Дата: Ср, 21.05.2014, 00:40  |                                                                                                                Сообщение # 7
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 08.03.2014

Статус: Offline

Добрый вечер всем! Может, не ко времени, хочу поделиться своим примером обработки матрицы 4х4 с последовательным вводом четырех (можно больше) цифр, отображением их на экранчике, возможность автоповтора ввода, либо отсутствие автоповтора. Думаю, что мой пример прост и нагляден. При каждом нажатии в младший разряд вводится цифра, соответствующая нажатой клавише, а уже набранные цифры сдвигаются влево. Если все разряды заполнены, ввод прекращается, независимо от нажатия клавиш, набранное число на экранчике остается. И одно замечание про порты: если используется не PORTB с включенными подтягивающими резисторами - можно сэкономить на 4 резисторах, ибо разряды 0-3 у InKey - выходы, им подтягивающие резисторы не нужны.
Прикрепления: ____44.doc(22Kb)
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Клавиатурный интерфес (описание разработки интерфейса матричной клавиатуры.)
Страница 1 из 11
Поиск: