- •Содержание
- •1 Техническая часть. Разработка электронных часов 4
- •Введение
- •1 Техническая часть. Разработка электронных часов
- •1.1 Аналитический обзор по теме
- •1.2 Анализ поставленной задачи
- •1.3 Описание структурной схемы электронных часов
- •1.4 Описание функциональной схемы электронных часов
- •1.5 Выбор элементной базы
- •1.6 Описание принципиальной схемы автоматического терморегулятора тёплого пола
- •1.7 Инструкция пользователю
- •1.8 Листинг программы
- •2 Экономическая часть
- •2.1 Расчёт затрат на проектирование и внедрение продукта
- •2.2 Расчёт капитальных вложений на проектирование
- •2.3 Затраты на материалы
- •2.4 Расчёт эксплуатационных затрат
- •2.5 Расчёт на проектирование и внедрение продукта
- •3Охрана труда.Техника безопасности при разработке электроненых устройств
- •3.1 Потенциально опасные и вредные производственные факторы
- •3.2 Описание рабочего места программиста
- •Меры предосторожности при работе с паяльником
- •3.4 Микроклимат
- •3.5 Освещенность
- •Электромагнитное излучение
- •3.7 Обеспечение электробезопасности
- •Заключение
- •Список использованной литературы
1.7 Инструкция пользователю
Электронные часы, должны оповещать пользователя о настоящем времени и обеспечивать визуальное оповещение реального времени.
В связи с этим для обеспечения корректной работы макета необходимо выполнить ряд предписаний:
1. Работа часов должна производиться в помещениях, отвечающих следующим требованиям:
- с низким уровнем запылённости;
- с низким уровнем влажности воздуха.
2. Электрическое питание модели датчика осуществляется постоянным напряжением величиной от 5 до 12В.
3. Устройство работает в режиме с постоянным питанием от электросети.
4. Настройка часов производиться автоматически с помощью задаваемой программы.
5. При работе с моделью необходимо аккуратное и бережное отношение и недопущение его механических повреждений.
1.8 Листинг программы
#include<LiquidCrystal.h>
#include <OneWire.h>
OneWireds(10); // Подключаем датчик к 8 цифровому пину
LiquidCrystallcd(12, 11, 5, 4, 3, 2); //Подключаем LCD
void setup(void)
{
pinMode(A0,INPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);// Связь с ПК
lcd.begin(16, 2); //16 знаков, 2 строки
lcd.print("Temperature:"); //Печатаем верхнюю строку LCD
}
void loop(void)
{
bytei;
bytetype_s;
byte data[12];
byteaddr[8];
floatcelsius, fahrenheit;
inttemp_r;
// Ищем адрес датчика
if ( !ds.search(addr))
{
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(250);
return;
}
// Проверяем не было ли помех при передаче
if (OneWire::crc8(addr, 7) != addr[7])
{
Serial.println("CRC is not valid!");
return;
}
Serial.println();
// Определяем серию датчика
switch (addr[0])
{
case 0x10:
Serial.println(" Chip = DS18S20");
type_s = 1;
break;
case 0x28:
Serial.println(" Chip = DS18B20");
type_s = 0;
break;
case 0x22:
Serial.println(" Chip = DS1822");
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
ds.reset();
ds.select(addr); // Выбираем адрес
ds.write(0x44, 1); // Производим замер, в режиме паразитного питания
delay(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE); // Считываем оперативную память датчика
for( i = 0; i < 9; i++)
{
data[i] = ds.read(); // Заполняем массив считанными данными
} // Данные о температуре содержатся в первых двух байтах, переведем их в одно значение и преобразуем в шестнадцатиразрядное число
int16_t raw = (data[1] << 8) | data[0]; // Переводим температуру в шкалы по Цельсию и Фаренгейту
if (type_s)
{
raw = raw << 3;
}
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
} else {
bytecfg = (data[4] & 0x60);
if (cfg == 0x00)
raw = raw << 3;
else if (cfg == 0x20)
raw = raw << 2;
else if (cfg == 0x40) \
raw = raw << 1;
}
celsius = (float)raw / 16.0;
temp_r = analogRead(A0) / 51+20;
if (celsius>temp_r)
{
digitalWrite(7, HIGH);
}
else
{
digitalWrite(7, LOW);
}
Serial.print("Temp = "); //ПишемвПКинформацию
Serial.print(celsius);
Serial.print(" C, ");
Serial.print(fahrenheit);
Serial.println(" Т");
lcd.setCursor(0, 1); //Пишем в LCD на 2 строке
lcd.print("C:");
lcd.setCursor(2, 1);
lcd.print(celsius); //Цельсии
lcd.setCursor(8, 1);
lcd.print("Т:");
lcd.setCursor(10, 1);
lcd.print(temp_r); // Задаваемаятемпература
}
