Разработка микропроцессорной системы контроля

Автор: Пользователь скрыл имя, 24 Августа 2011 в 14:02, курсовая работа

Описание работы

Разрабатываемая МП система должна осуществлять контроль концентрации газа и обеспечивать:

индикацию значений концентрации и режима работы системы
сигнализацию превышения предельно допустимого значения концентрации
автоматическое отключение (блокировку) подачи газа при превышении концентрации в течение заданного времени
сброс блокировки и подачу газа по команде с клавиатуры при допустимом значении концентрации
– предельное значение концентрации;

Содержание

ПОСТАНОВКА ЗАДАЧИ И ИСХОДНЫЕ ДАННЫЕ…………………….….4

Описание назначения и устройства микропроцессорной системы контроля………………………………………………………………………..5
Описание функциональной схемы микропроцессорной системы контроля………………………………………………………………………..6
Расчет статической характеристики канала измерения……………………..8
Разработка алгоритма функционирования микропроцессорной системы контроля………………………………………………………………………...9
Разработка программы для микропроцессорной системы контроля……...14
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ……………………………….17

Работа содержит 1 файл

Домашняя_работа (19).docx

— 118.57 Кб (Скачать)

     

     4 Разработка алгоритма  функционирования  микропроцессорной  системы контроля

5 РАЗРАБОТКА ПРОГРАММЫ ДЛЯ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КОНТРОЛЯ 
 

/*------------------------------------------------------------------------------

HELLO.C 

Copyright 1995-1999 Keil Software, Inc.

------------------------------------------------------------------------------*/ 

#include <REG552.H>

#include <stdio1.h>                /* prototype declarations for I/O functions */

#define ADCS 0x08

#define ADCI 0x10 

unsigned char xdata wr_ir _at_ 0x7ff0 ;

unsigned char xdata rd_ir _at_ 0x7ff1 ;

unsigned char xdata wr_dr _at_ 0x7ff2 ;

unsigned char xdata rd_dr _at_ 0x7ff3 ;

unsigned char scan;

unsigned char key;

char chan=0x07;

float Ux,Cx, C0=0.7;

int nx, time=0, regim=1;

bit KL=0; 
 
 

void wrc (unsigned char ir)  {

unsigned char bf;

do {bf=rd_ir&0x80;}

      while (bf!=0);

wr_ir =ir; } 

unsigned char  rdc (void)  {

unsigned char bf;

do {bf=rd_ir&0x80;}

      while (bf!=0);

return rd_ir;} 

void wrd (unsigned char dr)  {

unsigned char bf;

do {bf=rd_ir&0x80;}

      while (bf!=0);

wr_dr =dr; } 

unsigned char  rdd (void)  {

unsigned char bf;

do {bf=rd_ir&0x80;}

      while (bf!=0);

return rd_dr;}   

// вывод одного символа

void putchar(unsigned char cm) {

if((cm & 0xC0) == 0xC0)

      cm = tcod[cm & 0x3F];

wrd (cm);} 

// подпрограмма  вывода строки по-русски

void puts ( const unsigned char   *str ) {

  unsigned char i = 0;

  while(str[i] != 0) {putchar(str[i]); i++;}

} 
 

/*------------------------------------------------

The main C function.  Program execution starts

here after stack initialization.

------------------------------------------------*/

unsigned char klav(void){

scan=0xFE;

while (scan!=0xF7){

P4=scan;

key=P4;

if ((key&0x78)!=0x78)

{return key;}       

scan=scan<<1;

scan++;

}return 0;} 

float C(void){

chan=0x07;

ADCON=(ADCON&0xF8)|(chan&0x07);

while (ADCON&0x08);

if (ADCON&0x10){nx=(ADCH<<2)|(ADCON>>6);

Ux=2.5*nx/1024;

Cx=Ux*10.63/(23.34+2.67*Ux);

if (Cx>1) Cx=1;

if (Cx<0) Cx=0;

wrc(0xC0);

printf("Cx=%02.3f",Cx);

ADCON=ADCON&0xEF;}

else

ADCON=ADCON|0x08;

return Cx;}

void INT_1(void) interrupt 1 {time++; TH0=0x20;TL0=0xF2;} 

/*------------------------------------------------

The main C function.  Program execution starts

here after stack initialization.

------------------------------------------------*/

void main (void) {

// инициализация HD44780 

wrc (0x38); //2 строки, 5*8 точек,

wrc (0x06); // вывод  слева-направо

wrc (0x01); // очистка

wrc (0x0c); // экран  вкл., курсор выкл.

IEN0=0x82;

TMOD=0x09;

TR0=1; 

while (1) {/*wrc (0x01);*/ wrc(0x80); printf("измерение концентрации:"); 

    while (regim==1) {wrc(0xCB); printf("ожидание "); KL=0; P1=0x00;

                                if (klav()==0xF5){regim=2;}

                             } 

while (regim==2) {wrc(0xCB); printf("рабочий режим "); C();KL=1;  time=0; P1=0x00;

                                   if (klav()==0xF6) {regim=1;}

                                   while ((C()>C0)&(regim==2)) {P1=0x08;

                                                   wrc(0xCB);printf("cигнализация");

                                                           if (time>200) {regim=3;}

                                                               }

                             } 
 

while (regim==3) {wrc(0xCB); printf("блокировка   "); KL=0;

                           if (C()>C0) {P1=0x0C;}

                               else {P1=0x04;}

                           if ((klav()==0xAB)&(C()<C0)){regim=2;}

                } 

}}

                                        
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

       

СПИСОК  ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 

  1. Архитектура микроконтроллеров семейства MCS-51: конспект лекций/ Бояринов А.Е., Дьяков И.А. Тамбов: Изд-во Тамб. гос. тех. ун-та, 2005. 64с.
  2. Микропроцессоры в системах контроля: методические указания/ Бояринов А.Е. Тамбов: Изд-во Тамб. гос. тех. ун-та, 2005. 44с.

Информация о работе Разработка микропроцессорной системы контроля