Автор: Пользователь скрыл имя, 24 Августа 2011 в 14:02, курсовая работа
Разрабатываемая МП система должна осуществлять контроль концентрации газа и обеспечивать:
индикацию значений концентрации и режима работы системы
сигнализацию превышения предельно допустимого значения концентрации
автоматическое отключение (блокировку) подачи газа при превышении концентрации в течение заданного времени
сброс блокировки и подачу газа по команде с клавиатуры при допустимом значении концентрации
– предельное значение концентрации;
ПОСТАНОВКА ЗАДАЧИ И ИСХОДНЫЕ ДАННЫЕ…………………….….4
Описание назначения и устройства микропроцессорной системы контроля………………………………………………………………………..5
Описание функциональной схемы микропроцессорной системы контроля………………………………………………………………………..6
Расчет статической характеристики канала измерения……………………..8
Разработка алгоритма функционирования микропроцессорной системы контроля………………………………………………………………………...9
Разработка программы для микропроцессорной системы контроля……...14
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ……………………………….17
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)|(
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;
}
while (regim==2) {wrc(0xCB); printf("рабочий режим "); C();KL=1; time=0; P1=0x00;
}
while (regim==3) {wrc(0xCB); printf("блокировка "); KL=0;
if (C()>C0) {P1=0x0C;}
else {P1=0x04;}
if ((klav()==0xAB)&(C()<C0)){
}
}}
СПИСОК
ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Информация о работе Разработка микропроцессорной системы контроля