Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перевод двоичного числа в десятичное и вывод на ЛСД.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Charoit
Делаю электронный термометр, датчик DS1621, МК - Атмега8515. Данные, что получаю по И2С запоминаются в двоичном виде, если я правильно понимаю, то чтобы вывести значение температуры на ЖКИ, надо перевести это число сначала в десятичную форму? А как потом выводить на ЖКИ - составлять таблицу соответствия? Если есть у кого пример - киньте пожалуйста, заранее спасибо!
zltigo
Цитата(Charoit @ Oct 24 2007, 22:49) *
А как....

По этому избитому вопросу воспользуйтесь поиском. Ну или просто подумайте.
rezident
Цитата(zltigo @ Oct 25 2007, 01:52) *
По этому избитому вопросу воспользуйтесь поиском. Ну или просто подумайте.

+1. Эти вопросы на форуме раз в две недели возникают.

Charoit, вы для начала разделите ваши проблемы на
1) вывод информации (любой) на LCD
2) вывод числа в символьном виде
3) перевод из двоичного формата в двоично-десятичный
А после этого решайте их последовательно.
Busel Roman
Цитата(Charoit @ Oct 24 2007, 22:49) *
Делаю электронный термометр, датчик DS1621 ...
Советую применить полный аналог данной микросхемы - AD7416. Работает быстрее и без глюков!
kolisnichenko_r
Попробуй это
void INDIC_U(double rez,double d)
//rez- преобразуемая величина
//d - множитель
// d=54.4519555 (250v)
// d=1.04706656 (7v)
// d=1 (Ikz)
{unsigned long i1;
char c[7]={0x2c/*","*/};
lcd_char(0x3d);//"="
rez=rez*d;
if(rez>=1000.0)
{com4=1;
com1=com2=com3=0;
rez=rez*100.0;
goto coma;}
if(rez>=100.0)
{com3=1;
com1=com2=com4=0;
rez=rez*1000.0;
goto coma;}
if(rez>=10.0)
{com2=1;
com1=com3=com4=0;
rez=rez*10000.0;
goto coma;}
else
{com1=1;
com2=com3=com4=0;
rez=rez*100000.0;}
coma:
i1=rez;
if((i1%10)>=5){rez=rez+10;}
i1=rez/10;
i1=i1%10;
c[5]=i1+48;
i1=rez/100;
i1=i1%10;
c[4]=i1+48;
i1=rez/1000;
i1=i1%10;
c[3]=i1+48;
i1=rez/10000;
i1=i1%10;
c[2]=i1+48;
i1=rez/100000;
i1=i1%10;
c[1]=i1+48;
i1=rez/1000000;
i1=i1%10;
c[6]=i1+48;
if(c[6]!=0x30) lcd_char(c[6]);
;
lcd_char(c[1]);
if(com1==1)lcd_char(c[0]);
lcd_char(c[2]);
if(com2==1)lcd_char(c[0]);
lcd_char(c[3]);
if(com3==1)lcd_char(c[0]);
lcd_char(c[4]);
if(com4==1)lcd_char(c[0]);
lcd_char(c[5]);
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.