找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1580|回复: 4
收起左侧

51单片机水流计控制电磁阀门开关程序问题

[复制链接]
ID:718523 发表于 2020-7-3 16:23 | 显示全部楼层 |阅读模式
下面是我的代码,请问为什么每次出来的水不太一样,就是隔一段时间运行出来的水就不一样了。

昨天晚上测试还是挺好的,今天早上再运行一下流出来的水竟然少了一大半,感觉每次运行的时候脉冲好像并不是40像是随机的特别是隔一段时间后区别更大(我这水龙头漏水一滴一滴的)。请问大神我这代码哪里有问题吗还请指教。
单片机源程序如下:
  1. #include "reg51.h"
  2. #define uint unsigned int
  3. unsigned char i;
  4. void Delay1ms()                //@12.000MHz
  5. {
  6.         unsigned char i, j;

  7.         i = 2;
  8.         j = 239;
  9.         do
  10.         {
  11.                 while (--j);
  12.         } while (--i);
  13. }

  14. void delayms(uint x)//毫秒变量
  15. {
  16.         while(x--)Delay1ms();
  17. }
  18. /*延时函数结束*/
  19. #define pulse 40   //定义脉冲次数
  20. unsigned char number;//@初始化定义脉冲为0
  21. sbit valve=P1^0;  //定义阀门
  22. sbit power=P1^1;

  23. void main(){
  24. valve=1;//@初始化阀门
  25. power=1;//@初始化电平
  26. number=0;
  27.         while(1){
  28.                 if(power==1){
  29.                 outwait=0;
  30.                 }

  31.                 if(power==0){
  32.                 delayms(30);
  33.                         if(power==0){                        
  34.                         outwait=1;                        
  35.                         number=0;//脉冲归零
  36.                         EA=1;
  37.                         IT0=1;
  38.                         EX0=1;                                       
  39.                         valve=0;//开阀               

  40.                         if(number >= pulse){
  41.                         valve=1; //关阀
  42.                         number=0; //脉冲归零
  43.                         i--;                        
  44.                         }

  45.                 }

  46.                         }
  47.                 while(!power); //如果没确认检测到低电平跳出循环                        
  48.                         }
  49.                 }
  50. }


  51. void int0() interrupt 0
  52. {                 
  53.         number++;//脉冲递增
  54. }
复制代码



回复

使用道具 举报

ID:213173 发表于 2020-7-3 21:29 | 显示全部楼层
楼主的脉冲信号来自流量计?   outwait是变量?没有被定义。
回复

使用道具 举报

ID:718523 发表于 2020-7-4 04:33 | 显示全部楼层
现在可以了,是中断开了没有关。现在又有一个问题就是我用电池好好的,换上电脑的电源发现脉冲特别快比用电池快了三倍多。重启一下好像又好了,还有电池不充电正常的一但充电时又是脉冲也不准了又是power也不听使唤了感觉一切都乱了。
回复

使用道具 举报

ID:718523 发表于 2020-7-4 04:34 | 显示全部楼层
wulin 发表于 2020-7-3 21:29
楼主的脉冲信号来自流量计?   outwait是变量?没有被定义。

是来自流量计啊,就是水流传感器。那个我定义过了没发出来。
回复

使用道具 举报

ID:213173 发表于 2020-7-4 06:39 | 显示全部楼层
forest415 发表于 2020-7-4 04:34
是来自流量计啊,就是水流传感器。那个我定义过了没发出来。

主要是硬件工作不稳定,软件也不完善所致。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表