Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исправленный / Пояснительная записка_МПС.doc
Скачиваний:
24
Добавлен:
29.02.2016
Размер:
2.89 Mб
Скачать

Заключение

В результате выполнения курсовой работы было разработано микропроцессорное устройство измерения мгновенного значения температуры с датчика температуры типа терморезистор pt100-2. Устройство может также измерять среднесуточное значение температуры, а если значения превысит номинальное или будит слишком мало, то на экран ССИ выводится предупреждение в виде (erro).

Данное устройство было собрано и проверено в программе позволяющей моделировать микропроцессорные системы Proteus(ISIS7).

Данное устройство и .hexфайл к нему можете скачать с моей страницеvk.com.

Список использованной литературы

  1. www.atmel.com/literature

  2. www.kazus.ru›datasheet-download/517468

  3. www.kazus.ru/datasheet-download/90021d

  4. www.intel.com/design/mcs51/docs_mcs51.htm

  5. Москатов Е. А. Справочник по полупроводниковым приборам. — М.: Журнал "Радио", 2005.- 208 с.: ил.

  6. Справочная книга радиолюбителя-конструктора. Под редакцией Н.И. Честякова. – М.: «Радио и связь»,1990. - 617с.: ил.

  7. «Техническое описание стенда учебного СУ-51», ООО «ОпТех», 2003г.

Приложение А

sfr P0=0x80;

sfr P1=0x90;

sfr P2=0xA0;

sfr P3=0xB0;

sfr IE=0xA8;

sfr TMOD=0x89;

sfr TCON=0x88;

sfr TH0=0x8C;

sfr TL0=0x8A;

sfr IP=0xB8;

sbit P00=P0^0;

sbit P01=P0^1;

sbit P02=P0^2;

sbit P03=P0^3;

sbit P04=P0^4;

sbit P05=P0^5;

sbit P06=P0^6;

sbit P07=P0^7;

sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

sbit P14=P1^4;

sbit P15=P1^5;

sbit P16=P1^6;

sbit P17=P1^7;

sbit P20=P2^0;

sbit P21=P2^1;

sbit P22=P2^2;

sbit P23=P2^3;

sbit P24=P2^4;

sbit P25=P2^5;

sbit P26=P2^6;

sbit P27=P2^7;

sbit P30=P3^0;

sbit P31=P3^1;

sbit P32=P3^2;

sbit P33=P3^3;

sbit P34=P3^4;

sbit P35=P3^5;

sbit P36=P3^6;

sbit P37=P3^7;

unsigned char data q;

unsigned char data w;

unsigned short data res;

unsigned char data res1;

unsigned char data res2;

unsigned char data res3,middle;

unsigned int swittch;

unsigned char data inbuf[3];

unsigned char data charteibl[12]= {192,249,164,176,153,146,130,248,128,144,255,191};

unsigned char catodnum,znak,znak2;

unsigned short code BufferACP[52]={0x8CB,0x8C1,0x8B7,0x8AD,0x8A4,0x89A,0x891,0x887,0x87E,0x875,0x86B,

0x862,0x859,0x850,0x848,0x83F,0x836,0x82E,0x825,0x81D,0x808,0x80C,0x804,0x7FB,0x7F3,0x7EB,0x7E3,0x7DB,

0x7D4,0x7CC,0x7C4,0x7BC,0x7B5,0x7AD,0x7A6,0x79F,0x797,0x790,0x789,0x781,0x77A,0x773,0x76C,0x765,0x75F,0x758,0x751,0x74A,0x744,0x73D,0x736};

unsigned char code BufferTemper[52]={50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,

8,6,4,2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50};

unsigned int char nado;

int i;

void delay10mkc (void)

{

unsigned char x;

x=10;

while(--x!=0);

}

void delay1mkc (void)

{

unsigned char x;

x=1;

while(--x!=0);

}

void vivod3(void)

{

P1=206;

P31=1;

delay10mkc();

P31=0;

P1=206;

P36=1;

delay10mkc();

P36=0;

P1=192;

P37=1;

delay10mkc();

P37=0;

P1=132;

P30=1;

delay10mkc();

P30=0;

}

void acp (void)

{

P20=0;

P21=0;

P22=1;

P20=1;

P21=1;

P22=0;

delay10mkc();

P20=0;

P22=1;

delay1mkc();

q=P0;

w=P2;

P20=1;

P22=0;

res=w;

res=res&240;

res=res<<4;

res=res+q;

}

void temperatura(void)

{

unsigned char count1;

count1=0;

for( i=0; i<=50;i++)

{

count1++;

if((res<=BufferACP[i])&&(res>BufferACP[i+1]))

{

nado=BufferTemper[i];

catodnum=count1;

}

if((res>=0x8CB)||(res<0x736))

{

vivod3();

}

}

}

void ssi(unsigned char xxx)

{

unsigned char digit;

unsigned char d;

digit=xxx/100;

d=digit;

if(d==0){inbuf[1]=255;}

else{inbuf[1]=charteibl[digit];}

digit=(xxx-d*100)/10;

if((d==0)&&(digit==0)){inbuf[2]=255;}

else {inbuf[2]=charteibl[digit];}

digit=xxx-d*100-digit*10;

inbuf[3]=charteibl[digit];

inbuf[0]=191;

}

void vivod() interrupt 3 using 3

{unsigned short c1;

unsigned short c2;

TH0=252;

TL0=23;

c1=0;

++c1;

if(c1==60000)

{c1=0;

++c2;

if (c2==720)

{

c2=0;

res3=res2+0;

res2=nado+0;

znak2=znak+0;

znak=catodnum+0;

}

}

}

void vivod1(void)

{

P1=inbuf[1];

P31=1;

delay10mkc();

P31=0;

P1=inbuf[2];

P36=1;

delay10mkc();

P36=0;

P1=inbuf[3];

P37=1;

delay10mkc();

P37=0;

}

void vivod2(void)

{

P1=inbuf[1];

P31=1;

delay10mkc();

P31=0;

P1=inbuf[2];

P36=1;

delay10mkc();

P36=0;

P1=inbuf[3];

P37=1;

delay10mkc();

P37=0;

P1=inbuf[0];

P30=1;

delay10mkc();

P30=0;

}

void srednesutochnoe(void)

{

if((znak>=25)&&(znak2>=25))

{

middle=(res3+res2)/2;

ssi(middle);

vivod1();

}

if((znak<25)&&(znak2>=25))

{

middle=(res3-res2)/2;

if(res3>=res2)

{

ssi(middle);

vivod1();

}

else

{

ssi(middle);

vivod2();

}

}

if((znak>=25)&&(znak2<25))

{

middle=(-res3+res2)/2;

if(res3>res2)

{

ssi(middle);

vivod2();

}

else

{

ssi(middle);

vivod1();

}

}

if((znak<25)&&(znak2<25))

{

middle=(res3+res2)/2;

ssi(middle);

vivod2();

}

}

void int1() interrupt 0

{

swittch=5;

P32=1;

}

void int3() interrupt 2 using 3

{

swittch=0;

P33=1;

}

void main (void)

{

unsigned char one;

one=1;

P31=0;

P30=0;

P36=0;

P37=0;

TH0=0;

TL0=0;

IE=255;

TMOD=1;

TCON=16;

IP=5;

while(1)

{

acp();

temperatura();

if(swittch==0)

{

if(catodnum>=25)

{ ssi(nado);

vivod1();

}

else

{

ssi(nado);

vivod2();

}

}

else

{

srednesutochnoe();

ssi(middle);

vivod1();

}

}

}

Соседние файлы в папке Исправленный