标题:
有关于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