Технический форум
Вернуться   Технический форум > Электроника, самоделки и техника > Форум по электронике > Микропроцессоры


Ответ
 
Опции темы Опции просмотра
Старый 23.06.2012, 13:06   #51 (permalink)
Ильмир
МАГистр
 
Аватар для Ильмир
 
Регистрация: 11.07.2010
Сообщений: 2,196
Записей в дневнике: 9
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 2 сообщениях
Репутация: 2976
По умолчанию

Цитата:
Сообщение от News Посмотреть сообщение
Предлагаете цифровой датчик?
конечно, можно использовать DS18B20

Цитата:
Сообщение от News Посмотреть сообщение
Если выводов хватит..
для этого можно поставить регистр сдвига, например 74HC595. и будет тебе сколько ты хочешь ножек)))
Ильмир вне форума   Ответить с цитированием
Старый 23.06.2012, 13:42   #52 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Цитата:
Сообщение от Ильмир Посмотреть сообщение
можно использовать DS18B20
Поставлю!
Цитата:
Сообщение от Ильмир Посмотреть сообщение
для этого можно поставить регистр сдвига, например 74HC595. и будет тебе сколько ты хочешь ножек)))
Я лампу настроения делать небуду.
News вне форума   Ответить с цитированием
Старый 23.06.2012, 16:13   #53 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Блин люди.
Как ногу входом сделать?
Цитата:
DDRA=0b00000111;
if (PORTA.4=1) {Minute1++;};
Не работает!
News вне форума   Ответить с цитированием
Старый 23.06.2012, 20:35   #54 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Почьти........
Цитата:
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute1;
char Minute2;
char Timemin;
char Hour1;
char Hour2;
char Hournil;
//Переменая управления Сеундным Светодиодом.
char SecLed;

void main(void)
{
DDRA=0b00000111;
DDRC=0xFF;
DDRD=0xFF;
DDRB=0xFF;

while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute1++; Second=0;};
if (Minute1==10) {Minute2++; Minute1=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute2==6) {Hour1++; Minute1=0; Minute2=0;};
if (Hour1==10) {Hour2++; Hour1=0;};
if (Hour2==2) {Hournil=Hour1+Hour2;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hournil==6) {Hour1=0; Hour2=0; Hournil=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};

if (Hour2==0) {PORTA.2=0; PORTA.1=0;};
if (Hour2==1) {PORTA.2=1; PORTA.1=0;};
if (Hour2==2) {PORTA.1=1; PORTA.2=0;};
if (Hour1==0) {PORTC=0b01111111; PORTC=0b01000000;};
if (Hour1==1) {PORTC=0b01111111; PORTC=0b11111001;};
if (Hour1==2) {PORTC=0b01111111; PORTC=0b00100100;};
if (Hour1==3) {PORTC=0b01111111; PORTC=0b00110000;};
if (Hour1==4) {PORTC=0b01111111; PORTC=0b00011001;};
if (Hour1==5) {PORTC=0b01111111; PORTC=0b00010010;};
if (Hour1==6) {PORTC=0b01111111; PORTC=0b00000010;};
if (Hour1==7) {PORTC=0b01111111; PORTC=0b01111000;};
if (Hour1==8) {PORTC=0b01111111; PORTC=0b00000000;};
if (Hour1==9) {PORTC=0b01111111; PORTC=0b00010000;};


switch (Minute2)
{
case 0:
PORTD=0b01111111; PORTD=0b01000000;
break;
case 1:
PORTD=0b01111111; PORTD=0b11111001;
break;
case 2:
PORTD=0b01111111; PORTD=0b00100100;
break;
case 3:
PORTD=0b01111111; PORTD=0b00110000;
break;
case 4:
PORTD=0b01111111; PORTD=0b00011001;
break;
case 5:
PORTD=0b01111111; PORTD=0b00010010;
break;
};
switch (Minute1)
{
case 0:
PORTB=0b01111111; PORTB=0b01000000;
break;
case 1:
PORTB=0b01111111; PORTB=0b11111001;
break;
case 2:
PORTB=0b01111111; PORTB=0b00100100;
break;
case 3:
PORTB=0b01111111; PORTB=0b00110000;
break;
case 4:
PORTB=0b01111111; PORTB=0b00011001;
break;
case 5:
PORTB=0b01111111; PORTB=0b00010010;
break;
case 6:
PORTB=0b01111111; PORTB=0b00000010;
break;
case 7:
PORTB=0b01111111; PORTB=0b01111000;
break;
case 8:
PORTB=0b01111111; PORTB=0b00000000;
break;
case 9:
PORTB=0b01111111; PORTB=0b00010000;
break;
};
if (PINA.3==1) {Timemin++;};
if (Timemin==12) {Timemin=0; Minute1++;};
};
}
News вне форума   Ответить с цитированием
Старый 23.06.2012, 21:26   #55 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Цитата:
ВКЛЮЧЕНИЕ DS18B20
DS18B20 может быть включен внешней поставкой на булавке VDD, или это может работать в “энергии паразита”
способ, который позволяет DS18B20 функционировать без местной внешней поставки. Энергия паразита - очень
полезный для заявлений, которые требуют отдаленного температурного ощущения или это - очень вынужденное место. Иллюстрация
1 шоу схема контроля энергии паразита DS18B20’s, которая "украла" энергию от автобуса с 1 проводом через
способная к глубокой вытяжке булавка, когда автобус высок. Украденные власти платы DS18B20, в то время как автобус высок, и некоторые
из платы хранится на конденсаторе энергии паразита (CPP), чтобы обеспечить энергию, когда автобус низок.
Когда DS18B20 используется в способе энергии паразита, булавка VDD должна быть связана, чтобы основать.
И попробуй сдесь, разберись, что имелось в виду.
News вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 23.06.2012, 23:09   #56 (permalink)
Ильмир
МАГистр
 
Аватар для Ильмир
 
Регистрация: 11.07.2010
Сообщений: 2,196
Записей в дневнике: 9
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 2 сообщениях
Репутация: 2976
По умолчанию

Данный датчик можно подключить по 2х проводной или 3х проводной схеме. И там описывается особенность подключения по 2х проводной схеме.
Вот и все
Ильмир вне форума   Ответить с цитированием
Старый 24.06.2012, 12:33   #57 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Цитата:
Сообщение от Ильмир Посмотреть сообщение
Данный датчик можно подключить по 2х проводной или 3х проводной схеме. И там описывается особенность подключения по 2х проводной схеме.
Вот и все
Это я понял.
Энергия паразита немного пугает
News вне форума   Ответить с цитированием
Старый 24.06.2012, 22:33   #58 (permalink)
Ильмир
МАГистр
 
Аватар для Ильмир
 
Регистрация: 11.07.2010
Сообщений: 2,196
Записей в дневнике: 9
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 2 сообщениях
Репутация: 2976
По умолчанию

ну это наверное промт так перевел, в следующий раз выбирай тематику техническую
Ильмир вне форума   Ответить с цитированием
Старый 25.06.2012, 00:08   #59 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Цитата:
Сообщение от Ильмир Посмотреть сообщение
ну это наверное промт так перевел,
Он самый...
Нашол переведенный датащит
Цифровые датчики температуры от Dallas Semiconductor
News вне форума   Ответить с цитированием
Старый 03.07.2012, 21:23   #60 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Цитата:
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute1;
char Minute2;
char Delay;
char Hour1;
char Hour2;
char Hournil;
char Vibor;
char SecLed;
char Delay2;
char AlarmMinute1;
char AlarmMinute2;
char AlarmHour1;
char AlarmHour2;
char AlarmPreSetON;
char Vibor2;
char Delay3;
void main(void)
{
DDRA=0b00000111;
DDRC=0xFF;
DDRD=0xFF;
DDRB=0xFF;

while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute1++; Second=0;};
if (Minute1==10) {Minute2++; Minute1=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute2==6) {Hour1++; Minute1=0; Minute2=0;};
if (Hour1==10) {Hour2++; Hour1=0;};
if (Hour2==2) {Hournil=Hour1+Hour2;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hournil==6) {Hour1=0; Hour2=0; Hournil=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};

if (PINA.5==1) {AlarmPreSetON=1;}
if (AlarmPreSetON==0)
{
if (Hour2==0) {PORTA.2=0; PORTA.1=0;};
if (Hour2==1) {PORTA.2=1; PORTA.1=0;};
if (Hour2==2) {PORTA.1=1; PORTA.2=0;};
if (Hour1==0) {PORTC=0b01111111; PORTC=0b01000000;};
if (Hour1==1) {PORTC=0b01111111; PORTC=0b11111001;};
if (Hour1==2) {PORTC=0b01111111; PORTC=0b00100100;};
if (Hour1==3) {PORTC=0b01111111; PORTC=0b00110000;};
if (Hour1==4) {PORTC=0b01111111; PORTC=0b00011001;};
if (Hour1==5) {PORTC=0b01111111; PORTC=0b00010010;};
if (Hour1==6) {PORTC=0b01111111; PORTC=0b00000010;};
if (Hour1==7) {PORTC=0b01111111; PORTC=0b01111000;};
if (Hour1==8) {PORTC=0b01111111; PORTC=0b00000000;};
if (Hour1==9) {PORTC=0b01111111; PORTC=0b00010000;};
switch (Minute2)
{
case 0:
PORTD=0b01111111; PORTD=0b01000000;
break;
case 1:
PORTD=0b01111111; PORTD=0b11111001;
break;
case 2:
PORTD=0b01111111; PORTD=0b00100100;
break;
case 3:
PORTD=0b01111111; PORTD=0b00110000;
break;
case 4:
PORTD=0b01111111; PORTD=0b00011001;
break;
case 5:
PORTD=0b01111111; PORTD=0b00010010;
break;
};
switch (Minute1)
{
case 0:
PORTB=0b01111111; PORTB=0b01000000;
break;
case 1:
PORTB=0b01111111; PORTB=0b11111001;
break;
case 2:
PORTB=0b01111111; PORTB=0b00100100;
break;
case 3:
PORTB=0b01111111; PORTB=0b00110000;
break;
case 4:
PORTB=0b01111111; PORTB=0b00011001;
break;
case 5:
PORTB=0b01111111; PORTB=0b00010010;
break;
case 6:
PORTB=0b01111111; PORTB=0b00000010;
break;
case 7:
PORTB=0b01111111; PORTB=0b01111000;
break;
case 8:
PORTB=0b01111111; PORTB=0b00000000;
break;
case 9:
PORTB=0b01111111; PORTB=0b00010000;
break;
};
if (PINA.3==1) {Delay2++;};
if (Delay2==11) {Delay2=0; Vibor++;};
switch (Vibor)
{
case 0:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Minute1++;};
break;
case 1:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Minute2++;};
break;
case 2:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Hour1++;};
break;
case 3:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Hour2++;};
if (Hour2==3) {Hour2=0;};
break;
case 4:
Vibor=0;
break;
};
};
if (AlarmPreSetON==1)
{
PORTB=0b01000000;
PORTD=0b01000000;
PORTC=0b01000000;
PORTA.1=0;
PORTA.2=0;

if (PINA.3==1) {Delay3++;};
if (Delay3==11) {Delay3=0; Vibor2++;};
switch (Vibor2)
{
case 0:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmMinute1++;};
break;
case 1:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmMinute2++;};
break;
case 2:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmHour1++;};
break;
case 3:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmHour2++;};
if (Hour2==3) {Hour2=0;};
break;
case 4:
Vibor2=0;
break;
};
};
};
}
Запарился чюток, доделываю будильник.
News вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:54.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.