Электронные устройства для "Sinclar ZX Spectrum" 1993 г.

Устройства, использующие АЦП И ЦАП - запись и воспроизведение звука. Говорящий "Спектрум". Управление манипуляторами. Ревербератор.


5. УСТРОЙСТВА, ИСПОЛЬЗУЮЩИЕ
АЦП И ЦАП

Описанные далее схемы и устройства будут использовать совместно АЦП и ЦАП.
В некоторых очень интересных устройствах АЦП принимает входные сигналы и
одновременно ЦАП (или только выходной порт) генерирует выходные. Расширение
использования требует одновременного хранения в памяти СПЕКТРУ МА программы
и данных АЦП и ЦАП.

Все устройства описанные в этой главе требуют наличия:

1. АЦП. - ~ .

2. ЦАП или плат выходного порта.

3. Источник питания ЦАП. /

4. Другие подключаемые к ним устройства* такийкак микрофоны, термометры,
переключатели, насосы* или модель железной дороги масштаба 00.

5.1. ЗАПИСЬ И ВОСПРОИЗВЕДЕНИЕ

ЗВУКА

Для чего нужно с помощью компьютера записывать н воспроизводить звук, когда
кассетный магнитофон делает это легко? В отличии от магнитофона, звук хранимый
в памяти СПЕКТРУМА может воспроизводиться С увеличенной и уменьшенной ско-
ростью, в прямом и обратном направлнии, звук может легко редактироваться и т.д. В
предлагаемой разработке сигнал записанный С помощью микрофона может быть
воспроизведен различными способами с помощью простых программ на БЕЙСИКЕ.
В разделе 5.3 по этой причине записываются звуки соответствующие буквам алфави-
та, используя которые можно составлять слова. СПЕКТРУМ получает возможность
разговаривать. Эти звуки могут быть записаны на магнитофон для дальнейшего ис-
пользования. Наконец, в разделе 5.4 описывается, как на этой технологии построить
цифровой ревербератор.

Необходимо понимать, что компьютер синтезирует звук и это часто снижает каче-
ство звука. Качественный сигнал получается при частоте выборок 10 кГц, при этом
сигнал длительностью 1 сек. занимает 10000 ячеек памяти. Это демонстрируется в
программе описанной в разделе 5.2. Если требуется записать звук большой длитель-
ности, то необходимо будет снйзитьчастотувьгё^ звука.
Для звука воспроизводимого "говорящим компьютером" характерны шумы квантова-
ния. - _ -.- "А"- - ' -:

5.2. ЗАПИСЬ ЗВУКА НА СПЕКТРУМЕ

Листинг программы выполняющей запись звука:
Мнемоника Десятичный код Коментарий

Id de,40960 17 Стартовый адрес области

0 записи выборок звукового

160 сигнала.

push af 245

push hi 229

Id hi,5120 33 Количество выборок.

0
14

in а, (30) 219 Из порта с адресом 30 пере-

30 слать данные (выборка зву-

кового сигнала) в аккумуля-
тор.

Id (de) ,а 18 Поместить выборку в ячейку

памяти с адресом хранящимся
ede.

Id b,50 6 Задержка для установления

50 скорости выборки (число 50

dc cb 5 может быть от 0 до 255).

jr nz,-3 32

253

inc de 19 Подготовка для следующей

выборки.

dec hi 43

Id а,1 125

or а 183

jr nz,-14 32

242

Id a,h 124 Счетчик для 5120 выборок

or а 183

jr nz,-18 32

238

pop hi 225

pop af 241 _

ret 201 Возврат в БЕЙСИК

После выполнения данной программы в ячейках памяти с адресами от 40960 до
46079 будут находиться числа от 0 до 255, представляющие собой цифровые выборки
звукового сигнала, полученного от микрофона. Для усиления сигнала от микрофона
используется операционный усилитель установленный на плате АЦП.

Используя ЦАП можно воспроизвести записанный звук. Этот процесс выполняется
с помощью программы:

Мнемоника Десятичный код Коментарий

Id de,40960 17 Стартовый адрес области

О записи выборок звукового

160 сигнала,

push af 245

push hi 229

Id hi,5120 33 Количество выборок.

0
14

Id a,(de) 26 Переслать значение из

ячейки памяти с адресом
хранящимся в de в аккуму-
лятор.

out(31),а 221 Передать данные в порт с

адресом 31 (ЦАП).
Id b,50 б Задержка для установления

й» 50 скорости выборки (число 50

dc cb 5 может быть от 0 до 255).

jr nz,-3 32 =

; 253

inc de 9 у Подготовка для следующей

выборки.

dec hi 43 "j

id а,1 125

or a 183

jr nz,-14 32 -

242

Id a,h 124 Счетчик для 5120 выборок

or a 183

jr nz,-18 32

238

pop hi 225

pop af 241 __

ret 201 Возврат в БЕЙСИК

Обычная программа, которал вызывает^обе приведенных в этом разделе подпрог-
раммы в машинных кодах, предварительна загрузив их в ячейки памяти с последова-
тельным и адресами от 64000 до 64057 имеет вид: . .
10 FOR х-0 ТО 57
20 READ п
30 POKE (64000fx),n
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 0
65 PRINT AT 0,7;">"
70 LET 1-USR 64000

80 PRINT AT 0,0;"replay ";PAUSE 0
85 PRINT AT 0,7;">"
90 LET 1-USR 64029
100 GO TO 60

В строках 10-55 производится загрузка машинных кодов. В следующих строках
выводится надпись "SPEAK" (говорите) и после нажатия на любую клавишу произ-
водится запись звука. Затем выводится надпись "REPLAY" (воспроизведение). После
нажатия на любую клавишу из усилителя подключенного к выходу ЦАП будет слы-
шен звук.

Изменяя величину задержки в программе можно изменять высоту воспроизводи-
мого звука. Попытайтесь изменить величину 50 в подпрограмме воспроизведения
звука для увеличения и снижения его высоты.

5.3. ГОВОРЯЩИЙ СПЕКТРУМ

Существуют микросхемы которые MoiyT "говорить" день недели и месяц года,
технические термины, инструкции, и т.д. Они дороги и в значительной части дубли-
руются электронной схемой СПЕКТРУМА. Дополнительно потребуются только пла-
ты АЦП/ЦАП и микрофон. Приведенная ниже программа, использующая значитель-
ную часть памяти СПЕКТРУМА, запоминает звуки алфавита, которые вводятся с
помощью микрофона. Таким образом создаются звуки соответствующие буквам ал-
фавита. Если затем ввести с клавиатуры какое-либо слово, то компьютер свяжет
вместе все фонемы и произнесет введенное слово.
Эта программа очень проста:
10 FOR х-0 ТО 57
20 READ п
30 РОКЕ (64000+х) ,п
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 х-0 ТО 25
70 POKE 64002,16(Н-3*х

80 PRINT "PRESS KEY";CHR$ (97+x);"and speak": PAUSE 0
90 LET 1-USR 64000
100 NEXTx

110 INPUT "type in your word";a$

130 FOR x-1 TO LEN a$

140 POKE 64031, 16(H(CODE a$(x-TO.x)-97)

150 LET 1-USR 64029

160 NEXTx

170 GOTO 110

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

"е", "еа" имеют различное произношение. Увеличивая список звуков можно преодо-
леть эту проблему, но каждый звук занимает в памяти 768 ячеек памяти и поэтому 26
букв алфавита занимают в памяти около 20 К. Введенные однажды в память компью-
тера звуки (область памяти от 40960 до 60928) могут быть сохранены на магнитофоне.
Для этого необходимо остановить работу программы нажав клавиши "SHIFT-BREAK"
после ввода звука "Z" и затем набрать:
SAVE "SPEAK" CODE 40960,2000
Эти байты могут быть обратно загружены в память:
LOAD "SPEAK" CODE 40960,2000

Длительность записи или воспроизведения этих данных около 90 сек. После запи-
си данных на магнитофон в проф&мму следует ввести строку:
56 GOTO 110

иначе данные соответствующие звукам будут стерты в памяти новыми данными,
которые будут введены в соответствии со строками 607^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(1 )-Z(4) и в соответствующий разряд выходного порта (OUT 31) записыва-
ется "1". Команда должна быть произнесена за 1 сек. Это время ограничено разрядно-
стью регистров микропроцессоров Z80 и временем затрачиваемым на анализ каждого
слова. Индикация записи/вычислений показывает как это происходит в программе.
В строке 400 организован режим ожидания звукового сигнала и посредством этого
более полно используется область памяти отведенная для записи слова. Если принятое
слово окажется трудным для распознавания, то компьютер выдаст серию звуковых
сигналов. Более сложные системы анализа речи могут распознавать сотни слов, одна-
ко при 48 К памяти СПЕКТРУМА это невозможно. Этот проект, однако, демонстри-
рует основные принципы.

Следующая программа в машинных кодах предназначена для управления 8-ка-
нальным роботом с помощью джойстиков. Программа формирует последовательности
импульсов для каждого канала.
Листинг программы:

Мнемоника Десятичный код Коментарий

In а, (24) 219 В регистр В загрузить значение

24 пропорциональное положению джой-

ld Ъ,а 71 стика N 1 подключенного к порту

с адресом 24.

Id а,1 62 Идентифицировать канал управле-

1 нияК 1 и установить а этом

out(31),l 211 канале.
31

dec b 5 -

jr nz,-3 32 Задается длительность импульса

Ida,0 253 пропорционально положению

0 J джойстика.

out (31) ,а 211 Конец импульса.
31

Если используются два канала, то законченная программа в машинных кодах будет
иметь вид:

in а,(24) 219 -i

24

Id b,a 71

Id а,1 62

1

out (31),a 211

31 Канал 1

dec b 5

jr nz,-3 32

253
62

Id a,0 0

out (31),a 211

31

in a, (25) 219 "

25

Id b,a 71

Id a,2 62

out (31),а 211

31 Канал 2

dec b 5

jr nz,-3 32

253

Id a,9 62

0

out(31)',a 5-.

Ж'" J "
Id b,255 ^ 6 -n . Ж

255 • г' Два цикла^формирующих задержку
dec b 4 5 между имт*$Й>сами. (Это необходи-

jr nz,-3 ;'V 32 '^?: мо тощ&о если использовать ме-

>; 253V*?.. нее четырех каналов).

Id b,255 ^

dek b ^ / : ?

jr nz,-3 ^ '' г.

jp 64000 : Возврат к начальному адресу

255 " ~ " программы - 64000.

249

Выходные импульсы имеют длительность 0-2 мс в каждом канале и повторяются
через 15-20 мс.

Именно такие сигаалы требуются для работы сервоусилителя типа ACOMS AS-3,
который широко используется в различных системах радиоуправления. Этот сервоу-
силитель представляет собой фукционалыю законченное изделие, которое может
быть непосредственно подключено к выходному порту и управляется с помощью
программы в машинных кодах описанной выше. Для точного позиционирования в
сервоусвдщ-еле^применена обращая свя%£-дрмощыа потенциометра связанного с
выходнышяалом. В^ЦдаоупрарюёЩрс ЩцеЯ^ и(^льз|Щтся ф^акд^е^модули
собранныёШа миниатюрных эл§1рЖ, (^^фщт ^анфлШафого н|||олу робота
размер и 1Щф.смефт6$^ так вЩен. С^рде^шзмтели* однако^Шносит^аэно дешевы
ИИХМОЖн6|^ПНТЬ.1Щ&ЫМИ.с^-..., - ^ , Г' - ^ С - ^

Соединение между СПЕКТРУМОМ и роботом предполагается сделать проводным.
Если управляющие сигналы передаются по радио, с помощью звука или световых
лучей, то программу нужно немного изменить, а именно, при загрузке выходного
порта импульс для любою какала формировать в 1 разряде. Для этого команды Id а, 1,
Id а,2, Id а,4 заменить на Id а,1. Выходной сигнал в этом случае будет представлять
последовательность импульсов различной ширины, которая может декодироваться
стандартным блоком для управления моделями. (Возможно между импульсами по-
требуется дополнительная задержка). Механическое соединение сервоусилителей с
моделью предоставим пользователю, имеющему в своем распоряжении до 8 каналов
управления. Для сервоусилителей и электромоторов необходим отдельный источник
постоянного тока; им может быть батарея гальванических элементов 4,5 В, никель-
кадмиевый аккумулятор 4,8 или 5 В. Стабилизатор, такой как для платы ЦАП. В своем
устройстве я просто использовал 5 В источник питания платы ЦАП и выходного порта.

Полная программа для LOAD и RUN зависит от числа каналов. Сигнал для каждого
канала устанавливается на соответствующем разряде выходного порта путем записи
в него чисел 1,2,4,8,16,32,64,128 командой OUT 31,N.
Для двух каналов введите:
10 FOR Х-0 ТО 40
20 READ N
30 POKE (64000*-X),N
40 NEXT X

50 DATA 219,24,71,62,1,211,31,5,32,253,62,0,211,31,
219,25,71,62,2,211,31,5,32,253,62,0,211,31,
6,255,5,32,253,6,255,5,32,253,195,255,249
60 LET 1-USR 64000
Сохраните программу и запустите ее.

Простая программа на БЕЙСИКЕ использующая АЦП, микрофон с усилителем и
выходной порт или ЦАП может распознавать до 8 различных команд подаваемых
голосом через микрофон.

10 PRINT "THE FOLLOWING WORDS WILL APPEAR": PRINT: PRINT "ON

THE SCREEN AT 1 SECOND": PRINT: PRINT "INTERVALS": PRINT
20 INK 2: PRINT "LEFT": PRINT: PRINT "RIGHT": PRINT: PRINT "
UP": PRINT : PRINT "DOWN"

30 INK 0: PRINT: PRINT "TO ACTIVATE, START AND STOP": PRINT :
PRINT" BY CALLING": PRINT: PRINT "press any key"

31 INK 0: PRINT : PRINT "TO ACTIVATE, START AND STOP": PRINT :
PRINT " BY CALLING": PRINT : PRINT "press any key"

40 PAUSE o: CLS

50 FOR x-1 TO 4: GO SUB 300+x

60 FOR z-1 TO 100: IF IN 30-0 THEN NEXT z: GO TO 80

70 OUT 31,2~x: CLS : PRINT AT 3,0;"ACTIVATED"; GO SUB 400: OUT

31,0: CLS
80 NEXT x
90 GO TO 50

301 PRINT AT 0,8;"UP ": RETURN

302 PRINT AT 0,8;"DOWN ": RETURN

303 PRINT AT 0,8;"LEFT ": RETURN

304 PRINT AT 0,8;"RIGHT ": RETURN
400 RETURN

Команды появляются на экране последовательно, с периодичночтью 1 секунда.
Когда появляется требуемая команда оператор говорит в микрофон и в соответствую-
щий данной команде разряд выходного порта записывается "1". Эта команда будет
выполняться до тех пор пока не будет произнесено следующее слово. Такая последо-
вательность повторяется неопределенно долго.

Микрофон улавливает любые звуки, так что в нашем случае достаточно стука. Если
фоновые шумы высоки, то IN30 никогда не будет равно "0", поэтому порог нужно
увеличить до 50 или около тою, в соответствии с условиями.

Программу можно усовершенствовать путем добавления звука и графики, но это
оставляем для экспериментов пользователей.

Количество и назначение команд может изменяться по сравнению с приведенными
в программе, в соответствии с индивидуальными потребностями.

5.5. РЕВЕРБЕРАТОР

При подключении ЦАП и АЦП к СПЕКТРУМУ для записи и воспроизведения
звука, его можно использовать в качестве ревербератора, т.е. устройства создающего
эхо. Для этого служит программа 9 кодах:

Мнемоника Десятичный код Коментарий

Id de,40960 17 (6400б> стартовый адрес)

1 0 v.f

-: 160;; ..

Id hi,5120 *-"■£ 33 - Количество выборок в цикле.

- 0 .

V-. И / . :

Id a,(de) ; , 26 ,

out(31) ,а 221 :;'

31 - ---iВвод/ВЫВОД,
in а (30) 219

30 _

Id (de),a 18

Id b,50 6 "1 Задержка.

50

dec b 5

jr nz,-3 32

,... -- 253—J —- —T — - .

incde ; 191 Tj - ~

dechl Л ф: :-]

Id a ,1 125 t ^

or a 183 Счетчик выборок,

jr nz,-17 32

239

Id a,h 124

or a 183

jr nz,-21 32

235

jp 64000 195 Возврат в начало программы.

255
249

Программа заполняет в памяти область начиная с адреса 40960 выборками вход-
ного сигнала. После записи 5120 выборок программа возвращается к адресу 40960 и
выводит первый байт. Сразу за этим в ячейку записывается новая выборка звукового
сигнала. Эта последовательность повторяется циклически. Записанный звук воспро-
изводится через 1 секунду, что воспринимается как эхо. Последовательность работы
программы демонстрируется в таблице:

10 FOR х-0 ТО 29
20 READ п
30 POKE (6400+х) ,n
40 NEXTx

50 DATA 17,ОД 60,33,0,14,26,211,31,219,30,18,6,50,5,32,253,19,

43,125,183,32,239,124,183,32,235,195,255,249
60 PRINT "ECHO": PRINT: PRINT "Once RUN this program cannot":
PRINT: PRINT "be stopped.": PRINT: PRINT "The echo deley
can be changed by": PRINT: PRINT "stopping, then changing
the": PRINT: PRINT "number following 6 in line 50": PRINT
: PRINT "for anumber 0 TO 255": PRINT: PRINT "NOW PRESS
ANY KEY"
70 PAUSE 0
80 LET 1-USR 64000

Поскольку эта программа в машинных кодах не может быть прервана после запу-
ска, она будет генерировать эхо до выключения компьютера. Длина эхо может регу-
лироваться двумя способами. Во-первых, ее можно регулировать изменяя число за-
гружаемое в регистровую пару HL. Это число определяет количество выборок в цикле.
Во-вторых, изменяя число загружаемое в регистр В можно настраивать задержку
между выборками. Для высококачественного звучания задержку между выборками
нужно уменьшать, а их количество увеличивать, хотя это приводит к тому, что
используется все большая область памяти СПЕКТРУМА.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
HARDWARE - Переключатель режимов работы Profi/Pentagon.
Оттяг - 20 вещей,которые вы можете сделать, пока игра загружается с ленты.
Прeдиcлoвиe oт Demiurge Аsh'a - Сaтaнинcкaя Библия oт Чeрнoгo Пaпы АKА Антoн Шaндoр ЛaВeй, вecьma рaритeтнaя вeщь для нaшeй cтрaны. Нe дymaл, чтo тaк cкoрo cmoгy yвидeть ee в рyccкom пeрeвoдe...
Разное - Азы переписки.
Новости - Состояние дел у Ростовских спектрумистов: Disabler, Klim, Wild, Dimon, The Rom.

В этот день...   29 апреля