Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.04.2007, 20:57  
ctefan
Временная регистрация
 
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
ctefan на пути к лучшему
По умолчанию подскажите как вывести значение ацп на индикатор

Подскажите как преобразовать значение ацп в код семисегментных индикаторов . Я незнаю как перевести 16-ное значение, в двоично-десятичное с последуещем выводом на 3-разрядный семисегментный индикатор.
Реклама:
ctefan вне форума  
Непрочитано 04.04.2007, 21:03  
ne-rad
Прописка
 
Регистрация: 14.02.2005
Сообщений: 101
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
ne-rad на пути к лучшему
По умолчанию

16-битное значение на 3 разрядный индикатор?...да, задача..........
бегущая строка
__________________
Festina lente!
ne-rad вне форума  
Непрочитано 04.04.2007, 22:53  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

С помощью микроконтроллера...
dimonbest вне форума  
Непрочитано 05.04.2007, 00:11  
vdlab
Гражданин KAZUS.RU
 
Аватар для vdlab
 
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
vdlab на пути к лучшему
По умолчанию

Сообщение от dimonbest
С помощью микроконтроллера...
хм, логично
А если все- таки не трех- , а пятиразрядный, то делается элементарно, с пару десятков строк на Си.
__________________
Если ты читаешь это - значит тебе нечем заняться...
vdlab вне форума  
Непрочитано 05.04.2007, 08:11  
Barmaley13
Частый гость
 
Регистрация: 04.09.2005
Сообщений: 19
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Barmaley13 на пути к лучшему
По умолчанию

ИМХО ctefan имел ввиду шестнадцатеричное значение (hex), а не 16-битное.
На Асме или на Сях нужно?
Barmaley13 вне форума  
Непрочитано 05.04.2007, 11:45  
fmssp
Вид на жительство
 
Регистрация: 02.09.2005
Сообщений: 332
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 15 сообщении(ях)
fmssp на пути к лучшему
По умолчанию 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;
fmssp вне форума  
Непрочитано 05.04.2007, 12:55  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

в предыдущем посте показано как вывести число на индикатор, а вот чтобы преобразовать из 16-ти битной системы в десятичную я делаю так:
FFFF т.е 65535 это максимальный порог напряжение на входе. Оно зависит от опорного напряжения, для разных АЦП вычисляется по своему (см. в даташит) Чтобы преобразовать пишем так:
Допустим макс. напряжение 10В, это соответствует
int max=65535, тогда вводим формулу:

Result=(outADC*10)/max;

Пример: на входе 5В, т.е 7FFF или 32767
(32767*10)/65535=4,9999
Обязательно округляем
Если нужно выводить числа с запятой, то еще нужно поморочится. Где-то на этом форуме обсуждался этот вопрос, связанный с выводом float на индикатор.
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 05.04.2007, 17:23  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

Выравнивание хорошо если не нужна супер-пупер точность, а в большинстве случаев она и не нужна.
Поэтому лучше выровнять и читать только один байт. Тогда и преобразование по проще будет
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 05.04.2007, 18:12  
ctefan
Временная регистрация
 
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
ctefan на пути к лучшему
По умолчанию

Извиняюсь за несовсем корректно поставленный вопрос. Мне нужно с помощью встроенного ацп pic16F877a измерить напряжение на делителе, в качестве опорного использую напряжение Vdd, то-есть
от 0 до 5в. Результат измерения как написано в
pdf сохраняется в двух регистрах в 16-ричном
виде, мне нужно это значение преобразовать в бинарное,затем в код семисегментных индикаторов при помощи подпрограммы перекодировки и вывести на 3 разряда индикатора.Программированием увлекся недавно, опыта как такового нет. Пишу на ассемблере,си незнаю. Может есть более простой способ?,подскажите.
ctefan вне форума  
Непрочитано 05.04.2007, 18:18  
fmssp
Вид на жительство
 
Регистрация: 02.09.2005
Сообщений: 332
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 15 сообщении(ях)
fmssp на пути к лучшему
По умолчанию

Сообщение от 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"
Можно взять за основу, там практически все, что нужно в вашем случае.
fmssp вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot