Дипломная работа: Разработка устройства автоматического регулирования света на микроконтроллере
17."LEDs
move from indication to illumination" // EDN, 8/2/2001
http://www.edn.com/contents/images/149134.pdf
18.
Л. Н. Кечиев, Е. Д. Пожидаев "Защита электронных средств от воздействия
статического электричества" – М.: ИД "Технологии", 2005.
19.
Жидецкий В.Ц., Джигирей В.С., Мельников А.В. Основы охраны труда: Учебник –
Львов, Афиша, 2008 – 351с.
20.
Денисенко Г.Ф. Охрана труда: Учебн.пособие – М., Высшая школа, 1989 – 319с.
21.
Самгин Э.Б. Освещение рабочих мест. – М.: МИРЭА, 1989. – 186с.
22.
Справочная книга для проектирования электрического освещения. / Под ред. Г.Б.
Кнорринга. – Л.: Энергия, 1976.
23.
Борьба с шумом на производстве: Справочник / Е.Я. Юдин, Л.А. Борисов;
Под
общ. ред. Е.Я. Юдина – М.: Машиностроение, 1985. – 400с., ил.
24.
Зинченко В.П. Основы эргономики. – М.: МГУ, 1979. – 179с.
25.Методичні
вказівки до виконання дипломної роботи для учнів спеціальності «Оператор
комп’ютерного набору; оператор комп’ютерної верстки»/ Упоряд.: Д.О. Дяченко, К.О.
Ізмалкова, О.Г. Меркулова. – Сєверодонецьк: СВПУ, 2007. – 40 с.
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ
А
/*********************************************
Date
: 05.03.2010
Управление
лампой накаливания.
*********************************************/
#include "90s2313.h"
#include "delay.h"
#define red PORTD.4
#define green PORTD.5
#define number_of_impuls 63 //64 - max
#define udervanie 1563
#define ofa_min 0x80
#define ofa_max 0xE8
#define kn_plus PIND.0;
#define kn_minus PIND.6;
unsigned char s_reg;//хранилище
SREG
unsigned char ofa;//отсечка
фазы
-> ofa_min <= ofa <= ofa_max
unsigned
char mode;//режим работы прграммы обработки ДУ.
bit
infra, infra_old;//текущее, предыдущее значение сигнала с ПДУ
bit
second_half_period;//для двойного прохода по прерыванию timer1.
bit ir_plus, ir_minus, ir_plus_old, ir_minus_old;//нажатие
на
ПДУ
"+", "-"
bit
closed;//идет обработка полученного сигнала ПДУ; не нужно прерываться по
OVF_timer0
unsigned char num;//
bit on_new, on_old, off_new, off_old;//биты
состояния
кнопок.
bit
enable_count;
bit
error;//определение идентичности посылки
bit
ir_p_otp, ir_m_otp;//отпускание кнопки ДУ
unsigned int
timer_ofa;//таймер
задержки изменения ofa;
eeprom unsigned char pusto[1];
eeprom unsigned char plus[number_of_impuls];
eeprom unsigned char minus[number_of_impuls];
unsigned char serial[number_of_impuls];
flash unsigned char copyright[]="AMAR
T0260";
unsigned int
tic;//отсчет
секунд
unsigned int clock;//отсчет
времени
bit second;//флаг
секунды
bit in_home;//флаг
"хозяин
дома"
#include "infrared.c"
void write(eeprom char *kuda)
{
for(num=0; num<number_of_impuls; num++)
kuda[num]=serial[num];
mode=7;
num=0;
serial[0]=0;
}
void verify(unsigned char temp)
if((serial[num]<(temp-temp/4))
void infrared(void)
{
static unsigned int zader;
static unsigned char prop;
unsigned char temp;
if(zader)//ждем
окончания приема сигнала
{
if(infra_old==1 && infra==1)
{
if(--zader)return;
ir_minus=ir_plus=0;
return;
}
zader=udervanie;
return;
}
if(!prop)
{
if(!infra) goto rc5_fr;
return;
}
if(prop < 7)
{
if(infra_old)
{
if(infra) goto rc5_count;
}
else
{
if(!infra)
{
rc5_count: if(++serial[0] > 250)
prop=0;
return;
}
}
if(serial[0] > 0x14) ++prop;
rc5_fr: ++prop;
serial[0]=0;
return;
}
if(infra_old != infra)
{
++num;
serial[num]=0;
return;
}
//infra_old == infra
if(num<number_of_impuls &&
serial[num]<255) ++serial[num];
else//проверка
полученной последовательности
{
closed=1;
prop=0;
switch(mode)
{
case 5:
write(plus);
break;
case 6:
write(minus);
break;
default:
error=0;
for(num=0;
num<number_of_impuls-1; num++)
{
temp=plus[num];
if(temp==0xFF)
break;
verify(temp);
}
if(!error)
{
ir_plus=1;
ir_minus=0;
}
error=0;
for(num=0;
num<number_of_impuls-1; num++)
{
temp=minus[num];
if(temp==0xFF)
break;
verify(temp);
}
if(!error)
{
ir_plus=0;
ir_minus=1;
}
if(ir_plus || ir_minus)
zader=udervanie;
//очистка
массива
и
переменной
num
num=number_of_impuls;
while(num)
serial[--num]=0;
break;
}
}
}
#include "keyboard.c"
//==========================================================
//обработка
кнопок.
//==========================================================
void keyboard(void)
{
#define press_time 10
static
unsigned int counter;//счетчик для снижения частоты вызова опроса клавиатуры.
static
unsigned char press_plus;//счетчик последовательных нажатий на кнопку
"+"
static
unsigned char press_minus;//счетчик последовательных нажатий на кнопку
"-"
static
unsigned char press_key;//отсчет лимита времени на вход в mode=5 или 6.
static
unsigned int zader;//счетчик времени нажатия на кнопку.
if(++counter<2000) return;
//обнуляем
счетчик
counter=0;
//опрашиваем
кнопки.
on_old=on_new;
off_old=off_new;
on_new=kn_plus;
off_new=kn_minus;
//удерживаем
"+" и "-"
if(!on_old && !off_old && !on_new
&& !off_new)
{
if(zader > press_time*3)
{
mode=0;//хозяин
дома
in_home=1;
clock=0;
}
else zader++;
return;
}
//удерживаем
"-"
if(on_old && !off_old && on_new
&& !off_new || (ir_minus && !in_home))
{
if(zader>=press_time)
{
mode=1;//медленно
снижать
яркость
in_home=0;
}
else
zader++;
return;
}
//удерживаем
"+"
if(!on_old && off_old && !on_new
&& off_new || (ir_plus && !in_home))
{
if(zader>=press_time)
{
mode=2;//медленно
повышать
яркость
in_home=0;
}
else zader++;
return;
}
//отпускаем
"-"
if(on_old && !off_old && on_new
&& off_new && (mode!=5) && (mode!=6) || ir_m_otp)
{
ir_m_otp=0;
if(zader<press_time)
{
mode=3;//быстро
выключить
in_home=0;
ofa=ofa
- (ofa - ofa_min)/4;
}
return;
}
//отпускаем
"+"
if(!on_old && off_old && on_new
&& off_new && (mode!=5) && (mode!=6) || ir_p_otp)
{
ir_p_otp=0;
if(zader<press_time)
{
mode=4;//быстро
включить
in_home=0;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 |