Разобрать данные ds18b20 и вывести на индикатор7 сегментов - C (СИ)
Формулировка задачи:
Всем добрый день. Как разобрать данные с плавающей запятой из датчика ds18b20, и правильно разбить по разрядам 7ми сегментного индикатора.
Код считывания температуры
for(j=0;j<devices;) { temperature=ds18b20_temperature(&ds18b20_rom_codes[j][0]); temps = (unsigned int) temperature;//Присвоим переменной temp значение переменной temperature с явным указанием типа данных if (temperature<0)temps = ( ~temps ) + 0x0001; // если число отрицательное перевести его в норм.вид celie = (temps >> 4); // целая часть числа drob_tmp = temps & 0x0F; // дробная часть числа с точностью 1/16 градуса drob = (unsigned int) ((drob_tmp * 10) / 16); // преобразование дробной части в формате "1/16 градуса" в десятичный формат с точностью 0,1 градуса if (temperature<0) {//Если темп. плюсовая или 0 buf5=10;// знак "-" 6разряду } buf0=0;//5разряд buf1=drob;//4разряд buf2=celie/100;//3разряд buf3=celie%100/10;//2разряд buf4=celie%10;//1разряд j++; } delay_ms(800); }
Решение задачи: «Разобрать данные ds18b20 и вывести на индикатор7 сегментов»
textual
Листинг программы
//преобразуем в целое число drob_tmp = (drob_tmp<<1) + (drob_tmp<<3);// Умножаем на 10 drob_tmp = (drob_tmp>>4);//делим на 16 или умножаем на 0.0625
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д