Автор работы: Пользователь скрыл имя, 03 Мая 2012 в 00:02, курсовая работа
В данном курсовом проекте поставлена задача разработки системы противопожарной защиты помещения, в которой микропроцессор будет выполнять координирующую роль: он будет получать сигналы с датчиков и определять поведение противодымной системы в целом в зависимости от данных, пришедших с датчиков. Одним из плюсов данной системы является отличная масштабируемость, которая позволяет применять подобную схему как для небольших офисов, так и для этажа здания или всего здания в целом путем внесения лишь небольших изменений. Внедрение разрабатываемой системы противодымной защиты позволит существенно повысить пожарную безопасность простым, дешевым и эффективным способом.
Введение…………………………………….……………………………..............5
1 Формулировка системных требований к МПС……................................6
2 Системно-алгоритмическое проектирование…………………...............7
3 Разработка аппаратного обеспечения микропроцессорной системы..…………………………………..................................................8
3.1 Разработка и описание структурной схемы….........................................8
3.2 Разработка и описание функциональной схемы………………………..8
3.3 Разработка и описание принципиальной схемы………........................10
4 Разработка программного обеспечения микропроцессорной системы.....………….................................................................................12
4.1 Выбор и обоснование выбора среды программирования…………….12
4.2 Разработка алгоритма программы……………………………………...12
Заключение...............................................................…..........................................14
Список использованных источников…………………………………………...15
Приложение А Структурная схема МПС………………....................................16
Приложение Б Функциональная схема МПС.....................................................17
Приложение В Принципиальная схема МПС.....................................................18
Приложение Г Перечень элементов, использованных в схеме……………….19
Приложение Д Схема алгоритма программы.....................................................20
Приложение Е Листинг программы....................................................................21
Список
использованных источников
1 Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. Бродин В.Б., Шагурин М.И.М.:ЭКОМ, 1999.
2 Андреев Д.В. Программирование микроконтроллеров MCS-51: Учебное пособие. - Ульяновск: УлГТУ, 2000.
3 М. Предко. Руководство по микроконтроллерам. Том I. Москва: Постмаркет, 2001.
4 Интегральные микросхемы: Справ. / Б. В. Тарабрин, Л. Ф. Лукин, Ю. Н. Смирнов и др.; Под ред. Б. В. Тарабрина. – М.: Радио и связь, 1985.
5 Бурькова
Е.В. Микропроцессорные системы. ГОУ ОГУ.
2005.
Структурная
схема МПС
Б
В
Г
Листинг
программы
#include "ADuC812.h"
#include "max.h"
#include "kb.h"
#include "lcd.h"
#include "i2c.h"
int etazN,i,j,curEtaz,Prepat;
int VvodEtaz()
{
char etaz;
int tmp;
LCD_Type("Etazh:");
etaz='0';
while(etaz=='0')
{
if(ScanKBOnce(&etaz))
{
etazN=etaz-48;
LCD_Putch(etazN+48);
etaz='0';
while(etaz=='0')
{
if(ScanKBOnce(&etaz))
{
if(etaz=='A'){break;} else
{
tmp=etaz-48;
etazN=(etazN*10)+(etaz-48);
LCD_Putch(tmp+48);
};
};
};
};
};
return etazN;
}
void HodLifta()
{
int j,i;
if(curEtaz<etazN)
{
for (i=curEtaz;i<=etazN;i++)
{
for (j=0; j<=10000; j++)
{
WriteMax(SV,i);
Delay();
}
}
};
if(curEtaz>etazN)
{
for (i=curEtaz;i>=etazN;i--)
{
for (j=0; j<=10000; j++)
{
WriteMax(SV,i);
Delay();
}
}
};
curEtaz=etazN;
}
// 5 sec na zakrytie dverei i proverka prepatstviya:
void ZakrDveri()
{
int j,i;
char Bc;
Bc='0';
for (i=1;i<=5;i++)
{
for (j=0; j<=1000; j++)
{
if(ScanKBOnce(&Bc))
{
if(Bc=='B')
{
Prepat=1;
goto id3;
}; // B - datchik prepatstviya
};
Delay();
};
LCD_GotoXY(15,1);
LCD_Putch(i+48);
}
id3: i=1;
}
void main()
{
char Ac,etaz;
int tmp;
TMOD=0x20;
TCON=0x40;
InitLCD();
LCD_GotoXY(0,1);
LCD_Type("SvetVyk");
LCD_GotoXY(7,1);
LCD_Type("DveriZakr");
curEtaz=1; // tekushii etaz
Prepat=0; // prepyatsvii net
id: Ac='0';
while(Ac=='0')
{
if(ScanKBOnce(&Ac))
{
if(Ac=='A')
{
etazN=VvodEtaz();
LCD_GotoXY(0,0); // "etaz" propal
LCD_Type(" ");
LCD_GotoXY(0,1);
LCD_Type("SvetVkl");
HodLifta();
id2: LCD_GotoXY(7,1);
LCD_Type("DveriOtkr");
// zdem 20 sec:
for(i=0;i<=10000;i++)
{
if(ScanKBOnce(&Ac)) // nazhatie etaza vnutri
{
if(Ac=='A')
{
etazN=VvodEtaz();
LCD_GotoXY(7,1);
LCD_Type("DveriZakr");
ZakrDveri(); // medlenno zakryvaem dveri
if (Prepat==1)
{
LCD_GotoXY(0,1);
LCD_Type("SvetVkl");
Prepat=0;
goto id2;
};
LCD_GotoXY(0,0);
LCD_Type(" ");
HodLifta();
goto id2;
};
};
Delay();
};
LCD_GotoXY(0,1);
LCD_Type("SvetVyk");
LCD_GotoXY(7,1);
LCD_Type("DveriZakr");
ZakrDveri(); // medlenno zakryvaem dveri
if (Prepat==1)
{
LCD_GotoXY(0,1);
LCD_Type("SvetVkl");
Prepat=0;
goto id2;
};
LCD_GotoXY(0,0);
LCD_Type(" ");
LCD_GotoXY(0,0);
// zdem sled vyzova:
goto id;
}
}
}
while(1);
}