标题: 有关于ds18b20温度与设定上下限比较后执行后续程序的问题 [打印本页]

作者: heicad    时间: 2016-3-11 21:07
标题: 有关于ds18b20温度与设定上下限比较后执行后续程序的问题
为何设定的上下限和温度的比较语句没作用?下载程序后就只有蜂鸣器响一下和电机一直在转。按键控制电机转速程序也没作用。。。程序如下:

#include<stc12c5a60s2.h>
#include"response.h"
#include"fmq.h"
#include"pwm.h"
#include"delay.h"
#include"keyscan.h"
#include"ds18b20a.h"


void Response()       //响应函数
{   
       keyscan_deal();    //温度参数处理
       if(quit_flag==0)      //如果按键不按下则执行如下程序
      {      
           ds18b20_display_a();   //读取rom1温度值并显示
           if(tvalue>=H_temp)
          {
              delay(100);      //滤波作用
              if(tvalue>=H_temp)
             {
                 pwm_set(0x00);     //启动电机
                 didi();          //滴滴响
                 deal_pwm();         //按键处理pwm函数  ,控制电机转速   
                 ds18b20_display_a();      //读取rom1温度值并显示                           
                if(tvalue<=L_temp)
                {
                   delay(100);      //滤波作用
                   if(tvalue<=L_temp)
                   {
                     pwm_set(0xff);           //停止电机
                     buzz=0;                  //报警停止   
                   }
               }
          }
     }
}
}

作者: heicad    时间: 2016-3-11 21:07
问题可能在 pwm_set(0x00);     //启动电机
         deal_pwm();         //按键处理pwm函数  ,控制电机转速
这两个函数,把这两贴出来看看


看结构,好多问题,温度的采集自身就需要加虑波,中值法就可以,你上面的那个滤波也要加上,温度检测上下限两个为并列关系,不能那样嵌套,蜂鸣器和电机,要加到定时器中断里用,温度可以一圈采一次,或者放到中断隔一段时间采一次,
作者: heicad    时间: 2016-3-11 21:08
void deal_pwm()    //按键处理pwm函数
{
     uint t;
         t=KEY_Scan(0);//得到键值
         if(t)
         {
            switch(t)
                {
                   case 4:pwm_change(1,0X1A);break;
                   case 5:pwm_change(0,0X1A);break;
                   default :  break;
                }
         }else delay(10);
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1