![]() | |
Слаботочка Книги 1 2 3 4 5 6 7 [8] 9 10 11 12 13 Id hl.5120 in a, (30) ld(de),a
Количество выборок. Из порта с адресом 30 переслать данные (выборка звукового сигнала) в аккумулятор. Поместить выборку в ячейку памяти с адресом хранящимся Bde. Задержка для установления скорости выборки (число 50 может быть от О до 255). Подготовка для следующей выборки. Счетчик для 5120 выборок Возврат в БЕЙСИК После выполнения данной программы в ячейках памяти с адресами от 40960 до 46079 будут находиться числа от О до 255, представляющие собой цифровые выборки звукового сигнала, полученного от микрофона. Для усиления сигнала от микрофона используется операционный усилитель установленный на плате АДП. Используя ЦАП можно воспроизвести записанный звук. Этот процесс выполняется с помощью программы: Мнемоника Id de,40960 push af push hi Десятичный код 160 245 229 Коментарий Стартовый адрес области записи выборок звукового сигнала. Id hl.5120
Количество выборок. Переслать значение из ячейки памяти с адресом хранящимся в de в аккумулятор. Передать данные в порт С адресом 31 (ЦАП). Задержка для установления скорости выборки (число 50 может быть от О до 255). Подготовка для следующей выборки. Счетчик для 5120 выборок Возврат в БЕЙСИК Обычная программа, которая вызывает обе приведенных в этом разделе подпрограммы в машинных кодах, предварительно загрузив их в ячейки памяти споследова-тельными адресами от 64000 до 64057 имеет вид: 10 FORX-0TO57 . . , 20 READn 30 РОКе (6400О+х),п 40 NEXTx 50 DATA 17,0,160,245,229,33,0,50,219,30,18,6,50,5,32,253.19,43, 125,183,32,242,124,183,32,238,225,241,201 55 DATA 17,0,160,245,229,33,0,50,26.211.31.6.30,5,32,253.19.43, 125,183.32.242,124.183.32,238.225,241.201 60 PRINT AT 0,0; speak : PAUSE О 65 PRINT AT 0,7; > 70 LET 1-USR 64000 80 PRINT AT O.O; replay ;PAUSE0 85 PRINT AT 0,7 ; > 90 LET 1-USR 64029 100 GO TO 60 В строках 10-55 производится загрузка машинных кодов. В следующих строках выводится надпись SPEAK (говорите) и после нажатия на любую клавишу производится запись звука. Затем выводится надпись REPLAY (воспроизведение). После нажатия на любую клавишу из усилителя подключенного к выходу ЦАП будет слы- шен звук. Изменяя величину задержки в программе можно изменять высоту воспроизводимого звука. Попытайтесь изменить величину 50 в подпрограмме воспроизведения звука для увеличения и снижения его высоты. 5.3. ГОВОРЯЩИЙ СПЕКТРУМ Существуют микросхемы которые могут говорить день недели и месяц года, технические термины, инструкции, и т.д. Они до[юги и в значительной части дублируются электронной схемой СПЕКТРУМА. Дополнительно потребуются только платы АДП/ЦАП и микрофон. Приведенная ниже программа, использующая значительную часть памяти (СПЕКТРУМА, запоминает звуки алфавита, которые вводятся с помощью микрофона. Таким образом создаются звуки соответствующие буквам алфавита. Если затем ввести с клавиатуры какое-либо слово, то компьютер свяжет вместе все фонемы и произнесет введенное слово. Эта программа очень проста: 10 FORX-0TO57 20 READ п 30 РОКЕ (б4000+х),п 40 NEXTx 50 DATA 17,0,160,245,229,33,0,50,219,30,18,6,50,5,32,253,19,43, 125,183,32,242,124,183,32,238,225,241,201 55 DATA 17,0,160,245,229,33,0,50,26,211,31,6,30,5,32,253,19,43, 125,183,32,242,124,183,32,238,225,241,201 60 FOR x-0 TO 25 70 POKE 64002,160f3*x 80 PRINT PRESS KEY ;CHR$ (97+x) ; and speak : PAUSE 0 90 LET bUSR 64000 100 NEXTx 110 INPUT type in your word ;a$ 130 FORx-1 TO LEN a$ 140 POKE 64031, 16(H(CODE a$(x-TO.x)-97) 150 LET 1-USR 64029 160 NEXTx 170 GO TO 110 Требуемая буква алфавита должна быть произнесена когда будет нажата соответствующая клавиша. Эту процедуру можно повторить несколько раз до тех пор, пок качество воспроизводимой речи не станет хорошим. Некоторые буквы, такие как а > е , еа имеют различное произношение. Увеличивая список звуков можно преодолеть эту проблему, но каждый звук занимает в памяти 768 ячеек памяти и поэтому 26 букв алфавита занимают в памяти около 20 К. Введенные однажды в память компьютера звуки (область памяти от 40960 до 60928) могут бьггь сохранены на магнитофоне. Для этого необходимо остановить работу программы нажав клавиши SHIFT-BREAK после ввода звука Z и затем набрать: SAVE SPEAK CODE 40960,2000 Эти байты могут бьггь обратно загружены в память: LOAD SPEAK CODE 40960,2000 Длительность записи или воспроизведения этих данных около 90 сек. После записи данньк на магнитофон в программу следует ввести строку: 56 GOTO ПО иначе данные соответствующие звукам будут стерты в памяти новыми данными, которые будут введены в соответствии со строками 60.. .100 программы. 5.4. УПРАВЛЕНИЕ РОБОТАМИ-МАНИПУЛЯТОРАМИ Ни одна книга о компьютерах не будет завершенной без упоминания о роботах. Приведенная в этом разделе программа позволяет использовать СПЕКТРУМ для управления исполнительным устройством с помощьюкоманд подаваемьпс человеком. Исполнительным устройством может быть роботгманипулятор или движущийся робот, приводимые в движение небольшими электродвигателями или соленоидами. Типичный робот-манипулятор, движется в соответствии с 4 независимыми командами (имеет 4 степени свободы). Моторы включаются последовательно одни за другим в соответствии с 8- разрядными сигналами поступающими с платы порта вывода: 00000010 команда 1. Стартовый адрес 40960 00000100 команда 2. 41472 00001000 команда 3. 41984 00010000 команда 4. 42496 Программа принимает последовательно четьфе слова и запоминает их в памяти в соответствии с приведенным выше списком. Каждое слово состоит 512 выборок и, будучи однажды введенным, сохраняется в памяти СПЕКТРУМА до его выключения. В процессе записи каждое вводимое слово анализируется путем простого сложения всех вводимых байт. Поэтому для команд разумно выбирать слова различной длины и уровня: слова STOP, START, UP, DOWN имеют похожие осцилограммы, а слова ELEVATE и STOP сильно различаются. Во время приема команды данные размещаются в 512 ячейках памяти начиная с адреса 43008 и анализируются аналогичным образом. Полученная величина сравнивается с Z(l)-Z(4) и в соответствующий разряд вькодного порта (OUT31) записывается 1 . Команда должна быть произнесена за 1 сек. Это время ограничено разрядностью регистров микропроцессоров Z80 и временем затрачиваемым на анализ каждого слова. Индикация записи/вычислений показывает как это происходит в программе. В строке 400 организован режим ожидания звукового сигнала и посредством этого более полно используется область памяти отведенная для записи слова. Если принятое слово окажется трудным для распознавания, то компьютер выдаст серию звуковьпс сигналов. Более сложные системы анализа речи могут распознавать сотни слов, одна- 4-6S6i ко при 48 К памяти СПЕКТРУМА это невозможно. Этот проект, однако, демонстрирует основные принципы. Следующая программа в машинных кодах предназначена для управления 8-ка-нальным роботом с помощью джойстиков. Программа формирует послодовательн импульсов для каждого канала. Листинг программы: Мнемоника Деопичный код Коментарий
Если используюкал иметь вид: I канала, тозаковчениая программа в машинных кодах (
Канал!
2Ц 31 255 5 32 . 253 6 255 5 253 195 255 249 Канал2 цикла, фо1 1ирующих задержку между нмпулками. (Это необходимо 1<тло если использовать менее seiKpex каналов). Возврат к начальному адресу программы - 64000. Выходные импульсы имеют длительность 0-2 мс в каждом ка1шле и повторяются через 15-20 мс. Именно такие сигналы требуются для работы сервоусилителя типа ACOMS AS-3, который широко используется в различных системах радиоуправления. Этот сервоусилитель представляет собой фукционально законченное изделие, которое может быть непосредственно подключено к выходному порту и утфавляется с помощью программы в машинных кодах описанной выше. Для точного гюзнционировання в сервоусклителеприменена обратная свжзьх помощью. потенциометра.связаиного с выходным валом. В радиоуправляемых миделях используются компактные модуш собранные на миниатюрных элементах, однако для yci анашшваемого нй полу робота размер и весэяемевтов не так в *ен. Сервоусилители однако, относитфьно дешевы и их можно купить гот( ыми., ... S -, Соединение между СПЕКТРУМОМ и роботом предполагается сделать проводным. Если управляющие сигналы передаются по радио, с яомощью звука или световых лучей,то программу нужно немного изменить, а именно, при загрузке выходного порта импульс для любого канала формировать в 1 разряде. Для этого команды Id а, 1, Id а,2. Id а,4 заменить на Id а,1. Выходной сигнал в этом случае будет представлять последовательность импульсов различной ширины, которая может декодироваться стандартным блоком для управления моделями. (Возможно между импульсами потребуется дополнительная задержка). Механическое соединение сервоусилителей с моделью предоставим пользователю, имеющему в своем распоряжении до 8 каналов управления. Для сервоусилителей и электромоторов необходим отдельный источник постоянного тока; им может быть батарея гальванических элементов 4,5 В, никель-кадмиевый аккумулятор 4,8 или 5 В. Стабилизатор, такой как для платы ЦАП. В своем устройстве я просто использовал 5 В источник питания платы ЦАП и выходного порта. 1 2 3 4 5 6 7 [8] 9 10 11 12 13 |
|