Перейти к содержанию

Edsim51: Ошибка При Переводе Аналоговой Информации В Цифровую


Flashton

Рекомендуемые сообщения

Здравствуйте. Пишу программу для микроконтроллера EdSim51. Программа нажатием кнопки переводит аналоговую информацию в цифровую, но перевод происходит не верно. Подскажите, пожалуйста, где ошибка и как её исправить.

Код программы:

Start:

MOV A, P2

ANL A, #00000100B

JNZ Start

E1:

MOV A, P2

ANL A, #00000100B

JZ E1

CLR P3.6

SETB P3.6

CLR P3.7

MOV R1, P2

MOV P1, P2

JMP Start

Описание работы: при вводе аналоговой информации движком ADC, нажатии и отпускании кнопки «2», на панели светодиодов «Switch Bank» отображается введённая информация в цифровом виде.

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

Изменено пользователем Flashton
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выложив схему подключения (во вложении). Там ADC по центру.

Также выложил результат работы программы (там ADC слева, внизу, задал 0,50V, а на светодиодах какое-то несоответствие :( )

post-141675-0-03731200-1352095034_thumb.gif

post-141675-0-05680400-1352095241_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Что то я не понимаю, почему компаратор так включен, это какая то фишка? (не понимаю как сигнал со входа компаратора должен попасть в АДЦ) :)

"Неверно" - это значит то, что выходной код с входным не совпадает? Или то, что отображаемая информация не циферкой выводится? :)

Еще как ряд вариантов:

- в программе проверяется клавиатура, которая параллельно с АДЦ подключена, защиты от дребезга нет, а в считанном коде как раз не хватает того бита, который на проверяемой кнопке висит. (наверно). Не исключено, что забивается дребезгом.

- длительность подачи сигнала WR на АДЦ равна по времени выполнению одной инструкции контроллера... вдруг слишком быстро? :) (хотя в это слабо верится)

- измеряется шум на входе АДЦ... и больше ничего.

Не уверен конечно, что эмулятор эти пунктики эмулировать умеет, но с кнопкой, которая на одном проводе с выходом АДЦ, в реале точно проблема будет, почему бы не использовать отдельный кейпад, подключенный на P0 :)

Ссылка на комментарий
Поделиться на другие сайты

А где, процедура работы с динамической индикацией?Где подготовка данных к отображению? Просто так перекинуть данные не получится.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

Ссылка на комментарий
Поделиться на другие сайты

Да я так понял, что он на данном этапе использует один из четырех индикаторов в качестве сборки из 8 светодидов, чтобы наглядно видеть линию на 8-бит без десятичного представления. А сигнал должен сниматься с ЦАПа и передаваться в АЦП. И на выходе у него три светика горит, а на входе два - типа неправильно. Но пояснений то нет.... что не тема, то гадания :)

Дополнение:

Хотя нет, светятся три - там точка подсвечена (незаметненько так), значит светятся три сегмента, как и на выходе.... Но я всё равно не понимаю, как сигнал через компаратор в АЦП попал. Значит вопрос про то, как цифры отобразить.... ничё не понимаю)

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

С десятичной индикацией не работаю, это для меня пока очень сложно. Информацию вывожу на линейку светодиодов. Но, вход и выход не совпадают, не понимаю что поправить, чтобы было верно.

Добавлю ещё раз код программы с комментариями.

Start:

MOV A, P2

ANL A, #00000100B

JNZ Start ///////////// Ввожу данные и проверяю - нажата ли кнопка 2? Если нет, то в начало, если да, то дальше.

E1:

MOV A, P2

ANL A, #00000100B

JZ E1 ///////////// Проверяю, отжата ли кнопка 2? Если нет, то перехожу по метке E1, если да, то дальше.

CLR P3.6

SETB P3.6

CLR P3.7

MOV R1, P2

MOV P1, P2 /////////// Пытаюсь вывести результат на панель светодиодов.

JMP Start

Ссылка на комментарий
Поделиться на другие сайты

Код программы тут мало о чем говорит, т.к. у Вас на одну шину кучу всего навешано. Если Вы не объясните откуда и куда должны двигаться данные, вряд ли кто то сможет помочь, разве что погадать. Уберите со схемы всё, что не касается проблемы, тогда может понятнее будет, раз уж объяснить не хотите.

- Не могу выехать через город на трассу. Помогите.

- А как и где Вы ехали?

- Где как ехал, не скажу, но въезд с выездом не совпадает.

Дополнение:

И в чём собственно заключается неверность "перевода"?

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

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

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

Получается так:

Start:

MOV A, P2

ANL A, #00000100B

JNZ Start

E1:

MOV A, P2

ANL A, #00000100B

JZ E1

MOV P1,#00000000B

CLR P0.7

STT:

INC P1

MOV A,P3

ANL A,#10000000B

JNZ STT

MOV P3,A

JMP Start

Схему подключения выкладывал в начале темы.

В этой программе задаётся какой-нибудь уровень напряжения, по нажатию и отпусканию кнопки "2" введённое напряжение преобрзуется в цифру (так понял я). На осцилографе видно, как всё работает. Во вложении скрин работы программы.

Теперь нужно сделать так, чтобы при вводе 10 уровней напряжения результаты их преобразования заносились в массив. Подскажите, пожалуйста, как проще и оптимальнее решить эту задачу.

Скрин работы программы:

post-141675-0-83361400-1352973842_thumb.jpg

Изменено пользователем Flashton
Ссылка на комментарий
Поделиться на другие сайты

Сделал массив так:

Start:

mov r3,#9

mov r0,#309ah

E0:

MOV A, P2

ANL A, #00000100B

JNZ E0

E1:

MOV A, P2

ANL A, #00000100B

JZ E1

E2:

MOV P1,#00000000B

CLR P0.7

STT:

INC P1

MOV A,P3

ANL A,#10000000B

JNZ STT

MOV @r0,P1

DJNZ r3,E2

MOV P3,A

JMP Start

Это правильно в моём случае? Посмотрите, пожалуйста.

Изменено пользователем Flashton
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...