Jump to content

Термометр


 Share

Recommended Posts

Всем здравствуйте!

прошу помощи тк как я только учусь)))

вот код - собран из разных исходников и работает, но есть вопрос, который я так и не могу решить, точнее понять сути((

#include <mega8.h>               //библиотека ввода\вывода
#include <delay.h>               //библиотека задержки
#asm                             //сообщаем куда подключен датчик
       .equ __w1_port=0x15; PORTC
       .equ __w1_bit=3
#endasm                  
#asm                             //сообщаем куда подключён экран
   .equ __lcd_port=0x18
#endasm
#include <lcd.h>                 //библиотека для LCD
#include <1wire.h>               //библиотека работы с 1Wire
#include <ds18b20.h>             //библиотека для работы с датчиком ds18b20
#include <stdio.h>               //ненаю что за библиотека, но без неё неполучается
unsigned char buffer_1[16]={'T','E','R','M','O','M','E','T','R'};
unsigned char rom_code[8][9];    //масив с адресами найденых датчиков
char lcd_buffer[33];             //масив с данными для экрана
void main(void)                  
{
unsigned char devices, i;        //переменная в которой количество присоеденённых датчиков, и номер выбранного датчика
int temp;                        //переменная для хранения температуры
lcd_init(16);                    //инициилизация LCD, и говорим что он на 16 символов
PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD = 0xFF; 

PORTC.0=1;
devices=w1_search(0xf0,rom_code);   //ищим датчики, и записуем их адреса в масив
lcd_puts(buffer_1);
delay_ms(500);          
while(devices>0)                 //бесконечный цикл, если датчик подключон
     {   
         if(!PINC.0){           //Если нажата кнопка
             i++; 
                           //Увиличиваем переменную "i" на 1
             delay_ms(300);     //Ждём 300мс для "анти-дребезга"
         }
         if(i>=devices){        //Если "i" больше или равно найденым датчикам
         i=0;                   //тогда "i" равно нулю
         }
         temp=ds18b20_temperature(&rom_code[i][0]);  //читаем температуру с выбранного датчика
         if (temp>1000){               //если датчик выдаёт больше 1000
            temp=4096-temp;            //отнимаем от данных 4096
            temp=-temp;                //и ставим знак "минус"

         }
     if (temp<0)                          // устанавливаем нижней порог
        PORTD.0 = 1;    
        else PORTD.0=0;
      if (temp>1)                         // установим верхний порог
         PORTD.1=1;
      else PORTD.1=0;


         sprintf(lcd_buffer,"TEMP=%i.%u\xdfC",temp,temp%1);    //записуемв масив для экрана температуру и всё такое

        lcd_clear();                  //чистим дисплей перед выводом


         lcd_puts(lcd_buffer);         //выводим масив на LCD
         delay_ms(500);                //ждём 500мс
     };
}

как в данный код прикрутить функцию - которая по нажатию кнопки не только переключалась на другой датчик(у меня их 3) но и добавляла надпись на дисплей например дом улица и тд - что бы знать с какова датчика идет сигнал

всем заранее спасибо))

Link to comment
Share on other sites

if (temp>1000){ //если датчик выдаёт больше 1000

temp=4096-temp; //отнимаем от данных 4096

temp=-temp; //и ставим знак "минус"

}

Довольно странная конструкция, но если работает - пусть будет.

Возможно подойдет чтото вроде

********************************
   PORTD.1=1;
      else PORTD.1=0;

// sprintf(lcd_buffer,"TEMP=%i.%u\xdfC",temp,temp%1);    //записуемв масив для экрана температуру и всё такое
// это перенесем пониже, здесь - закомментируем
        lcd_clear();                  //чистим дисплей перед выводом
////// добавленный код /////////////////////////////////////////////
        if(i==0)sprintf(lcd_buffer,"1-U JLAT4UK");else
        if(i==1)sprintf(lcd_buffer,"2-U JLAT4UK");else
        if(i==2)sprintf(lcd_buffer,"3-U JLAT4UK");else sprintf(lcd_buffer,"OWU6KA B nporpamme");
// в lcd_buffer пишем номер датчика. Я контроллерного Си и дисплея
//         не знаю, может он и поддерживает русский шрифт,
//         поэтому написал транслитом. При желании можно переделать на англ. язык
        lcd_puts(lcd_buffer);
// аналогично вашей процедуре, вывод информации о номере датчика. Дальше, наверное, нужен перевод строки
//         но с этим вы разберетесь быстрее чем я.
        sprintf(lcd_buffer,"TEMP=%i.%u\xdfC",temp,temp%1);
// Вывод значения датчика (см выше) перенесем сюда
////////////////////////////////////////////////////////////////////
         lcd_puts(lcd_buffer);         //выводим масив на LCD
         delay_ms(500);                //ждём 500мс
     };
}

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

<stdio.h> это стандартная Си библиотека ввода вывода.

Объяви переменную char: char ukaz;

Вставь после else PORTD.1=0;

if ( i == 0 ) ukaz = 'U'; - улица

if ( i == 1 ) ukaz = 'D'; - дом

if ( i == 2 ) ukaz = 'S'; - температура внутри системника компа или что надо.

Строку sprintf(lcd_buffer,"TEMP=%i.%u\xdfC",temp,temp%1); надо изменить на

sprintf(lcd_buffer,"%c TEMP=%i.%u\xdfC",ukaz,temp,temp%1);

Если хочешь можешь оформить эти условия в функцию, также вместо if можно использовать switch case, короче вот так.

Будьте проще и люди к вам потянутся.

Link to comment
Share on other sites

Новые серии ИП NSP-1600/3200 от MEAN WELL. Мощные и управляемые!

Компания MEAN WELL разработала две новые серии мощных управляемых источников питания – NSP-1600 и NSP-3200 с высотой 1U и выходной мощностью 1600 и 3200 Вт, соответственно. В новых сериях NSP-1600/ NSP-3200 реализована интеллектуальная система управления вентилятором (термостатическое управление). Также за счет исключения нескольких функций, избыточных для некоторых приложений, снижена стоимость этих изделий по сравнению с предшественниками. 

Подробнее>>

Спасибо большое так и думал , просто не знал повлияют ли еще доп дейсвие над переменной на точность результата

а конструкция минус 4096 - это только для DS18B20 - по даташиту иначе он минус не показывает

экспериментирую дальше))))))

Link to comment
Share on other sites

Алкалиновый ХИТ для устройств интернета вещей в ДКО "Электронщик"

В отличие от промышленных систем IoT, с работой в жестких климатических условиях, в бытовом сегменте ситуация другая. Поэтому проблема выбора питания для IoT-устройств бытового сегмента, может быть решена в пользу обычных алкалиновых (щелочных) батареек. Нужно выбрать такие элементы тока, которые будут стоить дешевле, а работать дольше. Рассмотрим критерии выбора и выгодный вариант батареек для домашних IoT-устройств.

Подробнее>> 

30.03.2023 Приглашаем на вебинар «Обзор литиевых батареек и аккумуляторов FANSO и EVE. Особенности выбора батареек для импульсных устройств»

Компания Компэл приглашает на вебинар, посвященный литиевым батарейкам и аккумуляторам (химическим источникам тока, ХИТ) производства FANSO и EVE.
Мы расскажем об особенностях выбора литиевых батареек для устройств, работающих в импульсном режиме и в широком диапазоне температур, рассмотрим типы батареек, наиболее оптимальных для этих устройств, разберем, на что следует обращать основное внимание, чтобы избежать распространенных проблем. В программу мероприятия также включены вопросы о пассивации/депассивации, влиянии условий эксплуатации на основные параметры батареек, продлении срока службы батарейки и многое другое.

Подробнее>>

А сравнение переменной с числом ее (переменную) не меняет.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

А какой-нибудь язык программирования знаете? Вроде ни в одном сравнение не меняет аргумент.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

По Си рекомендую книгу "Программирование на языке Си" автор Стефан Кочан, третье издание, отличная книга, всё разжёвано до предела, читается очень легко все примеры разобраны прям по строчно, где, что и как.

Будьте проще и люди к вам потянутся.

Link to comment
Share on other sites

Лучше с Асма, логика работы его программы более приближена к логике кристалла. Начинать точно лучше с него, тогда Си покажется безобидным и не страшным :-) Правда где найти книжку по началам асма - не знаю.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

К сожалению в электронке у меня её нету, но советую лучше купить бумажный вариант, у меня она всегда на столе лежит как справочник, потому что нет, нет да и забуду, что-нибудь, стоит в инете 250 рублей: http://www.home-relax.ru/good_book_1070766_3036814.html

Лучше с Асма, логика работы его программы более приближена к логике кристалла. Начинать точно лучше с него, тогда Си покажется безобидным и не страшным :-) Правда где найти книжку по началам асма - не знаю.

Кому как, мне так асм ни разу не понадобился всё время как-то Си хватало да я и не разрабатываю промышленные устройства. А когда говорят, что надо учить асм, чтобы понять устройство мк, то я могу то же сказать и про Си, устройство мк знать просто необходимо в любом случае. К тому же бытует мнение, что авр затачивались прямо таки под Си, не утверждаю т.к самому мне по душе ближе как-то PIC-и :rolleyes:, но в инете часто видел такие мнения.

Будьте проще и люди к вам потянутся.

Link to comment
Share on other sites

авр затачивались прямо таки под Си
А это как? Ведь как работает Си? Он преобразует входной код (в несколько этапов) в ассемблерный, а потом этот ассемблерный - в машинный, в чем можно убедиться, посмотрев файлы, которые он выдает (в AVR studio - *.lss). Но, конечно, отличия там не столь существенны, особенно для простых применений (светодиодиками там поморгать или еще что), как для "компьютрного" Си.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

Сам найдеш?

Надеюсь это не мне а flair007'y? :)

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

Всем конечно спасибо - но чет я не понял про этот флуд я спросил про конкретную книгу! И на знание этого форума могу поспорить со многими завсягдатами )) так - как сам им являюсь

и с языком я определился - сейчас на конкретных примерах углубляюсь в мат. часть!

Link to comment
Share on other sites

Тыц

Тыц

Тыц

Вот пара книг по AVR контроллерам которые завалялись у меня. Время хранения ограничено так что если надо будет - в личку.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Link to comment
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Ну типа я не понял, кого имел в виду этот падонаГ.  Вот что на самом деле обеспечили тебе 86 (вроде столько же ты заявлял для жуковика 2011?) дБ глубины ООС. Конечно, если бы было 186дБ глубины, то было бы ого-го!!! Но, судя по результатам стендовых измерений, то ли децибелы "кукурузные" получаются, как киловатты РМРО, то ли кто-то был в учителях у Троцкого, то ли пар ушёл в свисток...   НУИЧО ?  - Складно поёшь, фраерок! (с) А в результате - павлинья жопа, которая не так уж и сильно отличается от куриной.
    • Тут ещё светомузыка по типу анализатора спектра сделана. Только фильтры не очень, соседните частоты будут пролазить. @tifaso, не обратил раньше внимания, зачем переменные резисторы зашунтированы постоянными?
    • И я такой же.Когда вижу "металлистов",дербанящих старую технику,до мордобоя почти доходит.
    • @Ulis , а вы же говорили, что отдельно датчик тоже можете смоделировать. Выход у него правда между базами подключается, но вывести на график это выходное напряжение можно же? Оно должно меняться с крутизной 4-5 мВ на градус (2 х 2 мВ/град), крутизна изменения и начальная величина напряжения должны регулироваться, и с ростом температуры напряжение должно уменьшаться. Потом если этот настроенный датчик вставить в схему, ток покоя должен стоять как влитой при изменении температуры.
    • Никогда не забуду свою первую плату унч. Нашёл на дороге, по ней проехала машина. Долго искал модель - нашёл. Аккорд - 201. Пока схему нашёл, потом разобрался с монтажной платой. Схема и плата, немножко разные вещи. Далее с деталями. Что и как обозначается, как выглядит. Да вы сами знаете. Почти год это заняло. Зато я его знал - наверное как разработчик. И для начала совсем даже нормально.  Я сторонник восстановления старой техники. Там и руками потрогать можно и всё готовое. Тот же конструктор. И унч обязательно попадаются. Главное изучить, из чего состоит и как работает аппарат. Это настоящая школа, и главное - из готовых конструкторских решений. Это не "само тыком" заниматься. Второй аппарат "Гиала - 404". Та же история, нашёл разобранный корпус с отрезанными проводами. Уже сложнее. Радиоканал появился. Но хоть модель уже была. Повезло - сделал.      Стимул на долго обеспечен. Почему повезло ? Потому что мало знал, а сделать получилось. Это как пряник в награду...
×
×
  • Create New...