Автор Тема: Монстрам схемотехники - новая задачка про эмулятор  (Прочитано 38512 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Итак, эмулятор клавы. Дана матрица - 10х10. Нужно через com порт или другой интерфейс эмулировать на матрице работу клавиатуры. Подскажите, с чего начать.

Вижу работу так: в порт отправляем 2 байта - оси x и Y. На пересесечении еденичек на матрице коротим полевичок. Таким образом можно управлять клавой 8х8, у каждой виртуальной кнопки свой адрес.  Как бы это аппаратно воплотить...
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Когда-то пытался ёлочную гирлянду сделать. Тут схема и исходники.
« Последнее редактирование: 09 Апреля 2009, 09:10:48 от eriser »
Не все йогурты одинаково полезны!

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Ещё вариант 1533ИР22 2шт   (матрица 8х8)
Не все йогурты одинаково полезны!

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Ещё вариант на микроконтроллере
Не все йогурты одинаково полезны!

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
матрица 16х16
Не все йогурты одинаково полезны!

Форум проекта "Минилаб-Мастер"


Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Супер!!!!! Разбираюсь...
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Форумчанину eriser официально предлагаю права Модератора в любой раздел Форума пр его выбору.
Напоминаю права Модератора:

"В некоторых случаях, для всех или отдельных разделов форума Администратором могут быть назначены один или несколько специальных Пользователей - Модераторов, которые призваны следить за выполнением правил форума в данном разделе. Как правило, в качестве Модераторов привлекаются постоянные и наиболее ответственные участники форума. Помимо обычных прав Пользователя, Модераторы имеют возможность редактирования или удаления ЛЮБЫХ сообщений, оставленных другими участниками, а также перемещения сообщения в другие разделы. Помимо этого, Модератор может полностью заблокировать обсуждаемую тему и даже полностью удалить её.
 
Если Вы хотите стать одним из Модераторов форума или хотите вести собственную тему на форуме, Вам следует обратиться с письмом к Администратору Форума."
« Последнее редактирование: 09 Апреля 2009, 14:53:44 от admin »
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Последняя схема очень нравится, но она на lpt  :( Может есть что-нибудь подобное но на com порте? хотелось бы без контроллеров, я их програмить не умею. И чтоб в комп передавал обратно на будущее.
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Есть ещё такая дубовая схемка:
 МК тут ненужен, им станет сам комп, нужно только МАХ232   использовать. (RESET) мы сбрасываем состояние регистра. (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру.  Регистры сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий  и как только будет слово мы подаем сигнал Ready и зажигаем всё это через транзистор.

Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый  бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. Происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.

А для сброса Reset в ноль на пару микросекунд.

Но на микроконтроллере по моему проще и надёжнее. Програмировать их очень просто. Программатор на нескольких сопротивлениях. Особых затруднений вызвать не должно, если что подскажу.


Не все йогурты одинаково полезны!

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
А можно управлять этими девайсами черз стандартный COM порт?  Чтобы можно было управление даже из CMD скрипта сделать, посылая в порт нужный байт из командной строки, например:
echo 1  > com1
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Форум проекта "Минилаб-Мастер"


eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Я думаю можно, только нужно не просто послать байт и ждать когда зажгётся, а  создать цикл, исходя из количества диодов(ключей), загрузить нужные биты в регистр и тогда управляющим байтом включить нужные диоды.
Не все йогурты одинаково полезны!

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
А есть какая - нибудь дока по контроллеру первой схемки по русски и набру команд? Я далекий... Мне бы матрицу 8х8 и чтобы после после получения координат матрица замыкалась миллисекунд на 100 и автоматом размыкалась...

А 74145 там для чего стоит? Расширения адресов?
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Цитировать
Я думаю можно, только нужно не просто послать байт и ждать когда зажгётся, а  создать цикл, исходя из количества диодов(ключей), загрузить нужные биты в регистр и тогда управляющим байтом включить нужные диоды.

или можно послать последовательно 3 байта?
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
\'****************************************************************************
\'* Filename    : LED-MATRIX 5*16
\'* Revision    : 1.0
\'* Controller  : AT90S2313
\'* Compiler    : BASCOM-AVR 1.11.8.3 DEMO
\'* Author      : Rubashka Vasiliy , Ukraine , 2007
\'* WWW         : http://ledeffects.net
\'* Mail        : info@ledeffects.net
\'****************************************************************************
$crystal = 11059200
$baud = 9600
Const Buffer_size = 10
Config Portb = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output

Dim Base As Byte
Dim Temp As Byte
Dim Comdata As Byte
Dim Bad1 As Byte
Dim Bad2 As Byte
Dim Bad3 As Byte
Dim Bad4 As Byte
Dim Bad5 As Byte
Dim Bad6 As Byte
Dim Bad7 As Byte
Dim Bad8 As Byte
Dim Bad9 As Byte
Dim Bad10 As Byte
Dim Index As Byte
\'Portb = &HFF
                                           \' Timer0 Interrupt
Config Timer0 = Timer , Prescale = 64
On Timer0 Timer0isr                                         \' Timer0 Auto Reload Timer Mode
Enable Timer0                                               \' Enable Timer0
Enable Interrupts                                           \' Enable All Interrupt
Start Timer0                                                \' Start Timer0

Do
Base = Inkey()
If Base = "S" Then
Gosub Download
End If
Loop

Download:
For Index = 0 To 9
Temp = Waitkey()
  If Temp > "9" Then
     Temp = Temp - 7
  End If
  Shift Temp , Left , 4
  Comdata = Temp And &HF0
Temp = Waitkey()
  If Temp > "9" Then
     Temp = Temp - 7
  End If
  Temp = Temp And &HF
  Comdata = Comdata Or Temp

  Select Case Index
  Case 0 : Bad1 = Comdata
   Case 1 : Bad2 = Comdata
    Case 2 : Bad3 = Comdata
     Case 3 : Bad4 = Comdata
      Case 4 : Bad5 = Comdata
       Case 5 : Bad6 = Comdata
        Case 6 : Bad7 = Comdata
         Case 7 : Bad8 = Comdata
          Case 8 : Bad9 = Comdata
           Case 9 : Bad10 = Comdata
           End Select
  Next Index
Return

Timer0isr:                                                  \' Timer Interrupt 0
Portb = Bad1
Portd = &H00
Gosub Outd
Portb = Bad2
Portd = &H04
Gosub Outd
Portb = Bad3
Portd = &H08
Gosub Outd
Portb = Bad4
Portd = &H0C
Gosub Outd
Portb = Bad5
Portd = &H10
Gosub Outd
Portb = Bad6
Portd = &H14
Gosub Outd
Portb = Bad7
Portd = &H18
Gosub Outd
Portb = Bad8
Portd = &H1C
Gosub Outd
Portb = Bad9
Portd = &H20
Gosub Outd
Portb = Bad10
Portd = &H24
Gosub Outd
Portb = &H00
Return

Outd:
Waitus 100
Return

АААА !!!! неужели так просто? Дайте мне мануал....  :o
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Ну в первый раз конечно сложновато... ;)  
Тут  лежит программа которой я пользуюсь  http://www.lancos.com/prog.html
Программатор универсальный- один раз соберёшь пригодится... AVR ISP with STK200/300 pinout (connect it to STK200/300 eva board)
(по поводу нескольких сопротивлении я конечно преуменьшил, но тоже не сложно, я с PIC-ами перепутал, а тут АТМЕЛ)
Там есть прошивка *.bin, *.hex их и нужно шить.


Цитировать
или можно послать последовательно 3 байта?
похоже нет, нужно ещё подавать CLC чтобы биты сдвигать
Не все йогурты одинаково полезны!

Форум проекта "Минилаб-Мастер"