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