Суббота, 20.04.2024, 13:47
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052

или пополни нашу SMS копилку
SMS.копилка

Ссылки

 Каталог статей
Главная » Статьи » Учимся работать с AVR

Подарок IT-шнику. Бинарный термометр+
Здравствуйте уважаемые коллеги. Давно я не писал статьей и вот решил Вас удивить.
Вот решил сделать подарок моему другу компьютерщику, и по стал выбор что подарить, хотелось что-то и полезное и оригинальное.
Долго думая, искал в инете какие-то интересные схемки, оригинальные реализации различных устройств.
Натолкнулся я на схему бинарных часов. Идея интересная. Но такое уже есть. Немного подумав, я решил сделать бинарный комнатный термометр. Диапазон до 63*.  

Главная идея заключается в следующем: в двоичном(бинарном) коде показывать температуру, а на другой панели светодиодов показывать количество опросов датчика от 0 до 15 раз.   




Код программы:

#include <tiny2313.h>
#include <delay.h>

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x12 ;PORTD
   .equ __w1_bit=6
#endasm
#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds18b20.h>

// Declare your global variables here
int temp;
void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In 
// State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTB=0x00;
DDRB=0xFF;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=P State4=P State3=P State2=P State1=P State0=P 
//PORTD=0x3F;
//DDRD=0x00;
PORTD=0x00;
DDRD=0xFF;


// 1 Wire Bus initialization
w1_init();

while (1)
      {
      temp=ds18b20_temperature(0);  //читаем температуру                      
      
             delay_ms(500);

             if (temp<65)
             PORTB= temp;

             if (PORTD<15)
             {
             PORTD++;
             } else
             PORTD=0;     
      };
}

Несколько фото устройства:

    


Категория: Учимся работать с AVR | Добавил: my-avr (20.03.2010)
Просмотров: 13440 | Комментарии: 5 | Рейтинг: 5.0/1 |
Всего комментариев: 4
4 Семафор  
0
Примерно тоже самое что делал и я))
Только я двоичные часы сделал

3 SpSpider  
0
хех)) недавно часы сделал бинарные, только пришлось на каждую цифру выводить кодировку.. с матрицей такое не прошло((
выводы портов сократил)

2 Negor  
1
Зачотная идея с оформлением

1 GT  
1
smile прикольная идея))

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright My-AVR © 2024
Наша кнопка
У нас появилась кнопка, код кнопки:

Лаборатория самоделок на микроконтроллерах AVR

Форма входа
Наш опрос
Какой МК вы используете?
Всего ответов: 3228
Статистика/Друзья
CY-PR.com



Онлайн всего: 1
Гостей: 1
Пользователей: 0

РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум Сайт по радиоэлектронике. У нас все просто и интересно… ARV Reserch: Электроника — просто, полезно, увлекательно. Электронные устройства и программные средства для радиолюбителей и профессионалов, только авторские разработки, плагиата нет! Разработки на заказ. AVR projects Создание электронных роботов своими руками Схемы и программы на AVR http://ur5yfv.ucoz.ua/BANNER.gif Блог начинающего эмбеддера. Дай волю паяльнику! Самоделки на all-make.ru Принципиальные схемы Модулі автозапуску бензогенератора та системи АВР, електромонтажні роботи
Хостинг от uCoz