Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.04.2007, 20:57
|
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
подскажите как вывести значение ацп на индикатор
Подскажите как преобразовать значение ацп в код семисегментных индикаторов . Я незнаю как перевести 16-ное значение, в двоично-десятичное с последуещем выводом на 3-разрядный семисегментный индикатор.
|
|
|
|
04.04.2007, 21:03
|
|
Прописка
Регистрация: 14.02.2005
Сообщений: 101
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
16-битное значение на 3 разрядный индикатор?...да, задача..........
бегущая строка
__________________
Festina lente!
|
|
|
|
04.04.2007, 22:53
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
С помощью микроконтроллера...
|
|
|
|
05.04.2007, 00:11
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Сообщение от dimonbest
|
С помощью микроконтроллера...
|
хм, логично
А если все- таки не трех- , а пятиразрядный, то делается элементарно, с пару десятков строк на Си.
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
05.04.2007, 08:11
|
|
Частый гость
Регистрация: 04.09.2005
Сообщений: 19
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ИМХО ctefan имел ввиду шестнадцатеричное значение (hex), а не 16-битное.
На Асме или на Сях нужно?
|
|
|
|
05.04.2007, 11:45
|
|
Вид на жительство
Регистрация: 02.09.2005
Сообщений: 332
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 15 сообщении(ях)
|
Re: подскажите как вывести значение ацп на индикатор
Сообщение от ctefan
|
Подскажите как преобразовать значение ацп в код семисегментных индикаторов . Я незнаю как перевести 16-ное значение, в двоично-десятичное с последуещем выводом на 3-разрядный семисегментный индикатор.
|
Можно так, к примеру...
Код:
|
unsigned int inttobcd(unsigned int num)
{
unsigned int n3, n2, n1, n0;
if(num ‹ 10)
{
return num;
}
if(num ‹ 100)
{
n1 = num / 10;
n0 = num - n1 * 10;
return (n1 * 16 + n0);
}
if(num ‹ 1000)
{
n2 = num / 100;
n0 = num - n2 * 100; // для временного хранения
n1 = n0 / 10;
n0 = n0 - n1 * 10;
return (n2 * 256 + n1 * 16 + n0);
}
if(num ‹ 10000)
{
n3 = num / 1000;
n0 = num - n3 * 1000; // для временного хранения
n2 = n0 / 100;
n0 = n0 - n2 * 100; // для временного хранения
n1 = n0 / 10;
n0 = n0 - n1 * 10;
return (n3 * 4096 + n2 * 256 + n1 * 16 + n0);
}
return 0; |
|
|
|
|
05.04.2007, 12:55
|
|
Временная регистрация
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
в предыдущем посте показано как вывести число на индикатор, а вот чтобы преобразовать из 16-ти битной системы в десятичную я делаю так:
FFFF т.е 65535 это максимальный порог напряжение на входе. Оно зависит от опорного напряжения, для разных АЦП вычисляется по своему (см. в даташит) Чтобы преобразовать пишем так:
Допустим макс. напряжение 10В, это соответствует
int max=65535, тогда вводим формулу:
Result=(outADC*10)/max;
Пример: на входе 5В, т.е 7FFF или 32767
(32767*10)/65535=4,9999
Обязательно округляем
Если нужно выводить числа с запятой, то еще нужно поморочится. Где-то на этом форуме обсуждался этот вопрос, связанный с выводом float на индикатор.
__________________
Музыка и звук - не одно и тоже...
|
|
|
|
05.04.2007, 17:23
|
|
Временная регистрация
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Выравнивание хорошо если не нужна супер-пупер точность, а в большинстве случаев она и не нужна.
Поэтому лучше выровнять и читать только один байт. Тогда и преобразование по проще будет
__________________
Музыка и звук - не одно и тоже...
|
|
|
|
05.04.2007, 18:12
|
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
Извиняюсь за несовсем корректно поставленный вопрос. Мне нужно с помощью встроенного ацп pic16F877a измерить напряжение на делителе, в качестве опорного использую напряжение Vdd, то-есть
от 0 до 5в. Результат измерения как написано в
pdf сохраняется в двух регистрах в 16-ричном
виде, мне нужно это значение преобразовать в бинарное,затем в код семисегментных индикаторов при помощи подпрограммы перекодировки и вывести на 3 разряда индикатора.Программированием увлекся недавно, опыта как такового нет. Пишу на ассемблере,си незнаю. Может есть более простой способ?,подскажите.
|
|
|
|
05.04.2007, 18:18
|
|
Вид на жительство
Регистрация: 02.09.2005
Сообщений: 332
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 15 сообщении(ях)
|
Сообщение от ctefan
|
Извиняюсь за несовсем корректно поставленный вопрос. Мне нужно с помощью встроенного ацп pic16F877a измерить напряжение на делителе, в качестве опорного использую напряжение Vdd, то-есть
от 0 до 5в. Результат измерения как написано в
pdf сохраняется в двух регистрах в 16-ричном
виде, мне нужно это значение преобразовать в бинарное,затем в код семисегментных индикаторов при помощи подпрограммы перекодировки и вывести на 3 разряда индикатора.Программированием увлекся недавно, опыта как такового нет. Пишу на ассемблере,си незнаю. Может есть более простой способ?,подскажите.
|
В этом топике:
https://kazus.ru/forum/topics/6923.html
vasseff дал ссылку на сайт мелкочипа, AN557 - "Four Channel Digital Voltmeter with Display and Keyboard"
Можно взять за основу, там практически все, что нужно в вашем случае.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Как вывести русские символы на LCD из CAVR
|
mdn_tec |
Микроконтроллеры, АЦП, память и т.д |
51 |
27.05.2012 23:52 |
как вывести буквы на дисплей
|
andron-kip |
Микроконтроллеры, АЦП, память и т.д |
4 |
27.10.2008 00:28 |
как вывести на LCD данные из буфера?
|
goooblin |
Микроконтроллеры, АЦП, память и т.д |
11 |
02.04.2007 10:01 |
Как вывести из ступора DS1307?
|
Muzicant |
Микроконтроллеры, АЦП, память и т.д |
4 |
09.10.2006 19:28 |
Как значение из памяти программ
|
Akmal |
Микроконтроллеры, АЦП, память и т.д |
2 |
20.02.2005 02:21 |
Часовой пояс GMT +4, время: 13:58.
|
|