新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的兩點間溫度控制

        基于單片機的兩點間溫度控制

        作者: 時間:2011-09-28 來源:網絡 收藏
        5.C語言源程序

        本文引用地址:http://www.104case.com/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;

          }


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 深泽县| 阳高县| 库车县| 华坪县| 壶关县| 遂平县| 买车| 襄汾县| 寿阳县| 镶黄旗| 融水| 白河县| 衡东县| 营山县| 江油市| 青阳县| 石嘴山市| 边坝县| 周宁县| 丰镇市| 长沙县| 孝义市| 淮滨县| 花莲县| 富裕县| 城口县| 闵行区| 潞西市| 洪洞县| 嵊州市| 小金县| 阳城县| 安庆市| 濉溪县| 鄄城县| 孟津县| 肇东市| 霍林郭勒市| 永春县| 乌海市| 富蕴县|