基于stc89c52的智能温控风扇

功能:非智能模式下,可以使用按键或手机蓝牙切换风扇的档位。当风扇处于智能模式下,风扇档数仅通过环境温度控制,按键与手机蓝牙不能控制风扇档数。任何模式下都可以通过按键或手机蓝牙切换至另一模式,同时手机还可以获取风扇所处环境当前温度。

实现:

利用定时器0产生pwm方波控制风扇的转速

void Timer0Init()
{
	TMOD|=0X01;//选择为定时器模式,工作方式1,仅用TR0打开启动。
    TH0 = 0xfc;	//配置1ms定时
	TL0 = 0x18;
	TR0 = 1;	
	ET0 = 1;	//打开定时器中断
	EA = 1; 	//打开总中断			
}
void time0(void) interrupt 1
{
	TH0 = 0xfc;	//配置1ms定时
	TL0 = 0x18;
			timer0++;	//timer0开始计数,每1毫秒加一
		   if(timer0>5)  //PWM周期为5毫秒
		{
			timer0=0;
		}
		if(timer0 <speed)	
		{
			PWM=1;
		}
		else
		{
			PWM=0;
		}
}

ds18b20读取一次温度时间太长且任一步骤不能被打断,这使ds18b20读取温度与定时中断产生pwm波不能协调工作,说以将ds18b20读取温度放入定时中断分为多步进行,每中断一次进行一步。

void time0(void) interrupt 1
{
	 switch(step)
	 {
       TH0 = 0xfc;	//配置1ms定时
	   TL0 = 0x18;
	 	 case 0:Ds18b20Init();break;
		 case 1:Ds18b20WriteByte(0xcc);break;
		 cas
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值