Разработка микропроцессорной системы управления лифтом
Курсовая работа, 31 Марта 2013, автор: пользователь скрыл имя
Описание работы
На сегодняшний день лифт стал неотъемлемой частью нашей жизни. В современных многоэтажных зданиях их число доходят до трех. Различают грузовые, пассажирские, пожарные и другие типы лифтов. Но несмотря на их функциональное различие, принцип работы и система управления во многом схожи.
Далеко не каждый человек задумывается, что скрывается за простым алгоритмом нажатия кнопки и прибытием на нужный этаж.
Файлы: 1 файл
МПС курсач мой.doc
— 1.22 Мб (Скачать файл)Также выделим и функции, которые возлагаются на программу, загружаемую в микроконтроллер:
- Отображение времени;
- Отображение температуры и влажности;
- Проверка отклонении температуры и влажности на 5%;
- Проверка отклонения температуры до 200;
- Включение динамика;
- Зажигание светодиода;
- Выработка управляющих сигналов для коррекции температуры и влажности.
4.2 Составление программы
После того, как были определены все требования, предъявляемые требования к программному средству, и выполняемые им функции, можно приступить к проектированию схемы алгоритма программы. Конечно схема работы программного средства была приведена в предыдущих пунктах, но она была укрупнённая. А наша задача сейчас составить более детальную схему алгоритма программы.
Схема алгоритма программы для устройства измерения и анализа веса представлена на рисунке 4.2.1.
Рисунок 4.2.1 – Схема алгоритма программы для МПС
4.3 Выбор среды программирования
Программное средство было решено реализовывать с помощью инструментальных средств фирмы Keil Software. Поскольку данный пакет было достаточно детально изучен на лабораторных занятиях. Также следует отметить, что представленная фирма поддерживает все стадии разработки приложения: создание исходного файла на С или Ассемблере, трансляцию, исправление ошибок, линкование объектных файлов, тестирование приложения. В пакете Keil Software содержатся практически все необходимые средства разработки для микроконтроллера 8051 /9/. Компилятор С51 поддерживает стандарт ANSI С, разработан специально для 8051 семейства и позволяет создавать программы на языке С (который является наиболее освоенным разработчиком данного курсового проекта), сохраняя эффективность и скорость оптимизации Ассемблера. Расширения, включенные в инструментальные средства Keil, обеспечивают полный доступ к ресурсам микроконтроллеров 8051.
Заключение
В ходе выполнения данного курсового проекта было разработано устройство, осуществляющее контроль температуры и влажности в инкубаторе. Основной же идеей этого проектирования являлось получение начальных навыков проектирования микропроцессорной системы, которое заключается в поэтапной реализации разрабатываемого устройства.
В процессе разработки были решены следующие задачи:
- Определили функции, реализуемые аппаратной и программной частями устройства;
- Выбрали микроконтроллер;
- Подобрали дополнительные устройства и элементы, необходимые для разработки устройства;
- Создали структурную схему;
- Создали на основе структурной схемы функциональную;
- Создали на основе функциональной схемы принципиальную электрическую;
- Разработали программное обеспечение для микропроцессорной системы.
Логическим завершением
данного курсового
Список использованной литературы
- Угрюмов Е. П. «Цифровая схемотехника». – СПб.: БХВ-Петербург, 2004. -528 с.: ил.
- Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. Бродин В.Б., Шагурин М.И.М.:ЭКОМ, 1999.
- Нефедов А. В., Нефедова М. Ю. «Зарубежные интегральные микросхемы»: изд. Энергоатомиздат, 1995 г.
- Андреев Д.В. Программирование микроконтроллеров MCS-51: Учебное пособие. - Ульяновск: УлГТУ, 2000.
- Справочник по цифровой схемотехнике / В.И. Зубчук, В. П. Сигорский, А. Н. Шкурко. – К. Техника, 1990. – 448 с.
- М. Предко. Руководство по микроконтроллерам. Том I. Москва: Постмаркет, 2001.
- Интегральные микросхемы: Справ. / Б. В. Тарабрин, Л. Ф. Лукин, Ю. Н. Смирнов и др.; Под ред. Б. В. Тарабрина. – М.: Радио и связь, 1985.
- «Микропроцессоры и микропроцессорные комплекты интегральных схем», под редакцией Шахнова В. А.: изд. Радио и связь, 1988 г.
- Бурькова Е.В. Микропроцессорные системы. ГОУ ОГУ. 2005.
- Новаченко И. В., Петухов В. М., Блудов И. П., Юровский А. В. «Микросхемы для бытовой радиоаппаратуры»: изд. Радио и связь, 1989 г.
Приложение А
(обязательное)
Функциональная схема МПС
Приложение Б
(обязательное)
Принципиальная электрическая схема МПС
Приложение В
(обязательное)
Перечень элементов
Приложение Г
(обязательное)
Листинг программы
#include "ADuC812.h"
#include "max.h"
#include "KB.h"
#include "i2c.h"
#include "lcd.h"
#include "rtc.h"
void Buzz(void)
{
unsigned char i;
unsigned short dur;
for(dur = 0; dur < 500; dur++)
{
WriteMax(ENA,0x24);
for(i=0; i < 2; i++)continue;
WriteMax(ENA,0x20);
for(i=0; i < 2; i++)continue;
}
}
extern int sprintf (char *, const char *, ...);
extern int abs (int val);
int T,VL,DV,kol,Tmin,Tmax;
TIME Opros,iztemp;
TIME vrem;
char outstr[16];
unsigned int ch;
int i;
unsigned char diap;
void FROM_TM0(void) interrupt 1
{
TH0=0xDC;
TL0=0x31;
kol++;
if (kol==100)
{
kol=0;
TR0=0;
GetTime(&vrem);
sprintf (outstr,"%d:%d:%d ", (int)vrem.hour, (int)vrem.min, (int)vrem.sec);
LCD_GotoXY(0,0);
LCD_Type(&outstr);
if (((vrem.min*60+vrem.sec)-(
{
LCD_GotoXY(0,1);
sprintf (outstr,"Temp %d Vlag %d", (int)T, (int)VL);
LCD_Type(&outstr);
Opros=vrem;
ch=0;
if ((VL<=47)||(VL>=52)) {ch=ch | 1;}
if ((T<=Tmin)||(T>=Tmax)) {ch= ch | 2;}
if (T<=20) {Buzz();}
if (DV==1) {Buzz(); DV=0;}
WriteMax(SV,ch);
}
if ((vrem.min-iztemp.min)==diap)
{
iztemp=vrem;
if (diap==1) {diap=2;Tmin=36;Tmax=40;T=38;}
else {diap=1;T=28; Tmin=26; Tmax=30;}
}
TR0=1;
}
}
void SetVector(unsigned char xdata *Address, void *Vector)
{
unsigned short xdata *TmpVector;
*Address = 0x02;
TmpVector = (unsigned short xdata *) (Address+1);
*TmpVector = (unsigned short) Vector;
}
void main(void)
{
unsigned char s;
T=38;
Tmin=36;
Tmax=40;
diap=2;
VL=50;
DV=0;
s=0;
kol=0;
InitLCD();
SetVector(0x200B,(void *) FROM_TM0);
TMOD=1;
ET0=1;
EA=1;
TH0=0xDC;
TL0=0x31;
GetTime(&Opros);
iztemp=Opros;
TR0=1;
while (1)
{
while (ScanKBOnce(&s)==0) {}
if (s=='1') {T-=5;}
if (s=='2') {T+=5;}
if (s=='4') {VL-=5;}
if (s=='5') {VL+=5;}
if (s=='0') {DV=1;}
for (i=0;i<20000;i++)
{Delay();}
}
}