Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Тотгда ответьте мне на вопрос - что значит "не показывает" ? :) Совсем ?
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

elf писал(а):я уже все глаза проглядел :))
С такими коментами, и остальным три сек все глаза проглядеть :))
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Отвечаю:не показывает совсем-это когда совсем не показывает :))
А если серьезно то на выводах PORTD постоянно 0 вольт , при этом вывода PORTB меняют свое значения с частотой 125 кГц,тоесть можно предположить что динамическая индикация работает :)) -это хотели прочитать? :))
а забыл кода я делаю так:
sot = 1 ;
des = 2 ;
edi= 3 ;
то на семисигментнике тоже показывает "123" :))
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

shads писал(а):
elf писал(а):я уже все глаза проглядел :))
С такими коментами, и остальным три сек все глаза проглядеть :))

Полностью согласен с Вами.Но я не знаю почему так получилось,может отдельным файлом надо выложить? :))
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

уже добавил.надеюсь это поможет :))
Вложения
мой термометр.c
(3.29 КБ) 414 скачиваний
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

elf писал(а):не знаю почему так получилось
Открой папку с проектом, потом в блокноте открой Сишный файл, оттуда скопируй нужный фрагмент и его вставляй в сообщение..... (эт так на будующее.....)
Последний раз редактировалось shads Вт окт 02, 2012 23:38:56, всего редактировалось 1 раз.
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

shads писал(а):Открой папку с проектом, потом в блокноте открой Сишный файл, оттуда скопируй нужный фрагмент и его вставляй в сообщение.....

я так и делал
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

elf писал(а):я так и делал
А у меня обычно такой эффект, если я копирую прямо из окна AVR Studio.....
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

О....... получилось :))




Код: Выделить всё

#include <mega8.h>               //библиотека ввода\вывода
#include <delay.h>               //библиотека задержки
#asm                             //сообщаем куда подключен датчик
        .equ __w1_port=0x18; PORTC
        .equ __w1_bit=7
#endasm                 
/* #asm                             //сообщаем куда подключён экран
    .equ __lcd_port=0x12
#endasm
#include <lcd.h>                 //библиотека для LCD*/ 
#include <1wire.h>               //библиотека работы с 1Wire
#include <ds18b20.h>             //библиотека для работы с датчиком ds18b20
#include <stdio.h>               //ненаю что за библиотека, но без неё неполучается
char lcd_buffer[33];             //масив с данными для экрана
int temp; //переменная для хранения температуры
unsigned char devices;         //переменная в которой количество присоеденённых датчиков
unsigned char cifra [] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7d,0x07,0x7F,0x6F};// Массив кодов для формирования
char sot;//переменная сотен .....................
char des;//переменная десятков...................
char edi;//переменная единиц.................... 



             
////////////////ИНДИКАЦИЯ////////////////////////////////
int q;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 
q++;//увеличиваем счётчик динамической индикации 
 switch(q) //Перебор отображаемого сейчас разряда
       {case 1:PORTB=0b11101111;PORTD &= 0x80; PORTD|=cifra [edi];//вывод первой цифры
break;
       case 2:PORTB=0b11011111;PORTD &= 0x80;PORTD|=cifra [des]; //вывод второй цифры
break;
       case 3:PORTB=0b10111111;PORTD &= 0x80;PORTD|=cifra [sot];//вывод третьей цифры
q=0; //Когда подсвечен последний 3-й разряд счётчик обнуляем

break;}

if (q>=4)q=0;
}      
///////////////////////////////////////////////////////////////////
   



///////////////////МЕРЯЕМ ТЕМПЕРАТУРУ//////////////////////////////
void temperature()
{
if(devices>0)                 //бесконечный цикл, если датчик подключон
      {
          temp=ds18b20_temperature(0);  //читаем температуру 
          if (temp>1000){               //если датчик выдаёт больше 1000
             temp=4096-temp;            //отнимаем от данных 4096
             temp=-temp;                //и ставим знак "минус"
          }
   
 
  sot=(temp/100); 
 des =(temp%100)/10;
 edi=(temp %100)%10;
        delay_ms(500); 
          }
       }
////////////////////////////////////////////////////////////////////////       
       
       
       
void main(void)                 
{
PORTB=0b00000000;
DDRB =0b01110000;
PORTC=0x00;
DDRC=0x00;
PORTD=0xff;
DDRD=0xff;
TCCR0=0x03;// Clock value: 125,000 kHz
TCNT0=0x00;
TIMSK=0x01; // Timer(s)/Counter(s) Interrupt(s) initialization                 
/* lcd_init(16);                    //инициилизация LCD, и говорим что он на 16 символов*/ 
devices=w1_init();               //ищим датчики

// Global enable interrupts
#asm("sei")       
     
   
   
   
     
    while(1)
    { temperature();
     
        /*    sprintf(lcd_buffer,"%u - %u - %u",edi,des,sot);    //записуемв масив для экрана температуру и всё такое
          lcd_clear();                //чистим дисплей перед выводом
          lcd_puts(lcd_buffer);        //выводим масив на LCD
          delay_ms(500);*/
 
    }
   
     
  }
Последний раз редактировалось Аlex Вт окт 02, 2012 23:43:11, всего редактировалось 1 раз.
Причина: тег CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

elf писал(а):Отвечаю:не показывает совсем-это когда совсем не показывает :))
А если серьезно то на выводах PORTD постоянно 0 вольт , при этом вывода PORTB меняют свое значения с частотой 125 кГц,тоесть можно предположить что динамическая индикация работает :)) -это хотели прочитать? :))
а забыл кода я делаю так:
sot = 1 ;
des = 2 ;
edi= 3 ;
то на семисигментнике тоже показывает "123" :))
Вот с этого и надо было начинать свой вопрос :))

125 Кгц - не многовато ? Это уже какая-то сверхдинамическая индикация получается :)))
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Аlex писал(а):
elf писал(а):Отвечаю:не показывает совсем-это когда совсем не показывает :))
А если серьезно то на выводах PORTD постоянно 0 вольт , при этом вывода PORTB меняют свое значения с частотой 125 кГц,тоесть можно предположить что динамическая индикация работает :)) -это хотели прочитать? :))
а забыл кода я делаю так:
sot = 1 ;
des = 2 ;
edi= 3 ;
то на семисигментнике тоже показывает "123" :))
Вот с этого и надо было начинать свой вопрос :))

125 Кгц - не многовато ? Это уже какая-то сверхдинамическая индикация получается :)))

хорошо сделаю меньше но тут причина не в индикации, а в чем я пока понять не могу
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Именно в ней и причина, поверьте :)
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Аlex писал(а):Именно в ней и причина, поверьте :)

а почемк тогда "123" показывает-что-то я не догоняю :))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Потому, что когда Вы показываете 123, Вы не работаете с шиной датчика. А код разделения на еденицы/десятки/сотни у Вас только тогда выполняется, когда датчиков больше нуля :)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Это если Ваши функции для работы с шиной не запрещают прерывания.
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Аlex писал(а):Это если Ваши функции для работы с шиной не запрещают прерывания.

Аlex, что мне надо написать сюда
TCCR0=0x03;
TCNT0=0x00;
????
я знаю ВЫ знаете :))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Честно, не знаю :))
Я только с ПИКами работаю.
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Аlex писал(а):Честно, не знаю :))
Я только с ПИКами работаю.

блин обидно-будем искать :))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

А чё искать то ? Даташит откройте и почитайте как таймер настраивается. Если речь идёт про таймер, как я понял...
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: Всё по DS18(B/S)20.

Сообщение elf »

Ну да про таймер, а частота индикации какая должна быть?
Ответить

Вернуться в «Периферия»