Пульт ДУ - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: terrarus 
Форум Picbasic.ru » Программирование МК » Mikrobasic » Пульт ДУ
Пульт ДУ
Kir7 Дата: Чт, 09.12.2010, 23:08  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 03.12.2010

Статус: Offline

Сразу скажу, первый раз занимаюсь контроллерами. Так что не взыщите. Необходимо изготовить пульт для медиапроигрывателя. Контроллер не выбирал, взял что было PIC16F676. Выбор у нас не богатый. Функции для работы с NEC кодировкой и воспроизведения команд, написал. Теперь борюсь с клавиатурой. Использую матрицу 4х5. PORTA.0 - PORTA.3 входа PORTB.0 - PORTB.4 выходы. Правда протеус, как то неадекватно моделирует эту функцию. Может я что-то не вижу. Подскажите.

Функция возвращает номер нажатой клавиши.

Сообщение отредактировал Kir7 - Пт, 10.12.2010, 17:19
ЯНДЕКС Дата: 09.12.2010
DAlexV Дата: Пт, 10.12.2010, 11:37  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Что бы заработало достаточно поменять в тексте PORTC на PORTB везде где встречается. И не забыть сделать правильную конфигурацию портов(вход/выход)

Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
Kir7 Дата: Пт, 10.12.2010, 13:53  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 03.12.2010

Статус: Offline

На этом проце нет PORTB есть PORTА и PORTС. Этот код работает, но в протеусе, функция иногда выдаёт не тот номер кнопки.
DAlexV Дата: Пт, 10.12.2010, 15:09  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Схемку глянуть можно ????

Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
Kir7 Дата: Пт, 10.12.2010, 16:07  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 03.12.2010

Статус: Offline

Вот проект.
Прикрепления: My_Key.rar(28Kb)
mikhail09p Дата: Пт, 10.12.2010, 16:51  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 504
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

У меня так работало:

Input PORTA.0: Input PORTA.1: Input PORTA.2: Input PORTA.3 ' Данные порты входа
Output PORTA.4: Output PORTA.5: Output PORTA.6: Output PORTC ' Данные порты выхода
Input PORTC.1
Symbol raw1 = PORTA.0
Symbol raw2 = PORTA.1
Symbol raw3 = PORTA.2
Symbol raw4 = PORTA.3
Dim col1 As PORTA.4: Dim col2 As PORTA.5: Dim col3 As PORTC.0
---------------------------------------------------------------------------------
klava:
key = 0 ' Обработка клавиатуры
col1 = 1
If raw1 = 1 Then
DelayMS 200
key = 1 ' 1
EndIf
If raw2 = 1 Then
DelayMS 200
key = 4 ' 4
EndIf
If raw3 = 1 Then
DelayMS 200
key = 7 ' 7
EndIf
If raw4 = 1 Then
DelayMS 200
key = 42 '*
EndIf
col1 = 0
col2 = 1
If raw1 = 1 Then
DelayMS 200
key = 2 ' 2
EndIf
If raw2 = 1 Then
DelayMS 200
key = 5 ' 5
EndIf
If raw3 = 1 Then
DelayMS 200
key = 8 ' 8
EndIf
If raw4 = 1 Then
DelayMS 200
key = 10 ' 0
EndIf
col2 = 0
col3 = 1
If raw1 = 1 Then
DelayMS 200
key = 3 ' 3
EndIf
If raw2 = 1 Then
DelayMS 200
key = 6 ' 6
EndIf
If raw3 = 1 Then
DelayMS 200
key = 9 ' 9
EndIf
If raw4 = 1 Then
DelayMS 200
key = 35 '#
EndIf
col3 = 0
Return

Kir7 Дата: Пт, 10.12.2010, 17:02  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 03.12.2010

Статус: Offline

Спасибо, в принципе алгоритм мало чем отличается. Значит, скорее всего глюк протеуса. В железе сделаю, проверю.
mikhail09p Дата: Пт, 10.12.2010, 17:30  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 504
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Ещё раз.
Я для чего скинул

Input PORTA.0: Input PORTA.1: Input PORTA.2: Input PORTA.3 ' Данные порты входа
Output PORTA.4: Output PORTA.5: Output PORTA.6: Output PORTC ' Данные порты выхода
Input PORTC.1
Symbol raw1 = PORTA.0
Symbol raw2 = PORTA.1
Symbol raw3 = PORTA.2
Symbol raw4 = PORTA.3
Dim col1 As PORTA.4: Dim col2 As PORTA.5: Dim col3 As PORTC.0

Иначе не работало! Вы же не показали весь проэкт.

DAlexV Дата: Сб, 11.12.2010, 13:07  |                                                                                                                Сообщение # 9
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Прошу прощения, вызвали на работу. Схемку поглядел. После того как удалил все кнопки, увидел забавную картину. Порт Порт А Это на делитель чем то смахивает. В принципе схемка работоспособна если указать протеусу что резисторы цифровые. Приклеил видоизмененную схему. Там немного по другому. Порт А выход, порт С вход. работает без глюков. С резисторами у меня колбасило то же.

еще раз повторюсь
Quote (DAlexV)
И не забыть сделать правильную конфигурацию портов(вход/выход)

Успехов wink
Прикрепления: 7229693.jpg(396Kb) · My_Key.dsn(89Kb)


Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
chiper Дата: Сб, 11.12.2010, 23:32  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Мдааа... Интересный протеус.. вернее даже тупой... :\

У меня в своё время не хотел правильно эмулироваться драйвер двигателя управляемый с МК, тупо не в те стороны вал впращался и не в той последовательности.... Потом убрал драйвер и поставил светодиоды, и управление логикой шло без глюков....
Тоже много жизненных багов заметил... Например ради интереса делал КЗ через кнопку biggrin
Закарачивал через кнопку +1000V постоянного тока и GND.... Протеус даже не предположил что при таком раскладе из кнопки тупо останется только дырка в плате.... Так же светодиоды от 220V запитывал... им тоже хоть бы что....
Короче его ещё пилить и пилить....


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Kir7 Дата: Сб, 11.12.2010, 23:54  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 03.12.2010

Статус: Offline

Quote (DAlexV)
После того как удалил все кнопки, увидел забавную картину. Порт Порт А Это на делитель чем то смахивает.

Ну а как без них? Те что на землю - защита от наводок и помех, те что последовательно - в принципе, никчему, по инерции поставил.
DAlexV Дата: Пн, 13.12.2010, 16:45  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (chiper)
Мдааа... Интересный протеус.. вернее даже тупой...

Да нет. Там просто есть куча настроек, которых мы обыватели не всегда знаем. Каждый раз заходя в тупик приходиться перечитывать FAQ на Kazusе. Испытывал глюк с ULN2803, не работали ключи. Оказалось что если не выставить нормальное состояние(1 или 0) на неиспользованные входа, симуляция не работает. А для ускорения работы схемы(если только цифра, без аналога) в свойствах резисторов тип указывать цифровой. Так что как говориться, век живи, век учись, и все равно дураком помрешь. Это я про себя biggrin


Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
Форум Picbasic.ru » Программирование МК » Mikrobasic » Пульт ДУ
Страница 1 из 11
Поиск: