新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的兩點(diǎn)間溫度控制

基于單片機(jī)的兩點(diǎn)間溫度控制

作者: 時(shí)間:2011-09-28 來(lái)源:網(wǎng)絡(luò) 收藏
5.C語(yǔ)言源程序

本文引用地址:http://m.butianyuan.cn/article/172468.htm

  #include AT89X52.H>

  unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,

  0xef,0xdf,0xbf,0x7f};

  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

  0x6d,0x7d,0x07,0x7f,0x6f,0x00};

  unsigned char dispbuf[8]={10,10,10,10,10,10,0,0};

  unsigned char dispcount;

  unsigned char getdata;

  unsigned int temp;

  unsigned char i;

  sbit ST=P3^0;

  sbit OE=P3^1;

  sbit EOC=P3^2;

  sbit CLK=P3^3;

  sbit LED1=P3^6;

  sbit LED2=P3^7;

  sbit SPK=P3^5;

  bit lowflag;

  bit highflag;

  unsigned int cnta;

  unsigned int cntb;

  bit alarmflag;

  void main(void)

  {

  ST=0;

  OE=0;

  TMOD=0x12;

  TH0=0x216;

  TL0=0x216;

  TH1=(65536-500)/256;

  TL1=(65536-500)%256;

  TR1=1;

  TR0=1;

  ET0=1;

  ET1=1;

  EA=1;

  ST=1;

  ST=0;

  while(1)

  {

  if((lowflag==1) (highflag==0))

  {

  LED1=0;

  LED2=1;

  }

  else if((highflag==1) (lowflag==0))

  {

  LED1=1;

  LED2=0;

  }

  else

  {

  LED1=1;

  LED2=1;

  }

  }

  }

  void t0(void) interrupt 1 using 0

  {

  CLK=~CLK;

  }

  void t1(void) interrupt 3 using 0

  {

  TH1=(65536-500)/256;

  TL1=(65536-500)%256;

  if(EOC==1)

  {

  OE=1;

  getdata=P0;

  OE=0;

  temp=getdata*25;

  temp=temp/64;

  i=6;

  dispbuf[0]=10;

  dispbuf[1]=10;

  dispbuf[2]=10;

  dispbuf[3]=10;

  dispbuf[4]=10;

  dispbuf[5]=10;

  dispbuf[6]=0;

  dispbuf[7]=0;

  while(temp/10)

  {

  dispbuf[i]=temp%10;

  temp=temp/10;

  i++;

  }

  dispbuf[i]=temp;

  if(getdata77)

  {

  lowflag=1;

  highflag=0;

  }

  else if(getdata>153)

  {

  lowflag=0;

  highflag=1;

  }

  else

  {

  lowflag=0;

  highflag=0;

  }

  ST=1;

  ST=0;

  }

  P1=dispcode[dispbuf[dispcount]];

  P2=dispbitcode[dispcount];

  dispcount++;

  if(dispcount==8)

  {

  dispcount=0;

  }

  if((lowflag==1) (highflag==0))

  {

  cnta++;

  if(cnta==800)

  {

  cnta=0;

  alarmflag=~alarmflag;

  }

  if(alarmflag==1)

  {

  SPK=~SPK;

  }

  }

  else if((lowflag==0) (highflag==1))

  {

  cntb++;

  if(cntb==400)

  {

  cntb=0;

  alarmflag=~alarmflag;

  }

  if(alarmflag==1)

  {

  SPK=~SPK;

  }

  }

  else

  {

  alarmflag=0;

  cnta=0;

  cntb=0;

  }


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉