找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2692|回复: 2
收起左侧

有关于ds18b20温度与设定上下限比较后执行后续程序的问题

[复制链接]
ID:262 发表于 2016-3-11 21:07 | 显示全部楼层 |阅读模式
为何设定的上下限和温度的比较语句没作用?下载程序后就只有蜂鸣器响一下和电机一直在转。按键控制电机转速程序也没作用。。。程序如下:

#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;                  //报警停止   
                   }
               }
          }
     }
}
}
回复

使用道具 举报

ID:262 发表于 2016-3-11 21:07 | 显示全部楼层
问题可能在 pwm_set(0x00);     //启动电机
         deal_pwm();         //按键处理pwm函数  ,控制电机转速
这两个函数,把这两贴出来看看


看结构,好多问题,温度的采集自身就需要加虑波,中值法就可以,你上面的那个滤波也要加上,温度检测上下限两个为并列关系,不能那样嵌套,蜂鸣器和电机,要加到定时器中断里用,温度可以一圈采一次,或者放到中断隔一段时间采一次,
回复

使用道具 举报

ID:262 发表于 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);
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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