Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102

MCS-51. Реализация ЦАП, который бы выводил синусоиду

08.12.2013, 11:55. Показов 8249. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поставили предо мной задачу: написать на асме под MCS-51 цифро-аналоговый преобразователь, который бы выводил синусоиду. А я даже не знаю с чего начать...
Может ли кто-нибудь подсказать с алгоритмом? Все формулы, что я находил, использовали функцию sin() - её в АСМе 8051, кажется, нет. Как быть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2013, 11:55
Ответы с готовыми решениями:

ActiveX, который выводил бы bmp-файл на страничку
Мне нужно срочно написать activeX для ASP, который бы работал с бмп-шкой, и выводил ее на страницу.. и все...Но сколько я не долблюсь с...

Нужно написать код, который бы выводил сердце
Нужно написать код,который бы выводил сердце на С++. Помогите пожалуйста, очень надо!

Создать страницу со скриптом, который бы средствами скрипта выводил sqrt(x)
Создать страницу со скриптом, который бы средствами скрипта выводил sqrt(x), где x – числовая переменная, которой присвоено некоторое...

30
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
08.12.2013, 12:14
ШИМ + ФНЧ.

http://radioparty.ru/index.php... ?showall=1
http://easyelectronics.ru/avr-... -shim.html
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
08.12.2013, 12:30  [ТС]
Спасибо, буду изучать
0
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
08.12.2013, 16:07
Но ШИМ и ЦАП это вещи довольно разные. Если дали задание чтоб ЦАП выводил синусоиду, то значит надо взять 51-й микроконтроллер, подключить к нему микросхему ЦАП, и написать к ней программу.
Задание учебное?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
08.12.2013, 17:40
...разные-то разные, но вчитайтесь в формулировку "написать на асме под MCS-51 цифро-аналоговый преобразователь". Тут нету возьмите ЦАП и напишите ПО управления им на МК.
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
08.12.2013, 19:26  [ТС]
Задание учебное. Действительно, нашел варианты сделать вот так:

(Рис. Формирование аналогового сигнала с помощью ШИМ и ФНЧ)

А на микрухе написать только подачу ШИМ сигнала. Но у меня большие сомнения на тему того, примут ли это у меня)
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
08.12.2013, 19:31
...почему нет, есть еще вариант ЦАП-а в виде резистивной матрицы к портам МК.
0
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
08.12.2013, 19:39
Есть еще вариант заменить ШИМ на -дельта-сигма преобразование Програмно проще чем ШИМ но требуется более высокая частота прерываний.
0
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
08.12.2013, 22:13
Цитата Сообщение от raxp Посмотреть сообщение
Тут нету возьмите ЦАП и напишите ПО управления им на МК.
Странно, а я вполне определенно вижу что надо использовать ЦАП.
Ну да ладно. Чем тогда объясните необходимость менять ЦАП на ШИМ в микроконтроллере у которого нет аппаратного ШИМа? При том что задание учебное, покупать микросхемы не нужно.

Добавлено через 5 минут
Цитата Сообщение от Daemon2017 Посмотреть сообщение
Может ли кто-нибудь подсказать с алгоритмом? Все формулы, что я находил, использовали функцию sin() - её в АСМе 8051, кажется, нет. Как быть?
Синусоиду лучше сделать таблицей через команду "mov a @a+dptr". Причем можно записать в таблицу только четверть синусоиды. Потом повернуть счетчик назад, потом обратить знак.
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
08.12.2013, 22:42  [ТС]
Цитата Сообщение от paskal Посмотреть сообщение
Странно, а я вполне определенно вижу что надо использовать ЦАП.
Ну да ладно. Чем тогда объясните необходимость менять ЦАП на ШИМ в микроконтроллере у которого нет аппаратного ШИМа? При том что задание учебное, покупать микросхемы не нужно.

Добавлено через 5 минут

Синусоиду лучше сделать таблицей через команду "mov a @a+dptr". Причем можно записать в таблицу только четверть синусоиды. Потом повернуть счетчик назад, потом обратить знак.
А вы не могли бы поподробнее про dptr рассказать, нас этому не учили О.о
0
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
08.12.2013, 22:48
100% учили - косвенная адресация это азы.
0
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
08.12.2013, 22:55
dptr - 16-битный регистр, назначение - указатель памяти программ. Загружается командой mov dptr #data.
Команда mov a @a+dptr записывает в a значение из таблицы. На начало таблицы указывает dptr, смещение - в a.
Если подробней, то систему коменд mcs-51 надо почитать.
0
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
08.12.2013, 23:02
Ну да ладно. Чем тогда объясните необходимость менять ЦАП на ШИМ в микроконтроллере у которого нет аппаратного ШИМа?
Но в контроллере нет и аппаратного ЦАП. А ШИМ или дельта-сигма ЦАП реализуются на одном таймере почти не занимая ресурсов.
0
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
09.12.2013, 00:25
Цитата Сообщение от MaslovVG Посмотреть сообщение
Но в контроллере нет и аппаратного ЦАП.
И это причина менять ЦАП на ШИМ при задании "реализация ЦАП"? Не вижу логики.
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
09.12.2013, 00:51  [ТС]
Цитата Сообщение от paskal Посмотреть сообщение
dptr - 16-битный регистр, назначение - указатель памяти программ. Загружается командой mov dptr #data.
Команда mov a @a+dptr записывает в a значение из таблицы. На начало таблицы указывает dptr, смещение - в a.
Если подробней, то систему коменд mcs-51 надо почитать.
Т.е. я заношу в эту таблицу 1/4 значений синусоиды(т.е. она растет, затем читаю эти же значения в обратном порядке и она убывает, а после этого инвертирую знак и она уходит в минус, потом снова читаю в обратном порядке и она приходит к начальному значению) и их как-то динамически читать?

Завтра спрошу, можно ли использовать внешние элементы. Будет забавно просто подвесить к нему ЦАП и управлять им через десяток-другой строчек кода)
0
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
09.12.2013, 10:48
paskal,
Назовите мне хотя бы один распространенный MCS51 имеющий на борту ЦАП.
Будет забавно просто подвесить к нему ЦАП и управлять им через десяток-другой строчек кода)
ШИМ и реализуется в 5-6 строчек кода.
1
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
09.12.2013, 13:48
Цитата Сообщение от Daemon2017 Посмотреть сообщение
Т.е. я заношу в эту таблицу 1/4 значений синусоиды(т.е. она растет, затем читаю эти же значения в обратном порядке и она убывает, а после этого инвертирую знак и она уходит в минус, потом снова читаю в обратном порядке и она приходит к начальному значению) и их как-то динамически читать?
Для мк она не уходит в минус она изменяется от 0 до 255 (если 8 битный АЦП). Т.е. четверть это значения от 0 до 63, дальше всевозможные преобразования для получения полного периода синусоиды.
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
09.12.2013, 18:59  [ТС]
Цитата Сообщение от MaslovVG Посмотреть сообщение
paskal,
Назовите мне хотя бы один распространенный MCS51 имеющий на борту ЦАП.

ШИМ и реализуется в 5-6 строчек кода.
Так я про ЦАП... сегодня узнал - постороннее железо использовать нельзя, разрешают только то, что "на борту" микроконтроллера. Сейчас засяду за dptr
0
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
09.12.2013, 20:01
Цитата Сообщение от MaslovVG Посмотреть сообщение
paskal,
Назовите мне хотя бы один распространенный MCS51 имеющий на борту ЦАП.
Так их полно! У аналогдевайсеса адуки. Из распространенных ADUC812 например. У Silicon Labs их вообще море, даже не перечислить. И у других фирм тоже есть, весь список не пересчитать.
0
 Аватар для Daemon2017
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
12.12.2013, 17:58  [ТС]
Попробую сделать вот так: к порту подключу простейший ЦАП

а с микроконтроллера попробую выдавать ШИМом синусоиду.

Как просто ШИМ реализовать - знаю, а вот как заставить его выдавать значения "по синусоидальному закону" - пока нет догадок. Возможно, нужно загрузить куда-нибудь(в dptr) таблицу Y-значений синусоиду(0-255, где всё, что меньше 127 - отрицательные значения, а всё, что больше 127 - положительные).
Assembler
1
2
mov dptr, #sintab;
movc a, @a+dptr;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2013, 17:58
Помогаю со студенческими работами здесь

Создать метод, который бы выводил значение числа от 0 до 99 в виде слов
Создайте метод у всех числовых объектов, который бы выводил значение числа от 0 до 99 в виде слов. Например число 45 должно выводиться как...

Создать скрипт, который бы контрастировал изображение методом соляризации и выводил гистограмму изображений
Нужно создать скрипт, который бы контрастировал изображение методом соляризации по формуле: y = k*x*(xmax - x) и выводил гистограмму...

Создать командный файл, который выводил бы содержимое каталога, указанного в качестве параметра...
Помогите определить в чем ошибка бат файла:( Задание: Создать командный файл, который выводил бы содержимое каталога, указанного в...

Создать компонент, который бы при оборачивании контента в нем выводил бы его вместе с тегом sup
Как можно создать компонент на Java, который бы при оборачивании контента в нем в конечно итоге выводил бы его вместе с тегом sup. То есть,...

Создать командный файл, который выводил бы содержимое каталогов, указанных в качестве параметров командной
Создать командный файл, который выводил бы содержимое каталогов, указанных в качестве параметров командной строки в файл протокола,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru