📄 zhuankou.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 + -