專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于51單片機的氣泵控制程序

作者:liutaodd   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年10月09日   【字體:
用stc89c52單片機來控制氣泵,帶有2種工作模式,端口可自行修改
#include<reg52.h>
sbit a=P1^5;//閃爍燈
sbit b=P1^4;//氣泵
sbit c=P3^7;//狀態(tài)指示燈
sbit ss1=P3^2;//一分鐘工作模式
sbit ss4=P3^3;//四分鐘工作模式
unsigned int q,w,e,r,y,u,i,n,m,l,h;
csh();//初始化子程序聲明
ys();//延時子程序
ys2();//延時子程序2聲明
void main()
{
csh();//初始化

while(1)  //死循環(huán) 一號 
 {
 if(ss1==0){n=1;}  //判定一分鐘工作模式接通啟動二號循環(huán)
 if(ss1==1){n=0;b=1;}  //判定一分鐘工作模式為啟動斷二號循環(huán)
 if(ss4==0){m=1;}  //判定四分鐘工作模式接通啟動*號循環(huán)
 if(ss4==1){m=0;b=1;}  //判定四分鐘工作模式未啟用斷*號循環(huán)

/*...........以下為一分鐘工作模式...分割線......................*/
  while(n)    //二號循環(huán) 一分鐘工作模式n被賦值1 開始進入循環(huán)體
 {
   if(ss1==0) //判定一分鐘工作模式開啟 執(zhí)行語句
   {
    for(l;l>0;l--); //延時判定
    if(ss4==0){n=0;}//判定四分鐘模式啟用斷開二號循環(huán)體 退出執(zhí)行
    for(q;q>0;q--); //延時判定 q
    if(ss4==1)      //判定四分鐘模式未開啟 向下執(zhí)行
     {
     if(q==0) //判定q減到0
  {
   b=1;   //斷開氣泵
   w=1;   //循環(huán)體2 w為1
   e=1;   //循環(huán)體1 e賦值為1
   }
    while(e)  //三號循環(huán)體
   {
   if(P3==0x7b)    //判定指示燈和一分鐘啟動執(zhí)行下面
    {
 while(w)          //四號循環(huán)體 w為1 初值 
 {
       ys(); //半秒延時 好像不準自己改
  a=0;  //閃爍燈點亮
  r++;//秒數(shù)自加1
  if(ss1==1)  //判定一分鐘工作模式斷開時
  {
        ys2(); //延時判定
  if(ss1==1)     //一分鐘工作模式確實斷開
  {n=0;e=0;w=0;r=0;b=1;}//判定成立退出所有
  }
    ys(); //半秒延時 好像不準自己改
  a=1; //閃爍燈滅
       
 if(r==60) // 等待秒數(shù)加到60執(zhí)行
 {  
   w=0;   //斷開循環(huán)體2
   r=60;  //保持秒數(shù)等于60
   b=0;   //啟動水泵
   h=1;   //五號循環(huán)體()
   while(h)   //五號循環(huán)體
   if(ss1==1)  //判定一分鐘退出向下執(zhí)行
   {    ys2(); //延時判定
   if(ss1==1)  //經過延時確實判定一分鐘工作模式斷開
   {
   b=1;    //斷開氣泵
      n=0;    //退出二號循環(huán)體
   e=0;    //退出四號循環(huán)體
   r=0;    //一分鐘時間歸零
   while(1)
   {
   if(m==0);
   {
   h=0;
   break;
   }    
       //退出五號循環(huán)體 自身
   
      }
   }} } }  }  }  }/*判定*/ }/*二號循環(huán)體*/ }/*一號循環(huán)體*/
/*..................以下為四分鐘工作模式.......我是分割線...........*/
本程序下載地址:http://www.torrancerestoration.com/ziliao/file/qibang.rar
  while(m)    //二號循環(huán) 一分鐘工作模式n被賦值1 開始進入循環(huán)體
 {
   if(ss4==0) //判定四分鐘工作模式開啟 執(zhí)行語句
   {
    for(l;l>0;l--); //延時判定
    if(ss1==0){m=0;}//判定一分鐘模式啟用斷開二號循環(huán)體 退出執(zhí)行
    for(q;q>0;q--); //延時判定 q
    if(ss1==1)      //判定一分鐘模式未開啟 向下執(zhí)行
     {
     if(q==0) //判定q減到0
  {
   b=1;   //斷開氣泵
   w=1;   //循環(huán)體2 w為1
   e=1;   //循環(huán)體1 e賦值為1
   }
    while(e)  //三號循環(huán)體
   {
   if(P3==0x77)    //判定指示燈和四分鐘啟動執(zhí)行下面
    {
 while(w)          //四號循環(huán)體 w為1 初值 
 {
       ys(); //半秒延時 好像不準自己改
  a=0;  //閃爍燈點亮
  r++;//秒數(shù)自加1
  if(ss4==1)  //判定四分鐘工作模式斷開時
  {
        ys2(); //延時判定
  if(ss4==1)     //四分鐘工作模式確實斷開
  {m=0;e=0;w=0;r=0;b=1;}//判定成立退出所有
  }
     ys(); //半秒延時 好像不準自己改
  a=1; //閃爍燈滅
       
 if(r==240) // 等待秒數(shù)加到240執(zhí)行
 {  
   w=0;   //斷開循環(huán)體2
   r=240;  //保持秒數(shù)等于240
   b=0;   //啟動水泵
   h=1;   //五號循環(huán)體()
   while(h)   //五號循環(huán)體
   if(ss4==1)  //判定四分鐘退出向下執(zhí)行
   {    ys2(); //延時判定
   if(ss4==1)  //經過延時確實判定四分鐘工作模式斷開
   {
   b=1;    //斷開氣泵
      n=0;    //退出二號循環(huán)體
   e=0;    //退出四號循環(huán)體
   r=0;    //四分鐘時間歸零
   q=60000;

   
   while(1)
   {
   if(n==0);
   {
   h=0; //退出五號循環(huán)體 
   break; //退出自身循環(huán)
   }    
       
      }
    } }  }  }  }/*判定*/ }/*二號循環(huán)體*/ }/*一號循環(huán)體*/}}}} 

/*.......................初始化子程序........................................*/
csh()//初始化子程序
{
 a=1;  //閃爍燈不閃爍
 b=1;  //氣泵不開啟
 c=0;  //狀態(tài)指示燈點亮
 ss1=1;//一分鐘工作模式未啟動
 ss4=1;//四分鐘工作模式未啟動
 r=0;  //一分鐘60秒數(shù)
 e=0;  //循環(huán)體 e賦值為1
 q=60000; //第一延時判定q初始值
 l=60000; //延時用
 h=0;  //五號循環(huán)體
}
ys()
{
 for(y=23;y>0;y--)
        for(u=152;u>0;u--)
        for(i=70;i>0;i--); //半秒延時 好像不準自己改
}
ys2()
{
 for(y=167;y>0;y--) 
        for(u=171;u>0;u--) 
        for(i=16 ;i>0;i--);
}

關閉窗口

相關文章