首页资源分类嵌入式处理器51内核 > 液体点滴速度监控设计单片机C语言程序

液体点滴速度监控设计单片机C语言程序

已有 445008个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:液体点滴速度监控

    分    享:

    文档简介

    监控程序可直接应用,包含各个模块的控制

    文档预览

    #include  #define DB0_DB7  P0  #define busy  0x80  #define SCANPORT  P1  sbit E=P2^2;  sbit RW=P2^1;  sbit RS=P2^0;  unsigned char uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; //列线扫描电压分为第1,2,3,4根列线 unsigned char key_ctt[4]={0};  unsigned char speed_bcd[4]={0};  unsigned char speed_sc[2];  unsigned char yy=0,temp;  unsigned int speed_ck[4]={0};  unsigned int di_xx[2]={0};  unsigned int ct=0,ttb=0,xx=0,tt3=0,speedct=0,speed=0,speedcd=10,cott=0;   unsigned int time_sq[4]={0};    typedef unsigned char  uchar;  unsigned char code lcd3[]={"0123456789abcdef"};  unsigned char code lcdnow[]={"NOW:000"};  unsigned char code lcdset[]={"SET:000"};   unsigned char CONTROL[8]={0x38,0x18,0x98,0x88,0xC8,0x48,0x68,0x28};  unsigned char codes1[8]={0xb8,0x98,0xd8,0xc8,0xe8,0x68,0x78,0x38};//9,18,36,45,54,63,72,81度顺时针 unsigned char codes2[8]={0xb8,0x98,0xd8,0xc8,0xe8,0x68,0x78,0x38};//9,18,36,45,54,63,72,81 度逆时针  unsigned char counts,pt;  unsigned char uc_KeyTemp=0;  unsigned char uc_ClickCount=0;  unsigned char ucCount;   bit flag=1; //度数,正反转,速度控制 bit a_ac=0;//比较系统标志  bit bleept=0;//报警标准 bit moto=0;//电机标志位 bit a_key=0;  bit b_key=0;  void vKeyProcess(unsigned char ucKeyCode);  void bleep();//报警  void ac();//电机速度比校  void akey();//功能处理  void getspeed();//速度检侧  void stdisplay();//显示  void Delay(unsigned int t);   void delay_50ms(unsigned int t); //延时  void SendCommand(unsigned char ch); //发送命令  void vWriteData(unsigned char ch); //发送数据 }  //==============================================  //==============================================   void int_timer0(void)  {  TMOD=0x10;  TMOD=0x01;  TH0=0x3c;  TL0=0xb0;  ET1=1;  TR1=1;  ET0=1;  TR0=1;  EA=1;  IT1=1;  EX1=1;  }  //==============================================  //==============================================  void Timer1() interrupt 3  {  TH1=0x3c;  TL1=0xb0;  pt++;  if(pt==2)  {  pt=0;  if(flag==0&&moto==1)   P2=(P2&0x0f)|CONTROL[counts];   if(flag==0&&moto==0)  P2=(P2&0x0f)|codes2[counts];  counts++;  if(counts==8)  counts=0;  }  }  //==============================================  //==============================================  void Timer0() interrupt 1  {  TH0=0x3c;  TL0=0xb0;  yy++;  if(yy==2)  {  ct++;  tt3++;  yy=0;  if(ct==600)//60 秒定时   {  ct=0;  xx=0;  }  if(tt3==20)  {  tt3=0;  di_xx[1]=di_xx[0];  di_xx[0]=xx;  if((di_xx[0]==di_xx[1])&&a_ac==1)  {bleept=1;flag=1;}  }  }  }  //==============================================  //==============================================  void Int1()interrupt 2  {  static cott=0;  cott++;  if(cott==2)  {   xx++;  time_sq[2]=time_sq[1];  time_sq[1]=time_sq[0];  time_sq[0]=ct;  if(a_key==0)  {  DisplayOneChar(10,0,lcd3[speed/100]);  DisplayOneChar(11,0,lcd3[speed%100/10]);  DisplayOneChar(10,0,lcd3[speed%10]);  DisplayOneChar(10,0,lcd3[xx/100]);  DisplayOneChar(10,0,lcd3[xx%100/10]);  DisplayOneChar(10,0,lcd3[xx%10]);  SendCommand(0xc4+uc_ClickCount);  getspeed();  cott=0;  }  }  }  //==============================================  //==============================================  void stdisplay()  {  DisplayListChar(0,0,lcdnow);  DisplayListChar(0,1,lcdset);  DisplayListChar(14,0,0x4f);  DisplayListChar(15,0,0x46);  DisplayListChar(8,0, "S:");  DisplayListChar(8,1,"T:");  }   //==============================================  //==============================================  void main()  {  delay_50ms(1);  int_timer0();  InitLcd();  P2_3=1;  SCANPORT=0x0f;  stdisplay();  while(1)  {  bleep();  if(SCANPORT!=0x0f)  {  for(ucCount=0;ucCount<200;ucCount++);  if(SCANPORT!=0x0f)  vKeyProcess(ucKeyScan());  };    switch(temp)  {  case 13:bleept=0;break;//D  case 14:a_ac=1;b_key=1;if(b_key==1){DisplayOneChar(15,1,0x4f);b_key=0;};SendCommand(0xc4+uc_ClickCount);break;//e  case 15:if(a_key==1){speedcd=key_ctt[0]*100+key_ctt[1]*10+key_ctt[2];uc_ClickCount=0;};break;//f  case 10:a_key=1;akey();break;//a  case 12:a_key=0;akey();break;//c  default:break;  }  }  }  //==============================================  //==============================================  void ac()  {  if(speedct>=(speedcd+5))  { moto=0; flag=0; }  else if(speedcd<=(speedcd-5))  { moto=1; flag=0; }  else  flag=1;  }  //==============================================  //==============================================  void bleep()  {  if(a_ac==1)  {  if(bleept==1)  P2_3=0;  if(bleept==0)  P2_3=1;  }  }  //==============================================  //==============================================  void akey()  {  if(a_key==1)  {  SendCommand(0x0c);  DisplayOneChar(14,0,0x4f);  DisplayOneChar(15,0,0x4e);//On  SendCommand(0xc4);  SendCommand(0x0f);  }  if(a_key==0)  {  SendCommand(0x0c);  DisplayOneChar(14,0,0x4f);  DisplayOneChar(15,0,0x46);//Of  }  }  //==============================================  //==============================================  void getspeed()  {  if(a_ac==1)  {   ac();   };  speed=1200/(time_sq[0]-time_sq[2]);  speed_ck[3]=speed_ck[2];  speed_ck[2]=speed_ck[1];  speed_ck[1]=speed_ck[0];  speed_ck[0]=speed;  if((speed_ck[0]!=speed_ck[1]))  {speed_sc[1]=speed_sc[0];  speed_sc[0]=speed_sc[0];  speedct=(speed_sc[0]+speed_sc[1])/2;  }  else  {if((speed_ck[0]==speed_ck[2])&&(speed_ck[1]==speed_ck[3]))  speedct=(speed_ck[0]+speed_ck[1])/2;  if((speed_ck[0]==speed_ck[1])||(speed_ck[0]==speed_ck[2]))  speedct=(speed_ck[1]+speed_ck[2])/2;  if((speed_ck[0]!=speed_ck[1])&&(speed_ck[0]!=speed_ck[2])&&(speed_ck[1]==speed_ck[2]))  speedct=(speed_ck[0]+speed_ck[1])/2;  if((speed_ck[0]!=speed_ck[1])&&(speed_ck[0]!=speed_ck[2])&&(speed_ck[1]!=speed_ck[2]))  speedct=(speed_ck[0]+speed_ck[1] +speed_ck[2]+speed_ck[4] )/4;  }  speed_bcd[2]=speed/100;  speed_bcd[1] =speed%100/10;  speed_bcd[2]=speed%10;  if(a_key==0)  {  DisplayOneChar(4,0,lcd3[speedct/100]);  DisplayOneChar(5,0,lcd3[speedct%100/10]);  DisplayOneChar(6,0,lcd3[speedct%10]);  DisplayOneChar(4,1,lcd3[speedct/100]);  DisplayOneChar(5,1,lcd3[speedct/100]);  DisplayOneChar(6,1,lcd3[speedct/100]);  SendCommand(0xc4+uc_ClickCount);  }} 

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。