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

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

Ссылки
This feature is for Premium users only!
This feature is for Premium users only! This feature is for Premium users only!
 Каталог статей
Главная » Статьи » Учимся работать с AVR

Термометр к ПК через COM порт (продолжение, усовершенствованный вариант)
Привет, вот мои знакомые задали мне вопрос:"Вот ты исользуешь такой дорогой микроконтроллер, чтобы вывести температуру на комп, ведь в Инете есть схемы, которые можно реализовать с помощю 2 шт. КТ315". Да...Тут трудно с ними не согласиться. И я подумал, а не зделать ли так, чтобы можно было управльять паралельно еще и нагрузками. Ответ - МОЖНО!

Итак, приступим!

Запустим наш Code Vision AVR, создадим новый проект с помощью Wizard'a, сначала выбираем чип и частоту

ATmega8 и частота 8 МГц. Дальше выбираем порт С как выход.

Так на порту С у нас будет подключена нагрузка, дальше выбираем куда будем подключать датчик DS18B20.

И вот мы подошли к главному моменту - выбору и настройке USART, СОМ порта.

Все, мы настроили начальный код.

Дальше переписываем код на такой, или лучше удаляем все, что там было и вставляем вот это:

#include <mega8.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>
// DS1820 Temperature Sensor functions
#include <ds18b20.h>
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
void main(void)
{
char prin;
int temp;
unsigned char devices;

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

// Port C initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0x7F;

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

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// 1 Wire Bus initialization
devices=w1_init();
printf("Start Device\n\r");
while (1)
{
prin=getchar();
switch (prin)
{
case 49:
{
PORTC=getchar()-48;
break;
}
case 50:
{
temp=ds18b20_temperature(0); //читаем температуру
if (temp>1000)
{ //если датчик выдаёт больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
printf("Temp=%d\n\r",temp);
}

};
}
}

Компилируем, запускаем Proteus и рисуем следующую схемку и НЕ ЗАБУДЬТЕ В ТЕРМИНАЛЕ ВЫСТАВИТЬ СКОРОСТЬ ПОРТА 19200

Выбираем в микроконтроллере, где у нас .hex файл, дальше выставляем частоту 8 МГц.

Очень рекомендую не пользоваться фюзами, а ставить кварц и конденсаторы, во избежании неправильной работы.</SPAN></SPAN>
</P>

Инструкция:

1) чтобы управлять нагрузкой на порту С, нужно при включеном терминале на клавиатуре нажать 1 и еще клавишу, например 2, тогда загориться 2 светодиод, только не подумайте, что если нажать 3, тогда загориться только 3тий, нет, загориться 1 и 2, почему так, спросите вы. Отвечаю, дело в том что мы отсылаем на утройство ASCII код и работаем уже дальше с ним, тоесть в двоичной системе число 3 будет иметь вид 11000000. Так, но число 3 в ASCII означает 51, да совершенно верно, в программе мы используем функцию PORTC=getchar()-48; где от полученого кода мы отнимаем 48 и результат заносим на порт С.

2) Чтобы узнать температуру нужно на клавиатуре нажать кнопку 2 и через секунду мы получим данные состояния термодатчика. 

Вот пожалуй и все,все вопросы на форуме. Да, и еще с этого момента я буду выкладывать все исходные файлы, прошивки и проекты Proteus'a в раздел "Файлы".

Категория: Учимся работать с AVR | Добавил: my-avr (13.11.2008)
Просмотров: 12806 | Комментарии: 8 | Рейтинг: 4.0/2 |
Всего комментариев: 8
8 SpSpider  
0
не нужен датчик! ребята, есть ADC в МК, используйте его!
+ ------
| |
(резистор) ----- (терморезистор)----МК
| |
- -----

7 Сергей Пауков  
0
если кто знает что нужно сделать, пожалуйста напишите!! ICQ: 362598851 анти-спам:2 помогите добрым словом человеку:)))

6 Сергей Пауков  
0
Добрый день!! очень нужна ваша помощь!! Спросить не у кого.
Собрал схему, МК передает данные на компьютер, а обратно не слышит!! самое интересное, что в протусе работает, а в жизни - нет.
т.е. микроконтролллер не принимает данные с компьюьтера, он ждет getchar()
и еще, к примеру мне нужно сделать так, что бы МК работал как хост, а не как клиент, к примеру если я хочу автомобильный компьютер подключить к микроконтроллеру, то что мне нужно для этого сделать?
внимательно читаю даташит, там про 1-Wire написано.
Использую МК Atmega8. в даташите написано, что для приема нужно обнулить UDR, я не знаю как это сделать.

5 dimamukhin  
0
Собрал по схеме конструкцию , скопировал текст - скомпилировал , запускаю - терминал ничего не показывает cry

Что может быть ?


4 IROBOT  
0
у меня есть исходник с выводом на usart,но мне наджо переделать на выход жки.
первый вопрос был от меня тока я ещё не зарегился тогда

3 IROBOT  
0
Извиняюсь что долго не отвечал ,хочу приёмник keeloq сделать с выводом принятого кода на жки 1602.

2 my-avr  
0
А что за датчик? можно о датчике поподробнее, какие данные с него поступают.

1 DIVER SANT  
0
Скажите пожалуйста вот тут пример с датчика температурного ,а мне вот например с радиомодуля нужно данные снять, как это можно сделать?

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

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

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



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

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