⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhuankou.c

📁 风扇调速 3档位
💻 C
字号:
/******************************************
*功能实现: 风扇控制系统,三档控速,三种模式
*MARCH 27_DAY 2009_YEAR
******************************************/
#include <reg52.h>
#include<display164.h>
#include<delay.h>
#define uchar unsigned char 
#define uint unsigned int
/************变量和端口******************/
sbit pwm=P0^1;//pwm输出口
sbit fsu=P1^5; //风速键
sbit mshi=P1^6;//模式键
uchar count=0;//风速计数
uint cont=0;//模式计数
uchar speed=0;// 选择风速类型
uchar mode=0;//模式选择类型
bit flag=0;//类型选择标志位,0为风速选择,1为模式选择
/************定时器中断处理***************/
void time0(void) interrupt 1
{
	TH0=0;//0xf1;
	TL0=0;//0xf1;
	count++;
	if(count>=100)
	count=0;
	if(speed==1)//高
	{
		if(count>=80)
		pwm=0;
		else pwm=1;
	}
	if(speed==2)//中
	{
		if(!flag)
		if(count>=50)
		pwm=0;
		else pwm=1;
	}
	if(speed==3)//低
	{
		if(count>=20)
		pwm=0;
		else pwm=1;
	}
	
}
//******************************
void time1(void) interrupt 3
{  
	TH1=0x3c;
	TL1=0xb0;
	cont++;
	if(cont>=400)
	cont=0;
	if(mode==1)//正常状态
	{
		TR1=0;
		speed=2;
		flag=1;
		TR0=1;
	}
	if(mode==2)//自然风状态,5秒转,5秒不转
	{ 
		TR1=1;
		if(cont%200>=100)
		pwm=0;
		else 
		pwm=1;
	}
	if(mode==3)//睡眠状态,10秒转,10不转
	{  
		TR1=1;
		if(cont>=200)
		pwm=0;
		else
		pwm=1;   
	}	
}
/**************器件初始化*****************/
void deviceinit(void)
{
	TMOD=0x12;//设置定时器
	TH0=0xf1;
	TL0=0xf1;
	TH1=0x3c;
	TL1=0xb0;
	
	EA=1;//开中断,启动,pwm初始化
	ET0=1;
	ET1=1;
	TR0=1;
	TR1=1;
	pwm=0;
	P0=0x00;
	P2=0x00;
	P3=0x00;
	IP=0x08;
	
}
/*************按键函数***************/
void keyscan()
{
	if(fsu==0)
	{
		delay_ms(10);
		if(fsu==0)
		{
			while(!fsu);
			if(flag) 
			{
				speed=0;
				flag=0;
			}
			speed++;
			if(speed>3)//停止
			{
				speed=0;
				mode=0;
				TR0=0;
				pwm=0;
			}
			display164f(speed); 
			mode=0;
			display164ms(0);
			TR0=1;
			IP=0x02;
		}	
	 }
	 if(mshi==0)
	 {
	 	delay_ms(10);
		if(mshi==0)
		{
			while(!mshi);
			mode++;
			if(mode>3)	//停止
			{
				TR1=0;
				speed=0;
				mode=0;
				pwm=0;
			}	
			display164ms(mode);
			speed=0;
			display164f(speed);
			TR1=1;
			IP=0x08;
		}
	  }
}            
/**************主函数******************/
void main(void)
{
 	deviceinit();//器件初始化	
 	while(1)
	{	
		keyscan();//键盘控制
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -