5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
|
1 | |
MCS-51. Реализация ЦАП, который бы выводил синусоиду08.12.2013, 11:55. Показов 7477. Ответов 30
Метки нет (Все метки)
Поставили предо мной задачу: написать на асме под MCS-51 цифро-аналоговый преобразователь, который бы выводил синусоиду. А я даже не знаю с чего начать...
Может ли кто-нибудь подсказать с алгоритмом? Все формулы, что я находил, использовали функцию sin() - её в АСМе 8051, кажется, нет. Как быть?
0
|
08.12.2013, 11:55 | |
Ответы с готовыми решениями:
30
ActiveX, который выводил бы bmp-файл на страничку Нужно написать код, который бы выводил сердце Создать страницу со скриптом, который бы средствами скрипта выводил sqrt(x) Создать метод, который бы выводил значение числа от 0 до 99 в виде слов Создать скрипт, который бы контрастировал изображение методом соляризации и выводил гистограмму изображений |
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
||||||
12.12.2013, 18:01 [ТС] | 21 | |||||
Попробовал реализовать идею построения синусоиды по заранее подготовленной таблице Y-значений на C#.
Работает отлично. А вот как заставить ШИМ вырисовывать импульсами синусоиду по этим значениям - так и не понял...
0
|
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
|
|
12.12.2013, 18:57 | 22 |
Поскольку в порт можно подавать только 0 или единицу то на выходе простого интегратора на RC цепочке можно получить только положительные напряжения. Добавим к синусоиде постоянную составляющую, чтобы перенести её в область положительных значений. Эти значения и используем для управления ШИМ.
0
|
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
|
12.12.2013, 21:11 [ТС] | 23 |
Хм... не совсем понял про постоянную составляющую. 2^8=256. 256/4=64. От 0 до 63 идет нарастание синусоиды, от 64 до 127 - спад, от 128 до 192 продолжается спад, от 193 до 255 - нарастание.
Чтобы не было отрицательных значений, я добавил к обычной формуле расчета Y-координат синусоиды 127 единиц: Y = 127 + 127 * Math.sin(3.14 * x * 0.007843) Я ведь правильно делаю?) Или вы не об этом?
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
12.12.2013, 21:22 | 24 |
Не об этом.
0
|
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
|
|
12.12.2013, 21:42 | 25 |
Формула
Сначала нужно определится с требованиями к синусоиде по допустимым нелинейным искажениям. По диапазону частот. Для большинства случаев на (практике) даже 16 точек на полупериод уже избыточно.
0
|
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
|||||||||||
13.12.2013, 15:42 [ТС] | 26 | ||||||||||
Понял, сейчас переделаю под 16 или 24 точки
Добавлено через 1 час 0 минут Готово, воспользовался вот такой вот формулой:
127, 161, 192, 219, 239, 251, 253, 246, 230, 207, 177, 144, 109, 76, 47, 23, 7, 0, 2, 14, 33, 60, 92, 126. Если я правильно понял, из них нужно создать таблицу, из которой потом нужно будет читать значения для управления ШИМом:
0
|
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
||||||
24.01.2014, 21:49 [ТС] | 27 | |||||
Забыл выложить результат. Исправляем. Если кто-то не понимает, что это за числа в конце и откуда они берутся - см. мою предыдущую запись, там описан процесс расчета.
0
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
27.01.2014, 01:20 | 28 |
Daemon2017, на верном пути но еще не все . Надо теперь передавать свой набор значений не в порт (P1), а в таймер, который работает в режиме ШИМ (предварительно его настроив, конечно). Или делать его самому, программно.
0
|
5 / 5 / 2
Регистрация: 07.01.2013
Сообщений: 102
|
|
27.01.2014, 04:22 [ТС] | 29 |
0
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
27.01.2014, 15:41 | 30 |
"я мзды не беру... Мне за державу обидно" <C>
0
|
0 / 0 / 0
Регистрация: 02.07.2019
Сообщений: 1
|
|
02.07.2019, 21:07 | 31 |
Daemon2017,
У меня сейчас такое же задание , и проблема с кодом для контроллера Не мог бы скинуть его в полном виде? Добавлено через 41 минуту Voland_, не подскажите может у вас есть код?
0
|
02.07.2019, 21:07 | |
02.07.2019, 21:07 | |
Помогаю со студенческими работами здесь
31
Создать командный файл, который выводил бы содержимое каталога, указанного в качестве параметра... Создать компонент, который бы при оборачивании контента в нем выводил бы его вместе с тегом sup Создать командный файл, который выводил бы содержимое каталогов, указанных в качестве параметров командной Как написать код, который при вводе чисел х, y, r выводил бы в какую область попадаем? Можно ли сделать так, чтобы Winamp выводил музыку на колонки, а PotPlayer выводил звук из фильма на наушники? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |